# 设置人声效果 (/zh-CN/realtime-media/rtc/build/audio/voice-changer)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

<_PlatformTabsGroup>
<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="android" platform="android" />
在社交娱乐场景中，为增添场景的趣味性并提升互动体验，通常需要设置人声效果，如语聊美声、歌唱美声、音色变换等。例如，在 KTV 场景中，主播可以使用立体声音效增添自己声音的立体感，快速吸引大量听众。

本文介绍如何在你的项目中实现人声效果。

## 功能介绍 [#功能介绍]

声网提供封装在枚举中的预设人声效果参数，帮助你实现以下人声效果：

- **美声**
   - 语聊美声：在不改变原声辨识度的前提下，根据男女声各自的特点美化说话声。
   - 歌唱美声：在保留歌声原有特点的前提下，根据男女声各自的特点美化歌声。
   - 音色变换：将人声的音色朝特定的方向微调。
- **音效**
   - 曲风音效：在演唱特定风格的歌曲时，使歌声与伴奏更加契合。
   - 空间塑造：通过空间混响效果营造一定的空间氛围，让人声仿佛从特定的场地中传出。
   - 电音音效：通过调整人声的音调使其与伴奏的调式和主音音高完全匹配，从而实现电音效果。
- **变声**
   - 基础变声：保留一定的人声辨识度，使其更加中性、甜美或稳重。
   - 进阶变声：大幅改变人声，实现大叔音、少女音、猪八戒、绿巨人等声音。
- **自定义人声效果**：如果预设效果无法满足你的需求，你可以手动调整人声的音调、均衡和混响效果以自定义人声效果。

## 前提条件 [#前提条件]

项目已经实现了[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 设置音频场景和编码属性 [#设置音频场景和编码属性]

为了获得更好的人声效果，声网推荐你在实现人声效果前先调用以下方法：

- [`setAudioScenario`](/zh-CN/api-reference/rtc/android/audio/audio-basic#setaudioscenario)：将音频场景设置为高音质场景 `AUDIO_SCENARIO_GAME_STREAMING` (3)。
- [`setAudioProfile`[2/2]](/zh-CN/api-reference/rtc/android/audio/audio-basic#setaudioprofile-22)：将音频编码属性设置为高音质编码：
   - 使用单声道传输：设为 `AUDIO_PROFILE_MUSIC_HIGH_QUALITY`
   - 使用立体声传输：设为 `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO`

```java
// 创建 RtcEngine 对象
mRtcEngine = RtcEngine.create(config);
// 设置音频场景
mRtcEngine.setAudioScenario(Constants.AudioScenario.getValue(Constants.AudioScenario.GAME_STREAMING));
// 设置音频编码属性
mRtcEngine.setAudioProfile(Constants.AudioProfile.getValue(Constants.AudioProfile.MUSIC_HIGH_QUALITY_STEREO));
```

## 实现人声效果 [#实现人声效果]

本节介绍如何在你的项目中实现各种人声效果。

### 美声 [#美声]

调用 [`setVoiceBeautifierPreset`](/zh-CN/api-reference/rtc/android/audio/audio-prenpost/audio-effect#api_irtcengine_setvoicebeautifierpreset) 方法，设置曲风音效、空间塑造、电音音效等效果。

- 语聊美声

   ```java
   // 将人声效果设置为磁性（男）
   mRtcEngine.setVoiceBeautifierPreset(Constants.CHAT_BEAUTIFIER_MAGNETIC);
   // 关闭人声效果
   mRtcEngine.setVoiceBeautifierPreset(Constants.VOICE_BEAUTIFIER_OFF);
   ```

- 歌唱美声

   ```java
   // 示例 1：设置男声音效
   // 设置为歌唱美声预设，可美化男声并添加小房间混响效果
   mRtcEngine.setVoiceBeautifierPreset(Constants.SINGING_BEAUTIFIER);
   // 关闭人声效果
   mRtcEngine.setVoiceBeautifierPreset(Constants.VOICE_BEAUTIFIER_OFF);

   // 示例 2：设置女声音效
   // 调用 setVoiceBeautifierParameters 方法，实现美化女声，并添加大厅混响效果
   mRtcEngine.setVoiceBeautifierParameters(Constants.SINGING_BEAUTIFIER, 2, 3);
   // 关闭人声效果
   mRtcEngine.setVoiceBeautifierPreset(Constants.VOICE_BEAUTIFIER_OFF);
   ```

- 音色变换

   ```java
   // 设置音色为浑厚
   mRtcEngine.setVoiceBeautifierPreset(Constants.TIMBRE_TRANSFORMATION_VIGOROUS);
   // 关闭人声效果
   mRtcEngine.setVoiceBeautifierPreset(Constants.VOICE_BEAUTIFIER_OFF);
   ```

### 音效 [#音效]

调用 [`setAudioEffectPreset`](/zh-CN/api-reference/rtc/android/audio/audio-prenpost/audio-effect#api_irtcengine_setaudioeffectpreset) 方法，设置曲风音效、空间塑造、电音音效等效果。

- 曲风音效

   ```java
   // 设置曲风为流行
   mRtcEngine.setAudioEffectPreset(Constants.STYLE_TRANSFORMATION_POPULAR);
   // 关闭人声效果
   mRtcEngine.setAudioEffectPreset(Constants.AUDIO_EFFECT_OFF);
   ```

- 空间塑造

   ```java
   // 设置空间塑造效果为 KTV 中的效果
   mRtcEngine.setAudioEffectPreset(Constants.ROOM_ACOUSTICS_KTV);
   // 关闭人声效果
   mRtcEngine.setAudioEffectPreset(Constants.AUDIO_EFFECT_OFF);
   ```

- 电音音效

   ```java
   // 示例 1：采用预设的音调调整方式实现电音音效
   // 预设以主音音高为 C 的自然大调为基础，修正音频的实际音高
   mRtcEngine.setAudioEffectPreset(Constants.PITCH_CORRECTION);
   // 关闭人声效果
   mRtcEngine.setAudioEffectPreset(Constants.AUDIO_EFFECT_OFF);

   // 示例 2：自行调整基础调式和主音音高实现电音音效
   // 调用 setAudioEffectParameters 调整修音的基础调式为自然小调，主音音高为 D
   mRtcEngine.setAudioEffectParameters(Constants.PITCH_CORRECTION, 2, 6);
   // 关闭人声效果
   mRtcEngine.setAudioEffectPreset(Constants.AUDIO_EFFECT_OFF);
   ```

### 变声 [#变声]

调用 [`setAudioEffectPreset`](/zh-CN/api-reference/rtc/android/audio/audio-prenpost/audio-effect#api_irtcengine_setaudioeffectpreset) 和 [`setVoiceConversionPreset`](/zh-CN/api-reference/rtc/android/audio/audio-prenpost/audio-effect#api_irtcengine_setvoiceconversionpreset) 方法，分别实现基础变声和进阶变声效果。

- 基础变声

   ```java
   // 设置变声效果为更中性化的声音
   mRtcEngine.setVoiceConversionPreset(Constants.VOICE_CHANGER_NEUTRAL);
   // 关闭人声效果
   mRtcEngine.setVoiceConversionPreset(Constants.VOICE_CONVERSION_OFF);
   ```

- 进阶变声

   ```java
   // 设置变声效果为绿巨人的声音
   mRtcEngine.setAudioEffectPreset(Constants.VOICE_CHANGER_EFFECT_HULK);
   // 关闭人声效果
   mRtcEngine.setAudioEffectPreset(Constants.AUDIO_EFFECT_OFF);
   ```

### 自定义人声效果 [#自定义人声效果]

调用 [`setLocalVoicePitch`](/zh-CN/api-reference/rtc/android/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicepitch)、[`setLocalVoiceEqualization`](/zh-CN/api-reference/rtc/android/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoiceequalization) 和 [`setLocalVoiceReverb`](/zh-CN/api-reference/rtc/android/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicereverb)，以调整音调、均衡和混响效果，来自定义人声效果。

以下示例代码展示如何通过手动设置参数值把原始人声变成绿巨人的声音：

```java
double pitch = 0.5;
mRtcEngine.setLocalVoicePitch(pitch);

// 设置本地人声均衡波段的中心频率
// 第 1 个参数为频谱子带索引，取值范围 [0,9]，分别代表 10 个频带，对应的中心频率是 [31,62,125,250,500,1000,2000,4000,8000,16000] Hz
// 第 2 个参数为每个频率区间的增益值，取值范围 [-15,15]，单位 dB, 默认值为 0
mRtcEngine.setLocalVoiceEqualization(Constants.AUDIO_EQUALIZATION_BAND_FREQUENCY.fromInt(0), -15);
mRtcEngine.setLocalVoiceEqualization(Constants.AUDIO_EQUALIZATION_BAND_FREQUENCY.fromInt(1), 3);
mRtcEngine.setLocalVoiceEqualization(Constants.AUDIO_EQUALIZATION_BAND_FREQUENCY.fromInt(2), -9);
mRtcEngine.setLocalVoiceEqualization(Constants.AUDIO_EQUALIZATION_BAND_FREQUENCY.fromInt(3), -8);
mRtcEngine.setLocalVoiceEqualization(Constants.AUDIO_EQUALIZATION_BAND_FREQUENCY.fromInt(4), -6);
mRtcEngine.setLocalVoiceEqualization(Constants.AUDIO_EQUALIZATION_BAND_FREQUENCY.fromInt(5), -4);
mRtcEngine.setLocalVoiceEqualization(Constants.AUDIO_EQUALIZATION_BAND_FREQUENCY.fromInt(6), -3);
mRtcEngine.setLocalVoiceEqualization(Constants.AUDIO_EQUALIZATION_BAND_FREQUENCY.fromInt(7), -2);
mRtcEngine.setLocalVoiceEqualization(Constants.AUDIO_EQUALIZATION_BAND_FREQUENCY.fromInt(8), -1);
mRtcEngine.setLocalVoiceEqualization(Constants.AUDIO_EQUALIZATION_BAND_FREQUENCY.fromInt(9), 1);

// 原始人声强度，即 dry signal，取值范围 [-20,10]，单位为 dB
mRtcEngine.setLocalVoiceReverb(Constants.AUDIO_REVERB_TYPE.fromInt(0), 10);

// 早期反射信号强度，即 wet signal，取值范围 [-20,10]，单位为 dB
mRtcEngine.setLocalVoiceReverb(Constants.AUDIO_REVERB_TYPE.fromInt(1), 7);

// 所需混响效果的房间尺寸，一般房间越大，混响效果越强。 取值范围 [0,100]
mRtcEngine.setLocalVoiceReverb(Constants.AUDIO_REVERB_TYPE.fromInt(2), 6);

// Wet signal 的初始延迟长度，取值范围 [0,200]，单位为 ms
mRtcEngine.setLocalVoiceReverb(Constants.AUDIO_REVERB_TYPE.fromInt(3), 124);

// 混响效果持续的强度，取值范围为 [0,100]，值越大，混响效果越强
mRtcEngine.setLocalVoiceReverb(Constants.AUDIO_REVERB_TYPE.fromInt(4), 78);
```

## 开发注意事项 [#开发注意事项]

- 同一时间只能设置一种人声效果，否则先设置的人声音效会被后设置的覆盖。
- `setVoiceBeautifierPreset`、`setAudioEffectPreset`、`setVoiceConversionPreset` 中的部分枚举适用于不同性别，需要加以区分。如果用于不适用的性别人声，会导致失真。

## 参考信息 [#参考信息]

### 示例项目 [#示例项目]

声网在 Gitee、GitHub 上提供开源的实现人声效果示例项目 VoiceEffects ([Gitee](https://gitee.com/agoraio-community/API-Examples/blob/main/Android/APIExample/app/src/main/java/io/agora/api/example/examples/advanced/VoiceEffects.java), [GitHub](https://github.com/Shengwang-Community/API-Examples/blob/main/Android/APIExample/app/src/main/java/io/agora/api/example/examples/advanced/VoiceEffects.java)) 供你参考，你可以前往下载或查看其中的源代码。

### API 参考 [#api-参考]

#### 设置音频场景和编码属性 [#设置音频场景和编码属性-1]

- [`setAudioScenario`](/zh-CN/api-reference/rtc/android/audio/audio-basic#setaudioscenario)
- [`setAudioProfile`[2/2]](/zh-CN/api-reference/rtc/android/audio/audio-basic#setaudioprofile-22)

#### 预设人声效果 [#预设人声效果]

  - [`setVoiceBeautifierPreset`](/zh-CN/api-reference/rtc/android/audio/audio-prenpost/audio-effect#api_irtcengine_setvoicebeautifierpreset)
  - [`setAudioEffectPreset`](/zh-CN/api-reference/rtc/android/audio/audio-prenpost/audio-effect#api_irtcengine_setaudioeffectpreset)
  - [`setVoiceConversionPreset`](/zh-CN/api-reference/rtc/android/audio/audio-prenpost/audio-effect#api_irtcengine_setvoiceconversionpreset)
  - [`setAudioEffectParameters`](/zh-CN/api-reference/rtc/android/audio/audio-prenpost/audio-effect#api_irtcengine_setaudioeffectparameters)
  - [`setVoiceBeautifierParameters`](/zh-CN/api-reference/rtc/android/audio/audio-prenpost/audio-effect#api_irtcengine_setvoicebeautifierparameters)

#### 自定义人声效果 [#自定义人声效果-1]

- [`setLocalVoicePitch`](/zh-CN/api-reference/rtc/android/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicepitch)
- [`setLocalVoiceEqualization`](/zh-CN/api-reference/rtc/android/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoiceequalization)
- [`setLocalVoiceReverb`](/zh-CN/api-reference/rtc/android/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicereverb)
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="android" platform="ios" />
在社交娱乐场景中，为增添场景的趣味性并提升互动体验，通常需要设置人声效果，如语聊美声、歌唱美声、音色变换等。例如，在 KTV 场景中，主播可以使用立体声音效增添自己声音的立体感，快速吸引大量听众。

本文介绍如何在你的项目中实现人声效果。

## 功能介绍 [#功能介绍-1]

声网提供封装在枚举中的预设人声效果参数，帮助你实现以下人声效果：

- **美声**
   - 语聊美声：在不改变原声辨识度的前提下，根据男女声各自的特点美化说话声。
   - 歌唱美声：在保留歌声原有特点的前提下，根据男女声各自的特点美化歌声。
   - 音色变换：将人声的音色朝特定的方向微调。
- **音效**
   - 曲风音效：在演唱特定风格的歌曲时，使歌声与伴奏更加契合。
   - 空间塑造：通过空间混响效果营造一定的空间氛围，让人声仿佛从特定的场地中传出。
   - 电音音效：通过调整人声的音调使其与伴奏的调式和主音音高完全匹配，从而实现电音效果。
- **变声**
   - 基础变声：保留一定的人声辨识度，使其更加中性、甜美或稳重。
   - 进阶变声：大幅改变人声，实现大叔音、少女音、猪八戒、绿巨人等声音。
- **自定义人声效果**：如果预设效果无法满足你的需求，你可以手动调整人声的音调、均衡和混响效果以自定义人声效果。

## 前提条件 [#前提条件-1]

项目已经实现了[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 设置音频场景和编码属性 [#设置音频场景和编码属性-2]

为了获得更好的人声效果，声网推荐你在实现人声效果前先调用以下方法：

- [`setAudioScenario`](/zh-CN/api-reference/rtc/ios/audio/audio-basic#setaudioscenario)：将音频场景设置为高音质场景 `AgoraAudioScenarioGameStreaming` (3)。
- [`setAudioProfile`[2/2]](/zh-CN/api-reference/rtc/ios/audio/audio-basic#api_irtcengine_setaudioprofile2)：将音频编码属性设置为高音质编码：
   - 使用单声道传输：设为 `AgoraAudioProfileMusicHighQuality`
   - 使用立体声传输：设为 `AgoraAudioProfileMusicHighQualityStereo`

```swift
// 创建 RtcEngine 对象
let agoraKit = AgoraRtcEngineKit.sharedEngine(with: config, delegate: self)
// 设置音频场景
agoraKit.setAudioScenario(.gameStreaming)
// 设置音频编码属性
agoraKit.setAudioProfile(.musicHighQaulityStereo)

```

## 实现人声效果 [#实现人声效果-1]

本节介绍如何在你的项目中实现各种人声效果。

### 美声 [#美声-1]

调用 [`setVoiceBeautifierPreset`](/zh-CN/api-reference/rtc/ios/audio/audio-prenpost/audio-effect#api_irtcengine_setvoicebeautifierpreset) 方法，设置曲风音效、空间塑造、电音音效等效果。

- 语聊美声

   ```swift
   // 将人声效果设置为磁性（男）
   agoraKit.setVoiceBeautifierPreset(.chatBeautifierMagnetic)

   // 关闭人声效果
   agoraKit.setVoiceBeautifierPreset(.voiceBeautifierOff)
   ```

- 歌唱美声

   ```swift
   // 示例 1：设置男声音效
   // 设置为歌唱美声预设，可美化男声并添加小房间混响效果
   agoraKit.setVoiceBeautifierPreset(.singingBeautifier)
   // 关闭人声效果
   agoraKit.setVoiceBeautifierPreset(.voiceBeautifierOff)

   // 示例 2：设置女声音效
   // 调用 setVoiceBeautifierParameters 方法，实现美化女声，并添加大厅混响效果
   agoraKit.setVoiceBeautifierParameters(.singingBeautifier, 2, 3)
   // 关闭人声效果
   agoraKit.setVoiceBeautifierPreset(.voiceBeautifierOff)
   ```

- 音色变换

   ```swift
   // 设置音色为浑厚
   agoraKit.setVoiceBeautifierPreset(.timbreTransformationVigorous)
   // 关闭人声效果
   agoraKit.setVoiceBeautifierPreset(.voiceBeautifierOff)
   ```

### 音效 [#音效-1]

调用 [`setAudioEffectPreset`](/zh-CN/api-reference/rtc/ios/audio/audio-prenpost/audio-effect#api_irtcengine_setaudioeffectpreset) 方法，设置曲风音效、空间塑造、电音音效等效果。

- 曲风音效

   ```swift
   // 设置曲风为流行
   agoraKit.setAudioEffectPreset(.styleTransformationPopular)
   // 关闭人声效果
   agoraKit.setAudioEffectPreset(.audioEffectOff)
   ```

- 空间塑造

   ```swift
   // 设置空间塑造效果为 KTV 中的效果
   agoraKit.setAudioEffectPreset(.roomAcousticKTV)
   // 关闭人声效果
   agoraKit.setAudioEffectPreset(.audioEffectOff)
   ```

- 电音音效

   ```swift
   // 示例 1：采用预设的音调调整方式实现电音音效
   // 预设以主音音高为 C 的自然大调为基础，修正音频的实际音高
   agoraKit.setAudioEffectPreset(.pitchCorrection)
   // 关闭人声效果
   agoraKit.setAudioEffectPreset(.audioEffectOff)

   // 示例 2：自行调整基础调式和主音音高实现电音音效
   // 调用 setAudioEffectParameters 调整修音的基础调式为自然小调，主音音高为 D
   agoraKit.setAudioEffectParameters(.pitchCorrection, 2, 6);
   // 关闭人声效果
   agoraKit.setAudioEffectPreset(.audioEffectOff)
   ```

### 变声 [#变声-1]

调用 [`setAudioEffectPreset`](/zh-CN/api-reference/rtc/ios/audio/audio-prenpost/audio-effect#api_irtcengine_setaudioeffectpreset) 和 [`setVoiceConversionPreset`](/zh-CN/api-reference/rtc/ios/audio/audio-prenpost/audio-effect#api_irtcengine_setvoiceconversionpreset) 方法，分别实现基础变声和进阶变声效果。

- 基础变声

   ```swift
   // 设置变声效果为更中性化的声音
   agoraKit.setVoiceConversionPreset(.voiceChangerNeutral)
   // 关闭人声效果
   agoraKit.setVoiceConversionPreset(.voiceConversionOff)
   ```

- 进阶变声

   ```swift
   // 设置变声效果为绿巨人的声音
   agoraKit.setAudioEffectPreset(.voiceChangerEffectHulk)
   // 关闭人声效果
   agoraKit.setAudioEffectPreset(.audioEffectOff)
   ```

### 自定义人声效果 [#自定义人声效果-2]

调用 [`setLocalVoicePitch`](/zh-CN/api-reference/rtc/ios/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicepitch)、[`setLocalVoiceEqualization`](/zh-CN/api-reference/rtc/ios/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoiceequalization) 和 [`setLocalVoiceReverb`](/zh-CN/api-reference/rtc/ios/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicereverb)，以调整音调、均衡和混响效果，来自定义人声效果。

以下示例代码展示如何通过手动设置参数值把原始人声变成绿巨人的声音：

```swift
agoraKit.setLocalVoicePitch(1)

// 设置本地人声均衡波段的中心频率
// 第 1 个参数为频谱子带索引，取值范围 [0,9]，分别代表 10 个频带，对应的中心频率是 [31,62,125,250,500,1000,2000,4000,8000,16000] Hz
// 第 2 个参数为每个频率区间的增益值，取值范围 [-15,15]，单位 dB, 默认值为 0
agoraKit.setLocalVoiceEqualizationOf(.band31, withGain: 0)
agoraKit.setLocalVoiceEqualizationOf(.band62, withGain: 0)
agoraKit.setLocalVoiceEqualizationOf(.band125, withGain: 0)
agoraKit.setLocalVoiceEqualizationOf(.band250, withGain: 0)
agoraKit.setLocalVoiceEqualizationOf(.band500, withGain: 0)
agoraKit.setLocalVoiceEqualizationOf(.band1K, withGain: 0)
agoraKit.setLocalVoiceEqualizationOf(.band2K, withGain: 0)
agoraKit.setLocalVoiceEqualizationOf(.band4K, withGain: 0)
agoraKit.setLocalVoiceEqualizationOf(.band8K, withGain: 0)
agoraKit.setLocalVoiceEqualizationOf(.band16K, withGain: 0)

// 原始人声强度，即 dry signal，取值范围 [-20,10]，单位为 dB
agoraKit.setLocalVoiceReverbOf(.dryLevel, withValue: -1)

// 早期反射信号强度，即 wet signal，取值范围 [-20,10]，单位为 dB
agoraKit.setLocalVoiceReverbOf(.wetLevel, withValue: -7)

// 所需混响效果的房间尺寸，一般房间越大，混响效果越强。 取值范围 [0,100]
agoraKit.setLocalVoiceReverbOf(.roomSize, withValue: 57)

// Wet signal 的初始延迟长度，取值范围 [0,200]，单位为 ms
agoraKit.setLocalVoiceReverbOf(.wetDelay, withValue: 135)

// 混响效果持续的强度，取值范围为 [0,100]，值越大，混响效果越强
agoraKit.setLocalVoiceReverbOf(.strength, withValue: 45)
```

## 开发注意事项 [#开发注意事项-1]

- 同一时间只能设置一种人声效果，否则先设置的人声音效会被后设置的覆盖。
- `setVoiceBeautifierPreset`、`setAudioEffectPreset`、`setVoiceConversionPreset` 中的部分枚举适用于不同性别，需要加以区分。如果用于不适用的性别人声，会导致失真。

## 参考信息 [#参考信息-1]

### 示例项目 [#示例项目-1]

声网在 Gitee、GitHub 上提供开源的实现人声效果示例项目 VoiceChanger ([Gitee](https://gitee.com/agoraio-community/API-Examples/tree/main/iOS/APIExample/APIExample/Examples/Advanced/VoiceChanger), [GitHub](https://github.com/Shengwang-Community/API-Examples/tree/main/iOS/APIExample/APIExample/Examples/Advanced/VoiceChanger)) 供你参考，你可以前往下载或查看其中的源代码。

### API 参考 [#api-参考-1]

#### 设置音频场景和编码属性 [#设置音频场景和编码属性-3]

- [`setAudioScenario`](/zh-CN/api-reference/rtc/ios/audio/audio-basic#setaudioscenario)
- [`setAudioProfile`[2/2]](/zh-CN/api-reference/rtc/ios/audio/audio-basic#api_irtcengine_setaudioprofile2)

#### 预设人声效果 [#预设人声效果-1]

  - [`setVoiceBeautifierPreset`](/zh-CN/api-reference/rtc/ios/audio/audio-prenpost/audio-effect#api_irtcengine_setvoicebeautifierpreset)
  - [`setAudioEffectPreset`](/zh-CN/api-reference/rtc/ios/audio/audio-prenpost/audio-effect#api_irtcengine_setaudioeffectpreset)
  - [`setVoiceConversionPreset`](/zh-CN/api-reference/rtc/ios/audio/audio-prenpost/audio-effect#api_irtcengine_setvoiceconversionpreset)
  - [`setAudioEffectParameters`](/zh-CN/api-reference/rtc/ios/audio/audio-prenpost/audio-effect#api_irtcengine_setaudioeffectparameters)
  - [`setVoiceBeautifierParameters`](/zh-CN/api-reference/rtc/ios/audio/audio-prenpost/audio-effect#api_irtcengine_setvoicebeautifierparameters)

#### 自定义人声效果 [#自定义人声效果-3]

- [`setLocalVoicePitch`](/zh-CN/api-reference/rtc/ios/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicepitch)
- [`setLocalVoiceEqualization`](/zh-CN/api-reference/rtc/ios/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoiceequalization)
- [`setLocalVoiceReverb`](/zh-CN/api-reference/rtc/ios/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicereverb)
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="android" platform="macos" />
在社交娱乐场景中，为增添场景的趣味性并提升互动体验，通常需要设置人声效果，如语聊美声、歌唱美声、音色变换等。例如，在 KTV 场景中，主播可以使用立体声音效增添自己声音的立体感，快速吸引大量听众。

本文介绍如何在你的项目中实现人声效果。

## 功能介绍 [#功能介绍-2]

声网提供封装在枚举中的预设人声效果参数，帮助你实现以下人声效果：

- **美声**
   - 语聊美声：在不改变原声辨识度的前提下，根据男女声各自的特点美化说话声。
   - 歌唱美声：在保留歌声原有特点的前提下，根据男女声各自的特点美化歌声。
   - 音色变换：将人声的音色朝特定的方向微调。
- **音效**
   - 曲风音效：在演唱特定风格的歌曲时，使歌声与伴奏更加契合。
   - 空间塑造：通过空间混响效果营造一定的空间氛围，让人声仿佛从特定的场地中传出。
   - 电音音效：通过调整人声的音调使其与伴奏的调式和主音音高完全匹配，从而实现电音效果。
- **变声**
   - 基础变声：保留一定的人声辨识度，使其更加中性、甜美或稳重。
   - 进阶变声：大幅改变人声，实现大叔音、少女音、猪八戒、绿巨人等声音。
- **自定义人声效果**：如果预设效果无法满足你的需求，你可以手动调整人声的音调、均衡和混响效果以自定义人声效果。

## 前提条件 [#前提条件-2]

项目已经实现了[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 设置音频场景和编码属性 [#设置音频场景和编码属性-4]

为了获得更好的人声效果，声网推荐你在实现人声效果前先调用以下方法：

- [`setAudioScenario`](/zh-CN/api-reference/rtc/macos/audio/audio-basic#setaudioscenario)：将音频场景设置为高音质场景 `AgoraAudioScenarioGameStreaming` (3)。
- [`setAudioProfile`[2/2]](/zh-CN/api-reference/rtc/macos/audio/audio-basic#api_irtcengine_setaudioprofile2)：将音频编码属性设置为高音质编码：
   - 使用单声道传输：设为 `AgoraAudioProfileMusicHighQuality`
   - 使用立体声传输：设为 `AgoraAudioProfileMusicHighQualityStereo`

```swift
// 创建 RtcEngine 对象
let agoraKit = AgoraRtcEngineKit.sharedEngine(with: config, delegate: self)
// 设置音频场景
agoraKit.setAudioScenario(.gameStreaming)
// 设置音频编码属性
agoraKit.setAudioProfile(.musicHighQaulityStereo)

```

## 实现人声效果 [#实现人声效果-2]

本节介绍如何在你的项目中实现各种人声效果。

### 美声 [#美声-2]

调用 [`setVoiceBeautifierPreset`](/zh-CN/api-reference/rtc/macos/audio/audio-prenpost/audio-effect#api_irtcengine_setvoicebeautifierpreset) 方法，设置曲风音效、空间塑造、电音音效等效果。

- 语聊美声

   ```swift
   // 将人声效果设置为磁性（男）
   agoraKit.setVoiceBeautifierPreset(.chatBeautifierMagnetic)

   // 关闭人声效果
   agoraKit.setVoiceBeautifierPreset(.voiceBeautifierOff)
   ```

- 歌唱美声

   ```swift
   // 示例 1：设置男声音效
   // 设置为歌唱美声预设，可美化男声并添加小房间混响效果
   agoraKit.setVoiceBeautifierPreset(.singingBeautifier)
   // 关闭人声效果
   agoraKit.setVoiceBeautifierPreset(.voiceBeautifierOff)

   // 示例 2：设置女声音效
   // 调用 setVoiceBeautifierParameters 方法，实现美化女声，并添加大厅混响效果
   agoraKit.setVoiceBeautifierParameters(.singingBeautifier, 2, 3)
   // 关闭人声效果
   agoraKit.setVoiceBeautifierPreset(.voiceBeautifierOff)
   ```

- 音色变换

   ```swift
   // 设置音色为浑厚
   agoraKit.setVoiceBeautifierPreset(.timbreTransformationVigorous)
   // 关闭人声效果
   agoraKit.setVoiceBeautifierPreset(.voiceBeautifierOff)
   ```

### 音效 [#音效-2]

调用 [`setAudioEffectPreset`](/zh-CN/api-reference/rtc/macos/audio/audio-prenpost/audio-effect#api_irtcengine_setaudioeffectpreset) 方法，设置曲风音效、空间塑造、电音音效等效果。

- 曲风音效

   ```swift
   // 设置曲风为流行
   agoraKit.setAudioEffectPreset(.styleTransformationPopular)
   // 关闭人声效果
   agoraKit.setAudioEffectPreset(.audioEffectOff)
   ```

- 空间塑造

   ```swift
   // 设置空间塑造效果为 KTV 中的效果
   agoraKit.setAudioEffectPreset(.roomAcousticKTV)
   // 关闭人声效果
   agoraKit.setAudioEffectPreset(.audioEffectOff)
   ```

- 电音音效

   ```swift
   // 示例 1：采用预设的音调调整方式实现电音音效
   // 预设以主音音高为 C 的自然大调为基础，修正音频的实际音高
   agoraKit.setAudioEffectPreset(.pitchCorrection)
   // 关闭人声效果
   agoraKit.setAudioEffectPreset(.audioEffectOff)

   // 示例 2：自行调整基础调式和主音音高实现电音音效
   // 调用 setAudioEffectParameters 调整修音的基础调式为自然小调，主音音高为 D
   agoraKit.setAudioEffectParameters(.pitchCorrection, 2, 6);
   // 关闭人声效果
   agoraKit.setAudioEffectPreset(.audioEffectOff)
   ```

### 变声 [#变声-2]

调用 [`setAudioEffectPreset`](/zh-CN/api-reference/rtc/macos/audio/audio-prenpost/audio-effect#api_irtcengine_setaudioeffectpreset) 和 [`setVoiceConversionPreset`](/zh-CN/api-reference/rtc/macos/audio/audio-prenpost/audio-effect#api_irtcengine_setvoiceconversionpreset) 方法，分别实现基础变声和进阶变声效果。

- 基础变声

   ```swift
   // 设置变声效果为更中性化的声音
   agoraKit.setVoiceConversionPreset(.voiceChangerNeutral)
   // 关闭人声效果
   agoraKit.setVoiceConversionPreset(.voiceConversionOff)
   ```

- 进阶变声

   ```swift
   // 设置变声效果为绿巨人的声音
   agoraKit.setAudioEffectPreset(.voiceChangerEffectHulk)
   // 关闭人声效果
   agoraKit.setAudioEffectPreset(.audioEffectOff)
   ```

### 自定义人声效果 [#自定义人声效果-4]

调用 [`setLocalVoicePitch`](/zh-CN/api-reference/rtc/macos/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicepitch)、[`setLocalVoiceEqualization`](/zh-CN/api-reference/rtc/macos/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoiceequalization) 和 [`setLocalVoiceReverb`](/zh-CN/api-reference/rtc/macos/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicereverb)，以调整音调、均衡和混响效果，来自定义人声效果。

以下示例代码展示如何通过手动设置参数值把原始人声变成绿巨人的声音：

```swift
agoraKit.setLocalVoicePitch(1)

// 设置本地人声均衡波段的中心频率
// 第 1 个参数为频谱子带索引，取值范围 [0,9]，分别代表 10 个频带，对应的中心频率是 [31,62,125,250,500,1000,2000,4000,8000,16000] Hz
// 第 2 个参数为每个频率区间的增益值，取值范围 [-15,15]，单位 dB, 默认值为 0
agoraKit.setLocalVoiceEqualizationOf(.band31, withGain: 0)
agoraKit.setLocalVoiceEqualizationOf(.band62, withGain: 0)
agoraKit.setLocalVoiceEqualizationOf(.band125, withGain: 0)
agoraKit.setLocalVoiceEqualizationOf(.band250, withGain: 0)
agoraKit.setLocalVoiceEqualizationOf(.band500, withGain: 0)
agoraKit.setLocalVoiceEqualizationOf(.band1K, withGain: 0)
agoraKit.setLocalVoiceEqualizationOf(.band2K, withGain: 0)
agoraKit.setLocalVoiceEqualizationOf(.band4K, withGain: 0)
agoraKit.setLocalVoiceEqualizationOf(.band8K, withGain: 0)
agoraKit.setLocalVoiceEqualizationOf(.band16K, withGain: 0)

// 原始人声强度，即 dry signal，取值范围 [-20,10]，单位为 dB
agoraKit.setLocalVoiceReverbOf(.dryLevel, withValue: -1)

// 早期反射信号强度，即 wet signal，取值范围 [-20,10]，单位为 dB
agoraKit.setLocalVoiceReverbOf(.wetLevel, withValue: -7)

// 所需混响效果的房间尺寸，一般房间越大，混响效果越强。 取值范围 [0,100]
agoraKit.setLocalVoiceReverbOf(.roomSize, withValue: 57)

// Wet signal 的初始延迟长度，取值范围 [0,200]，单位为 ms
agoraKit.setLocalVoiceReverbOf(.wetDelay, withValue: 135)

// 混响效果持续的强度，取值范围为 [0,100]，值越大，混响效果越强
agoraKit.setLocalVoiceReverbOf(.strength, withValue: 45)
```

## 开发注意事项 [#开发注意事项-2]

- 同一时间只能设置一种人声效果，否则先设置的人声音效会被后设置的覆盖。
- `setVoiceBeautifierPreset`、`setAudioEffectPreset`、`setVoiceConversionPreset` 中的部分枚举适用于不同性别，需要加以区分。如果用于不适用的性别人声，会导致失真。

## 参考信息 [#参考信息-2]

### 示例项目 [#示例项目-2]

声网在 Gitee、GitHub 上提供开源的实现人声效果示例项目 VoiceChanger ([Gitee](https://gitee.com/agoraio-community/API-Examples/tree/main/macOS/APIExample/Examples/Advanced/VoiceChanger), [GitHub](https://github.com/Shengwang-Community/API-Examples/tree/main/macOS/APIExample/Examples/Advanced/VoiceChanger)) 供你参考，你可以前往下载或查看其中的源代码。

### API 参考 [#api-参考-2]

#### 设置音频场景和编码属性 [#设置音频场景和编码属性-5]

- [`setAudioScenario`](/zh-CN/api-reference/rtc/macos/audio/audio-basic#setaudioscenario)
- [`setAudioProfile`[2/2]](/zh-CN/api-reference/rtc/macos/audio/audio-basic#api_irtcengine_setaudioprofile2)

#### 预设人声效果 [#预设人声效果-2]

  - [`setVoiceBeautifierPreset`](/zh-CN/api-reference/rtc/macos/audio/audio-prenpost/audio-effect#api_irtcengine_setvoicebeautifierpreset)
  - [`setAudioEffectPreset`](/zh-CN/api-reference/rtc/macos/audio/audio-prenpost/audio-effect#api_irtcengine_setaudioeffectpreset)
  - [`setVoiceConversionPreset`](/zh-CN/api-reference/rtc/macos/audio/audio-prenpost/audio-effect#api_irtcengine_setvoiceconversionpreset)
  - [`setAudioEffectParameters`](/zh-CN/api-reference/rtc/macos/audio/audio-prenpost/audio-effect#api_irtcengine_setaudioeffectparameters)
  - [`setVoiceBeautifierParameters`](/zh-CN/api-reference/rtc/macos/audio/audio-prenpost/audio-effect#api_irtcengine_setvoicebeautifierparameters)

#### 自定义人声效果 [#自定义人声效果-5]

- [`setLocalVoicePitch`](/zh-CN/api-reference/rtc/macos/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicepitch)
- [`setLocalVoiceEqualization`](/zh-CN/api-reference/rtc/macos/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoiceequalization)
- [`setLocalVoiceReverb`](/zh-CN/api-reference/rtc/macos/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicereverb)
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="android" platform="windows" />
在社交娱乐场景中，为增添场景的趣味性并提升互动体验，通常需要设置人声效果，如语聊美声、歌唱美声、音色变换等。例如，在 KTV 场景中，主播可以使用立体声音效增添自己声音的立体感，快速吸引大量听众。

本文介绍如何在你的项目中实现人声效果。

## 功能介绍 [#功能介绍-3]

声网提供封装在枚举中的预设人声效果参数，帮助你实现以下人声效果：

- **美声**
   - 语聊美声：在不改变原声辨识度的前提下，根据男女声各自的特点美化说话声。
   - 歌唱美声：在保留歌声原有特点的前提下，根据男女声各自的特点美化歌声。
   - 音色变换：将人声的音色朝特定的方向微调。
- **音效**
   - 曲风音效：在演唱特定风格的歌曲时，使歌声与伴奏更加契合。
   - 空间塑造：通过空间混响效果营造一定的空间氛围，让人声仿佛从特定的场地中传出。
   - 电音音效：通过调整人声的音调使其与伴奏的调式和主音音高完全匹配，从而实现电音效果。
- **变声**
   - 基础变声：保留一定的人声辨识度，使其更加中性、甜美或稳重。
   - 进阶变声：大幅改变人声，实现大叔音、少女音、猪八戒、绿巨人等声音。
- **自定义人声效果**：如果预设效果无法满足你的需求，你可以手动调整人声的音调、均衡和混响效果以自定义人声效果。

## 前提条件 [#前提条件-3]

项目已经实现了[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 设置音频场景和编码属性 [#设置音频场景和编码属性-6]

为了获得更好的人声效果，声网推荐你在实现人声效果前先调用以下方法：

- [`setAudioScenario`](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#setaudioscenario)：将音频场景设置为高音质场景 `AUDIO_SCENARIO_GAME_STREAMING` (3)。
- [`setAudioProfile`[2/2]](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#setaudioprofile-22)：将音频编码属性设置为高音质编码：
   - 使用单声道传输：设为 `AUDIO_PROFILE_MUSIC_HIGH_QUALITY`
   - 使用立体声传输：设为 `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO`

```cpp
// 创建 RtcEngine 对象
m_rtcEngine = createAgoraRtcEngine();
// 设置音频场景
 m_rtcEngine->setAudioScenario(AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO);
// 设置音频编码属性
 m_rtcEngine->setAudioProfile(AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO);
```

## 实现人声效果 [#实现人声效果-3]

本节介绍如何在你的项目中实现各种人声效果。

### 美声 [#美声-3]

调用 [`setVoiceBeautifierPreset`](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-prenpost/audio-effect#api_irtcengine_setvoicebeautifierpreset) 方法，设置曲风音效、空间塑造、电音音效等效果。

- 语聊美声

   ```cpp
   // 将人声效果设置为磁性（男）
   m_rtcEngine->setVoiceBeautifierPreset(CHAT_BEAUTIFIER_MAGNETIC);
   // 关闭人声效果
   m_rtcEngine->setVoiceBeautifierPreset(VOICE_BEAUTIFIER_OFF);
   ```

- 歌唱美声

   ```cpp
   // 示例 1：设置男声音效
   // 设置为歌唱美声预设，可美化男声并添加小房间混响效果
   m_rtcEngine->setVoiceBeautifierPreset(SINGING_BEAUTIFIER);
   // 关闭人声效果
   m_rtcEngine->setVoiceBeautifierPreset(VOICE_BEAUTIFIER_OFF);

   // 示例 2：设置女声音效
   // 调用 setVoiceBeautifierParameters 方法，实现美化女声，并添加大厅混响效果
   m_rtcEngine->setVoiceBeautifierParameters(SINGING_BEAUTIFIER, 2, 3);
   // 关闭人声效果
   m_rtcEngine->setVoiceBeautifierPreset(VOICE_BEAUTIFIER_OFF);
   ```

- 音色变换

   ```cpp
   // 设置音色为浑厚
   m_rtcEngine->setVoiceBeautifierPreset(TIMBRE_TRANSFORMATION_VIGOROUS);
   // 关闭人声效果
   m_rtcEngine->setVoiceBeautifierPreset(VOICE_BEAUTIFIER_OFF);
   ```

### 音效 [#音效-3]

调用 [`setAudioEffectPreset`](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-prenpost/audio-effect#api_irtcengine_setaudioeffectpreset) 方法，设置曲风音效、空间塑造、电音音效等效果。

- 曲风音效

   ```cpp
   // 设置曲风为流行
   m_rtcEngine->setAudioEffectPreset(STYLE_TRANSFORMATION_POPULAR);
   // 关闭人声效果
   m_rtcEngine->setAudioEffectPreset(AUDIO_EFFECT_OFF);
   ```

- 空间塑造

   ```cpp
   // 设置空间塑造效果为 KTV 中的效果
   m_rtcEngine->setAudioEffectPreset(ROOM_ACOUSTICS_KTV);
   // 关闭人声效果
   m_rtcEngine->setAudioEffectPreset(AUDIO_EFFECT_OFF);
   ```

- 电音音效

   ```cpp
   // 示例 1：采用预设的音调调整方式实现电音音效
   // 预设以主音音高为 C 的自然大调为基础，修正音频的实际音高
   m_rtcEngine->setAudioEffectPreset(PITCH_CORRECTION);
   // 关闭人声效果
   m_rtcEngine->setAudioEffectPreset(AUDIO_EFFECT_OFF);

   // 示例 2：自行调整基础调式和主音音高实现电音音效
   // 调用 setAudioEffectParameters 调整修音的基础调式为自然小调，主音音高为 D
   m_rtcEngine->setAudioEffectParameters(PITCH_CORRECTION, 2, 6);
   // 关闭人声效果
   m_rtcEngine->setAudioEffectPreset(AUDIO_EFFECT_OFF);
   ```

### 变声 [#变声-3]

调用 [`setAudioEffectPreset`](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-prenpost/audio-effect#api_irtcengine_setaudioeffectpreset) 和 [`setVoiceConversionPreset`](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-prenpost/audio-effect#api_irtcengine_setvoiceconversionpreset) 方法，分别实现基础变声和进阶变声效果。

- 基础变声

   ```cpp
   // 设置变声效果为更中性化的声音
   m_rtcEngine->setVoiceConversionPreset(VOICE_CHANGER_NEUTRAL);
   // 关闭人声效果
   m_rtcEngine->setVoiceConversionPreset(VOICE_CONVERSION_OFF);
   ```

- 进阶变声

      ```cpp
   // 设置变声效果为绿巨人的声音
      m_rtcEngine->setAudioEffectPreset(VOICE_CHANGER_EFFECT_HULK);
      // 关闭人声效果
      m_rtcEngine->setAudioEffectPreset(AUDIO_EFFECT_OFF);
      ```

### 自定义人声效果 [#自定义人声效果-6]

调用 [`setLocalVoicePitch`](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicepitch)、[`setLocalVoiceEqualization`](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoiceequalization) 和 [`setLocalVoiceReverb`](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicereverb)，以调整音调、均衡和混响效果，来自定义人声效果。

以下示例代码展示如何通过手动设置参数值把原始人声变成绿巨人的声音：

```cpp
m_rtcEngine->setLocalVoicePitch(0.5);

// 设置本地人声均衡波段的中心频率
// 第 1 个参数为频谱子带索引，取值范围 [0,9]，分别代表 10 个频带，对应的中心频率是 [31,62,125,250,500,1000,2000,4000,8000,16000] Hz
// 第 2 个参数为每个频率区间的增益值，取值范围 [-15,15]，单位 dB, 默认值为 0
m_rtcEngine->setLocalVoiceEqualization(AUDIO_EQUALIZATION_BAND_31, -15);
m_rtcEngine->setLocalVoiceEqualization(AUDIO_EQUALIZATION_BAND_62, 3);
m_rtcEngine->setLocalVoiceEqualization(AUDIO_EQUALIZATION_BAND_125, -9);
m_rtcEngine->setLocalVoiceEqualization(AUDIO_EQUALIZATION_BAND_250, -8);
m_rtcEngine->setLocalVoiceEqualization(AUDIO_EQUALIZATION_BAND_500, -6);
m_rtcEngine->setLocalVoiceEqualization(AUDIO_EQUALIZATION_BAND_1K, -4);
m_rtcEngine->setLocalVoiceEqualization(AUDIO_EQUALIZATION_BAND_2K, -3);
m_rtcEngine->setLocalVoiceEqualization(AUDIO_EQUALIZATION_BAND_4K, -2);
m_rtcEngine->setLocalVoiceEqualization(AUDIO_EQUALIZATION_BAND_8K, -1);
m_rtcEngine->setLocalVoiceEqualization(AUDIO_EQUALIZATION_BAND_16K, 1);

// 原始人声强度，即 dry signal，取值范围 [-20,10]，单位为 dB
m_rtcEngine->setLocalVoiceReverb(AUDIO_REVERB_DRY_LEVEL, 10);

// 早期反射信号强度，即 wet signal，取值范围 [-20,10]，单位为 dB
m_rtcEngine->setLocalVoiceReverb(AUDIO_REVERB_WET_LEVEL, 7);

// 所需混响效果的房间尺寸，一般房间越大，混响效果越强。 取值范围 [0,100]
m_rtcEngine->setLocalVoiceReverb(AUDIO_REVERB_ROOM_SIZE, 6);

// Wet signal 的初始延迟长度，取值范围 [0,200]，单位为 ms
m_rtcEngine->setLocalVoiceReverb(AUDIO_REVERB_WET_DELAY, 124);

// 混响效果持续的强度，取值范围为 [0,100]，值越大，混响效果越强
m_rtcEngine->setLocalVoiceReverb(AUDIO_REVERB_STRENGTH, 78);
```

## 开发注意事项 [#开发注意事项-3]

- 同一时间只能设置一种人声效果，否则先设置的人声音效会被后设置的覆盖。
- `setVoiceBeautifierPreset`、`setAudioEffectPreset`、`setVoiceConversionPreset` 中的部分枚举适用于不同性别，需要加以区分。如果用于不适用的性别人声，会导致失真。

## 参考信息 [#参考信息-3]

### 示例项目 [#示例项目-3]

声网在 Gitee、GitHub 上提供开源的实现人声效果示例项目 VoiceEffects ([Gitee](https://gitee.com/agoraio-community/API-Examples/tree/main/windows/APIExample/APIExample/Advanced/BeautyAudio), [GitHub](https://github.com/Shengwang-Community/API-Examples/tree/main/windows/APIExample/APIExample/Advanced/BeautyAudio)) 供你参考，你可以前往下载或查看其中的源代码。

### API 参考 [#api-参考-3]

#### 设置音频场景和编码属性 [#设置音频场景和编码属性-7]

- [`setAudioScenario`](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#setaudioscenario)
- [`setAudioProfile`[2/2]](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#setaudioprofile-22)

#### 预设人声效果 [#预设人声效果-3]

  - [`setVoiceBeautifierPreset`](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-prenpost/audio-effect#api_irtcengine_setvoicebeautifierpreset)
  - [`setAudioEffectPreset`](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-prenpost/audio-effect#api_irtcengine_setaudioeffectpreset)
  - [`setVoiceConversionPreset`](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-prenpost/audio-effect#api_irtcengine_setvoiceconversionpreset)
  - [`setAudioEffectParameters`](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-prenpost/audio-effect#api_irtcengine_setaudioeffectparameters)
  - [`setVoiceBeautifierParameters`](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-prenpost/audio-effect#api_irtcengine_setvoicebeautifierparameters)

#### 自定义人声效果 [#自定义人声效果-7]

- [`setLocalVoicePitch`](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicepitch)
- [`setLocalVoiceEqualization`](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoiceequalization)
- [`setLocalVoiceReverb`](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicereverb)
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="android" platform="electron" />
在社交娱乐场景中，为增添场景的趣味性并提升互动体验，通常需要设置人声效果，如语聊美声、歌唱美声、音色变换等。例如，在 KTV 场景中，主播可以使用立体声音效增添自己声音的立体感，快速吸引大量听众。

本文介绍如何在你的项目中实现人声效果。

## 功能介绍 [#功能介绍-4]

声网提供封装在枚举中的预设人声效果参数，帮助你实现以下人声效果：

- **美声**
   - 语聊美声：在不改变原声辨识度的前提下，根据男女声各自的特点美化说话声。
   - 歌唱美声：在保留歌声原有特点的前提下，根据男女声各自的特点美化歌声。
   - 音色变换：将人声的音色朝特定的方向微调。
- **音效**
   - 曲风音效：在演唱特定风格的歌曲时，使歌声与伴奏更加契合。
   - 空间塑造：通过空间混响效果营造一定的空间氛围，让人声仿佛从特定的场地中传出。
   - 电音音效：通过调整人声的音调使其与伴奏的调式和主音音高完全匹配，从而实现电音效果。
- **变声**
   - 基础变声：保留一定的人声辨识度，使其更加中性、甜美或稳重。
   - 进阶变声：大幅改变人声，实现大叔音、少女音、猪八戒、绿巨人等声音。
- **自定义人声效果**：如果预设效果无法满足你的需求，你可以手动调整人声的音调、均衡和混响效果以自定义人声效果。

## 前提条件 [#前提条件-4]

项目已经实现了[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 设置音频场景和编码属性 [#设置音频场景和编码属性-8]

为了获得更好的人声效果，声网推荐你在实现人声效果前先调用以下方法：

- 调用 [`setAudioScenario`](/zh-CN/api-reference/rtc/electron/audio/audio-basic#setaudioscenario) 将音频场景设置为高音质场景 `AudioScenarioGameStreaming` (3)。
- 调用 [`setAudioProfile`](/zh-CN/api-reference/rtc/electron/audio/audio-basic#setaudioprofile) 将音频编码属性设置为高音质编码，其中：
   - 使用单声道传输设为 `AudioProfileMusicHighQuality`
   - 使用立体声传输设为 `AudioProfileMusicHighQualityStereo`

```javascript
// 创建 RtcEngine 对象
rtcEngine = createAgoraRtcEngine();
// 设置音频场景
rtcEngine.setAudioScenario(AudioScenarioType.AudioScenarioGameStreaming);
// 设置音频编码属性
rtcEngine.setAudioProfile(AudioProfileType.AudioProfileMusicHighQualityStereo);
```

## 实现人声效果 [#实现人声效果-4]

本节介绍如何在你的项目中实现各种人声效果。

### 美声 [#美声-4]

调用 [`setVoiceBeautifierPreset`](/zh-CN/api-reference/rtc/electron/audio/audio-prenpost/audio-effect#api_irtcengine_setvoicebeautifierpreset) 方法，设置曲风音效、空间塑造、电音音效等效果。

- 语聊美声

   ```javascript
   // 将人声效果设置为磁性（男）
   rtcEngine.setVoiceBeautifierPreset(VoiceBeautifierPreset.ChatBeautifierMagnetic);
   // 关闭人声效果
   rtcEngine.setVoiceBeautifierPreset(VoiceBeautifierPreset.VoiceBeautifierOff);
   ```

- 歌唱美声

   ```javascript
   // 示例 1：设置男声音效
   // 设置为歌唱美声预设，可美化男声并添加小房间混响效果
   rtcEngine.setVoiceBeautifierPreset(VoiceBeautifierPreset.SingingBeautifier);
   // 关闭人声效果
   rtcEngine.setVoiceBeautifierPreset(VoiceBeautifierPreset.VoiceBeautifierOff);

   // 示例 2：设置女声音效
   // 调用 setVoiceBeautifierParameters 方法，实现美化女声，并添加大厅混响效果
   rtcEngine.setVoiceBeautifierParameters(VoiceBeautifierPreset.SingingBeautifier, 2, 3);
   // 关闭人声效果
   rtcEngine.setVoiceBeautifierPreset(VoiceBeautifierPreset.VoiceBeautifierOff);
   ```

- 音色变换

   ```javascript
   // 设置音色为浑厚
   rtcEngine.setVoiceBeautifierPreset(VoiceBeautifierPreset.TimbreTransformationVigorous);
   // 关闭人声效果
   rtcEngine.setVoiceBeautifierPreset(VoiceBeautifierPreset.VoiceBeautifierOff);
   ```

### 音效 [#音效-4]

调用 [`setAudioEffectPreset`](/zh-CN/api-reference/rtc/electron/audio/audio-prenpost/audio-effect#api_irtcengine_setaudioeffectpreset) 方法，设置曲风音效、空间塑造、电音音效等效果。

- 曲风音效

   ```javascript
   // 设置曲风为流行
   rtcEngine.setAudioEffectPreset(AudioEffectPreset.StyleTransformationPopular);
   // 关闭人声效果
   rtcEngine.setAudioEffectPreset(AudioEffectPreset.AudioEffectOff);
   ```

- 空间塑造

   ```javascript
   // 设置空间塑造效果为 KTV 中的效果
   rtcEngine.setAudioEffectPreset(AudioEffectPreset.RoomAcousticsKtv);
   // 关闭人声效果
   rtcEngine.setAudioEffectPreset(AudioEffectPreset.AudioEffectOff);
   ```

- 电音音效

   ```javascript
   // 示例 1：采用预设的音调调整方式实现电音音效
   // 预设以主音音高为 C 的自然大调为基础，修正音频的实际音高
   rtcEngine.setAudioEffectPreset(AudioEffectPreset.PitchCorrection);
   // 关闭人声效果
   rtcEngine.setAudioEffectPreset(AudioEffectPreset.AudioEffectOff);

   // 示例 2：自行调整基础调式和主音音高实现电音音效
   // 调用 setAudioEffectParameters 调整修音的基础调式为自然小调，主音音高为 D
   rtcEngine.setAudioEffectParameters(AudioEffectPreset.PitchCorrection, 2, 6);
   // 关闭人声效果
   rtcEngine.setAudioEffectPreset(AudioEffectPreset.AudioEffectOff);
   ```

### 变声 [#变声-4]

调用 [`setAudioEffectPreset`](/zh-CN/api-reference/rtc/electron/audio/audio-prenpost/audio-effect#api_irtcengine_setaudioeffectpreset) 和 [`setVoiceConversionPreset`](/zh-CN/api-reference/rtc/electron/audio/audio-prenpost/audio-effect#api_irtcengine_setvoiceconversionpreset) 方法，分别实现基础变声和进阶变声效果。

- 基础变声

   ```javascript
   // 设置变声效果为更中性化的声音
   rtcEngine.setVoiceConversionPreset(VoiceConversionPreset.VoiceChangerNeutral);
   // 关闭人声效果
   rtcEngine.setVoiceConversionPreset(VoiceConversionPreset.VoiceConversionOff);
   ```

- 进阶变声

   ```javascript
   // 设置变声效果为绿巨人的声音
      rtcEngine.setAudioEffectPreset(AudioEffectPreset.VoiceChangerEffectHulk);
      // 关闭人声效果
      rtcEngine.setAudioEffectPreset(AudioEffectPreset.AudioEffectOff);
      ```

### 自定义人声效果 [#自定义人声效果-8]

调用 [`setLocalVoicePitch`](/zh-CN/api-reference/rtc/electron/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicepitch)、[`setLocalVoiceEqualization`](/zh-CN/api-reference/rtc/electron/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoiceequalization) 和 [`setLocalVoiceReverb`](/zh-CN/api-reference/rtc/electron/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicereverb)，以调整音调、均衡和混响效果，来自定义人声效果。

以下示例代码展示如何通过手动设置参数值把原始人声变成绿巨人的声音：

```javascript
rtcEngine.setLocalVoicePitch(0.5);

// 设置本地人声均衡波段的中心频率
// 第 1 个参数为频谱子带索引，取值范围 [0,9]，分别代表 10 个频带，对应的中心频率是 [31,62,125,250,500,1000,2000,4000,8000,16000] Hz
// 第 2 个参数为每个频率区间的增益值，取值范围 [-15,15]，单位 dB, 默认值为 0
rtcEngine.setLocalVoiceEqualization(AudioEqualizationBandFrequency.AudioEqualizationBand31, -15);
rtcEngine.setLocalVoiceEqualization(AudioEqualizationBandFrequency.AudioEqualizationBand62, 3);
rtcEngine.setLocalVoiceEqualization(AudioEqualizationBandFrequency.AudioEqualizationBand125, -9);
rtcEngine.setLocalVoiceEqualization(AudioEqualizationBandFrequency.AudioEqualizationBand250, -8);
rtcEngine.setLocalVoiceEqualization(AudioEqualizationBandFrequency.AudioEqualizationBand500, -6);
rtcEngine.setLocalVoiceEqualization(AudioEqualizationBandFrequency.AudioEqualizationBand1k, -4);
rtcEngine.setLocalVoiceEqualization(AudioEqualizationBandFrequency.AudioEqualizationBand2k, -3);
rtcEngine.setLocalVoiceEqualization(AudioEqualizationBandFrequency.AudioEqualizationBand4k, -2);
rtcEngine.setLocalVoiceEqualization(AudioEqualizationBandFrequency.AudioEqualizationBand8k, -1);
rtcEngine.setLocalVoiceEqualization(AudioEqualizationBandFrequency.AudioEqualizationBand16k, 1);

// 原始人声强度，即 dry signal，取值范围 [-20,10]，单位为 dB
rtcEngine.setLocalVoiceReverb(AudioReverbType.AudioReverbDryLevel, 10);

// 早期反射信号强度，即 wet signal，取值范围 [-20,10]，单位为 dB
rtcEngine.setLocalVoiceReverb(AudioReverbType.AudioReverbWetLevel, 7);

// 所需混响效果的房间尺寸，一般房间越大，混响效果越强。取值范围 [0,100]
rtcEngine.setLocalVoiceReverb(AudioReverbType.AudioReverbRoomSize, 6);

// Wet signal 的初始延迟长度，取值范围 [0,200]，单位为 ms
rtcEngine.setLocalVoiceReverb(AudioReverbType.AudioReverbWetDelay, 124);

// 混响效果持续的强度，取值范围为 [0,100]，值越大，混响效果越强
rtcEngine.setLocalVoiceReverb(AudioReverbType.AudioReverbStrength, 78);
```

## 开发注意事项 [#开发注意事项-4]

- 同一时间只能设置一种人声效果，否则先设置的人声音效会被后设置的覆盖。
- `setVoiceBeautifierPreset`、`setAudioEffectPreset`、`setVoiceConversionPreset` 中的部分枚举适用于不同性别，需要加以区分。如果用于不适用的性别人声，会导致失真。

## 参考信息 [#参考信息-4]

### 示例项目 [#示例项目-4]

声网在 Gitee、GitHub 上提供开源的实现人声效果示例项目 VoiceChanger ([Gitee](https://gitee.com/agoraio-community/Electron-SDK/tree/main/example/src/renderer/examples/advanced/VoiceChanger/VoiceChanger.tsx), [GitHub](https://github.com/AgoraIO-Extensions/Electron-SDK/blob/main/example/src/renderer/examples/advanced/VoiceChanger/VoiceChanger.tsx)) 供你参考，你可以前往下载或查看其中的源代码。

### API 参考 [#api-参考-4]

#### 设置音频场景和编码属性 [#设置音频场景和编码属性-9]

- [`setAudioScenario`](/zh-CN/api-reference/rtc/electron/audio/audio-basic#setaudioscenario)
- [`setAudioProfile`](/zh-CN/api-reference/rtc/electron/audio/audio-basic#setaudioprofile)

#### 预设人声效果 [#预设人声效果-4]

  - [`setVoiceBeautifierPreset`](/zh-CN/api-reference/rtc/electron/audio/audio-prenpost/audio-effect#api_irtcengine_setvoicebeautifierpreset)
  - [`setAudioEffectPreset`](/zh-CN/api-reference/rtc/electron/audio/audio-prenpost/audio-effect#api_irtcengine_setaudioeffectpreset)
  - [`setVoiceConversionPreset`](/zh-CN/api-reference/rtc/electron/audio/audio-prenpost/audio-effect#api_irtcengine_setvoiceconversionpreset)
  - [`setAudioEffectParameters`](/zh-CN/api-reference/rtc/electron/audio/audio-prenpost/audio-effect#api_irtcengine_setaudioeffectparameters)
  - [`setVoiceBeautifierParameters`](/zh-CN/api-reference/rtc/electron/audio/audio-prenpost/audio-effect#api_irtcengine_setvoicebeautifierparameters)

#### 自定义人声效果 [#自定义人声效果-9]

- [`setLocalVoicePitch`](/zh-CN/api-reference/rtc/electron/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicepitch)
- [`setLocalVoiceEqualization`](/zh-CN/api-reference/rtc/electron/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoiceequalization)
- [`setLocalVoiceReverb`](/zh-CN/api-reference/rtc/electron/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicereverb)
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="android" platform="unity" />
在社交娱乐场景中，为增添场景的趣味性并提升互动体验，通常需要设置人声效果，如语聊美声、歌唱美声、音色变换等。例如，在 KTV 场景中，主播可以使用立体声音效增添自己声音的立体感，快速吸引大量听众。

本文介绍如何在你的项目中实现人声效果。

## 功能介绍 [#功能介绍-5]

声网提供封装在枚举中的预设人声效果参数，帮助你实现以下人声效果：

- **美声**
   - 语聊美声：在不改变原声辨识度的前提下，根据男女声各自的特点美化说话声。
   - 歌唱美声：在保留歌声原有特点的前提下，根据男女声各自的特点美化歌声。
   - 音色变换：将人声的音色朝特定的方向微调。
- **音效**
   - 曲风音效：在演唱特定风格的歌曲时，使歌声与伴奏更加契合。
   - 空间塑造：通过空间混响效果营造一定的空间氛围，让人声仿佛从特定的场地中传出。
   - 电音音效：通过调整人声的音调使其与伴奏的调式和主音音高完全匹配，从而实现电音效果。
- **变声**
   - 基础变声：保留一定的人声辨识度，使其更加中性、甜美或稳重。
   - 进阶变声：大幅改变人声，实现大叔音、少女音、猪八戒、绿巨人等声音。
- **自定义人声效果**：如果预设效果无法满足你的需求，你可以手动调整人声的音调、均衡和混响效果以自定义人声效果。

## 前提条件 [#前提条件-5]

项目已经实现了[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 设置音频场景和编码属性 [#设置音频场景和编码属性-10]

为了获得更好的人声效果，声网推荐你在实现人声效果前先调用以下方法：

- 调用 [`SetAudioScenario`](/zh-CN/api-reference/rtc/unity/audio/audio-basic#api_irtcengine_setaudioscenario) 将音频场景设置为高音质场景 `AUDIO_SCENARIO_GAME_STREAMING` (3)。
- 调用 [`SetAudioProfile`[2/2]](/zh-CN/api-reference/rtc/unity/audio/audio-basic#api_irtcengine_setaudioprofile2) 将音频编码属性设置为高音质编码，其中：
   - 使用单声道传输设为 `AUDIO_PROFILE_MUSIC_HIGH_QUALITY`
   - 使用立体声传输设为 `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO`

:::warning[注意]
请在调用 [`CreateAgoraRtcEngine`](/zh-CN/api-reference/rtc/unity/initialize#createagorartcengine) 创建 `IRtcEngine` 对象之后再设置音频场景和编码属性。
:::

```csharp
// 设置音频场景
RtcEngine.SetAudioScenario(AUDIO_SCENARIO_TYPE.AUDIO_SCENARIO_GAME_STREAMING);
// 设置音频编码属性
RtcEngine.SetAudioProfile(AUDIO_PROFILE_TYPE.AUDIO_PROFILE_MUSIC_HIGH_QUALITY);

```

## 实现人声效果 [#实现人声效果-5]

本节介绍如何在你的项目中实现各种人声效果。

### 美声 [#美声-5]

调用 [`SetVoiceBeautifierPreset`](/zh-CN/api-reference/rtc/unity/audio/audio-prenpost/audio-effect#api_irtcengine_setvoicebeautifierpreset) 方法，设置曲风音效、空间塑造、电音音效等效果。

- 语聊美声

   ```csharp
   // 将人声效果设置为磁性（男）
   RtcEngine.SetVoiceBeautifierPreset(VOICE_BEAUTIFIER_PRESET.CHAT_BEAUTIFIER_MAGNETIC);
   // 关闭人声效果
   RtcEngine.SetVoiceBeautifierPreset(VOICE_BEAUTIFIER_PRESET.VOICE_BEAUTIFIER_OFF);

   ```

- 歌唱美声

   ```csharp
   // 示例 1：设置男声音效
   // 设置为歌唱美声预设，可美化男声并添加小房间混响效果
   RtcEngine.SetVoiceBeautifierPreset(VOICE_BEAUTIFIER_PRESET.SINGING_BEAUTIFIER);
   // 关闭人声效果
   RtcEngine.SetVoiceBeautifierPreset(VOICE_BEAUTIFIER_PRESET.VOICE_BEAUTIFIER_OFF);


   // 示例 2：设置女声音效
   // 调用 setVoiceBeautifierParameters 方法，实现美化女声，并添加大厅混响效果
   RtcEngine.SetVoiceBeautifierParameters(VOICE_BEAUTIFIER_PRESET.SINGING_BEAUTIFIER, 2, 3);
   // 关闭人声效果
   RtcEngine.SetVoiceBeautifierPreset(VOICE_BEAUTIFIER_PRESET.VOICE_BEAUTIFIER_OFF);
   ```

- 音色变换

   ```csharp
   // 设置音色为浑厚
   RtcEngine.SetVoiceBeautifierPreset(VOICE_BEAUTIFIER_PRESET.TIMBRE_TRANSFORMATION_VIGOROUS);
   // 关闭人声效果
   RtcEngine.SetVoiceBeautifierPreset(VOICE_BEAUTIFIER_PRESET.VOICE_BEAUTIFIER_OFF);
   ```

### 音效 [#音效-5]

调用 [`SetAudioEffectPreset`](/zh-CN/api-reference/rtc/unity/audio/audio-prenpost/audio-effect#api_irtcengine_setaudioeffectpreset) 方法，设置曲风音效、空间塑造、电音音效等效果。

- 曲风音效

   ```csharp
   // 设置曲风为流行
   RtcEngine.SetAudioEffectPreset(AUDIO_EFFECT_PRESET.STYLE_TRANSFORMATION_POPULAR);
   // 关闭人声效果
   RtcEngine.SetAudioEffectPreset(AUDIO_EFFECT_PRESET.AUDIO_EFFECT_OFF);
   ```

- 空间塑造

   ```csharp
   // 设置空间塑造效果为 KTV 中的效果
   RtcEngine.SetAudioEffectPreset(AUDIO_EFFECT_PRESET.ROOM_ACOUSTICS_KTV);
   // 关闭人声效果
   RtcEngine.SetAudioEffectPreset(AUDIO_EFFECT_PRESET.AUDIO_EFFECT_OFF);
   ```

- 电音音效

   ```csharp
   // 示例 1：采用预设的音调调整方式实现电音音效
   // 预设以主音音高为 C 的自然大调为基础，修正音频的实际音高
   RtcEngine.SetAudioEffectPreset(AUDIO_EFFECT_PRESET.PITCH_CORRECTION);
   // 关闭人声效果
   RtcEngine.SetAudioEffectPreset(AUDIO_EFFECT_PRESET.AUDIO_EFFECT_OFF);

   // 示例 2：自行调整基础调式和主音音高实现电音音效
   // 调用 setAudioEffectParameters 调整修音的基础调式为自然小调，主音音高为 D
   RtcEngine.SetAudioEffectParameters(AUDIO_EFFECT_PRESET.PITCH_CORRECTION, 2, 6);
   // 关闭人声效果
   RtcEngine.SetAudioEffectPreset(AUDIO_EFFECT_PRESET.AUDIO_EFFECT_OFF);
   ```

### 变声 [#变声-5]

调用 [`SetAudioEffectPreset`](/zh-CN/api-reference/rtc/unity/audio/audio-prenpost/audio-effect#api_irtcengine_setaudioeffectpreset) 和 [`SetVoiceConversionPreset`](/zh-CN/api-reference/rtc/unity/audio/audio-prenpost/audio-effect#api_irtcengine_setvoiceconversionpreset) 方法，分别实现基础变声和进阶变声效果。

- 基础变声

   ```csharp
   // 设置变声效果为更中性化的声音
   RtcEngine.SetVoiceConversionPreset(VOICE_CONVERSION_PRESET.VOICE_CHANGER_NEUTRAL);
   // 关闭人声效果
   RtcEngine.SetVoiceConversionPreset(VOICE_CONVERSION_PRESET.VOICE_CONVERSION_OFF);
   ```

- 进阶变声

   ```csharp
   // 设置变声效果为绿巨人的声音
   RtcEngine.SetAudioEffectPreset(AUDIO_EFFECT_PRESET.VOICE_CHANGER_EFFECT_HULK);
   // 关闭人声效果
   RtcEngine.SetAudioEffectPreset(AUDIO_EFFECT_PRESET.AUDIO_EFFECT_OFF);
   ```

### 自定义人声效果 [#自定义人声效果-10]

调用 [`SetLocalVoicePitch`](/zh-CN/api-reference/rtc/unity/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicepitch)、[`SetLocalVoiceEqualization`](/zh-CN/api-reference/rtc/unity/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoiceequalization) 和 [`SetLocalVoiceReverb`](/zh-CN/api-reference/rtc/unity/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicereverb)，以调整音调、均衡和混响效果，来自定义人声效果。

以下示例代码展示如何通过手动设置参数值把原始人声变成绿巨人的声音：

```csharp
RtcEngine.SetLocalVoicePitch(0.5);

// 设置本地人声均衡波段的中心频率
// 第 1 个参数为频谱子带索引，取值范围 [0,9]，分别代表 10 个频带，对应的中心频率是 [31,62,125,250,500,1000,2000,4000,8000,16000] Hz
// 第 2 个参数为每个频率区间的增益值，取值范围 [-15,15]，单位 dB, 默认值为 0
RtcEngine.SetLocalVoiceEqualization(AUDIO_EQUALIZATION_BAND_FREQUENCY.AUDIO_EQUALIZATION_BAND_31, -15);
RtcEngine.SetLocalVoiceEqualization(AUDIO_EQUALIZATION_BAND_FREQUENCY.AUDIO_EQUALIZATION_BAND_62, 3);
RtcEngine.SetLocalVoiceEqualization(AUDIO_EQUALIZATION_BAND_FREQUENCY.AUDIO_EQUALIZATION_BAND_125, -9);
RtcEngine.SetLocalVoiceEqualization(AUDIO_EQUALIZATION_BAND_FREQUENCY.AUDIO_EQUALIZATION_BAND_250, -8);
RtcEngine.SetLocalVoiceEqualization(AUDIO_EQUALIZATION_BAND_FREQUENCY.AUDIO_EQUALIZATION_BAND_500, -6);
RtcEngine.SetLocalVoiceEqualization(AUDIO_EQUALIZATION_BAND_FREQUENCY.AUDIO_EQUALIZATION_BAND_1K, -4);
RtcEngine.SetLocalVoiceEqualization(AUDIO_EQUALIZATION_BAND_FREQUENCY.AUDIO_EQUALIZATION_BAND_2K, -3);
RtcEngine.SetLocalVoiceEqualization(AUDIO_EQUALIZATION_BAND_FREQUENCY.AUDIO_EQUALIZATION_BAND_4K, -2);
RtcEngine.SetLocalVoiceEqualization(AUDIO_EQUALIZATION_BAND_FREQUENCY.AUDIO_EQUALIZATION_BAND_8K, -1);
RtcEngine.SetLocalVoiceEqualization(AUDIO_EQUALIZATION_BAND_FREQUENCY.AUDIO_EQUALIZATION_BAND_16K, 1);

// 原始人声强度，即 dry signal，取值范围 [-20,10]，单位为 dB
RtcEngine.SetLocalVoiceReverb(AUDIO_REVERB_TYPE.AUDIO_REVERB_DRY_LEVEL, 10);

// 早期反射信号强度，即 wet signal，取值范围 [-20,10]，单位为 dB
RtcEngine.SetLocalVoiceReverb(AUDIO_REVERB_TYPE.AUDIO_REVERB_WET_LEVEL, 7);

// 所需混响效果的房间尺寸，一般房间越大，混响效果越强。 取值范围 [0,100]
RtcEngine.SetLocalVoiceReverb(AUDIO_REVERB_TYPE.AUDIO_REVERB_ROOM_SIZE, 6);

// Wet signal 的初始延迟长度，取值范围 [0,200]，单位为 ms
RtcEngine.SetLocalVoiceReverb(AUDIO_REVERB_TYPE.AUDIO_REVERB_WET_DELAY, 124);

// 混响效果持续的强度，取值范围为 [0,100]，值越大，混响效果越强
RtcEngine.SetLocalVoiceReverb(AUDIO_REVERB_TYPE.AUDIO_REVERB_STRENGTH, 78);
```

## 开发注意事项 [#开发注意事项-5]

- 同一时间只能设置一种人声效果，否则先设置的人声音效会被后设置的覆盖。
- `SetVoiceBeautifierPreset`、`SetAudioEffectPreset`、`SetVoiceConversionPreset` 中的部分枚举适用于不同性别，需要加以区分。如果用于不适用的性别人声，会导致失真。

## 参考信息 [#参考信息-5]

### 示例项目 [#示例项目-5]

声网提供了开源的音视频互动示例项目供你参考，你可以前往下载或查看其中的源代码。

<Cards>
  <Card title={<RepositoryCardTitle provider="gitee">VoiceChanger</RepositoryCardTitle>} href="https://gitee.com/agoraio-community/Agora-Unity-Quickstart/blob/main/API-Example-Unity/Assets/API-Example/Examples/Advanced/VoiceChanger/VoiceChanger.cs" />
  <Card title={<RepositoryCardTitle provider="github">VoiceChanger</RepositoryCardTitle>} href="https://github.com/AgoraIO-Extensions/Agora-Unity-Quickstart/blob/main/API-Example-Unity/Assets/API-Example/Examples/Advanced/VoiceChanger/VoiceChanger.cs" />
</Cards>

### API 参考 [#api-参考-5]

#### 设置音频场景和编码属性 [#设置音频场景和编码属性-11]

- [`SetAudioScenario`](/zh-CN/api-reference/rtc/unity/audio/audio-basic#api_irtcengine_setaudioscenario)
- [`SetAudioProfile`[2/2]](/zh-CN/api-reference/rtc/unity/audio/audio-basic#api_irtcengine_setaudioprofile2)

#### 预设人声效果 [#预设人声效果-5]

  - [`SetVoiceBeautifierPreset`](/zh-CN/api-reference/rtc/unity/audio/audio-prenpost/audio-effect#api_irtcengine_setvoicebeautifierpreset)
  - [`SetAudioEffectPreset`](/zh-CN/api-reference/rtc/unity/audio/audio-prenpost/audio-effect#api_irtcengine_setaudioeffectpreset)
  - [`SetVoiceConversionPreset`](/zh-CN/api-reference/rtc/unity/audio/audio-prenpost/audio-effect#api_irtcengine_setvoiceconversionpreset)
  - [`SetAudioEffectParameters`](/zh-CN/api-reference/rtc/unity/audio/audio-prenpost/audio-effect#api_irtcengine_setaudioeffectparameters)
  - [`SetVoiceBeautifierParameters`](/zh-CN/api-reference/rtc/unity/audio/audio-prenpost/audio-effect#api_irtcengine_setvoicebeautifierparameters)

#### 自定义人声效果 [#自定义人声效果-11]

- [`SetLocalVoicePitch`](/zh-CN/api-reference/rtc/unity/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicepitch)
- [`SetLocalVoiceEqualization`](/zh-CN/api-reference/rtc/unity/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoiceequalization)
- [`SetLocalVoiceReverb`](/zh-CN/api-reference/rtc/unity/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicereverb)
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="android" platform="react-native" />
在社交娱乐场景中，为增添场景的趣味性并提升互动体验，通常需要设置人声效果，如语聊美声、歌唱美声、音色变换等。例如，在 KTV 场景中，主播可以使用立体声音效增添自己声音的立体感，快速吸引大量听众。

本文介绍如何在你的项目中实现人声效果。

## 功能介绍 [#功能介绍-6]

声网提供封装在枚举中的预设人声效果参数，帮助你实现以下人声效果：

- **美声**
   - 语聊美声：在不改变原声辨识度的前提下，根据男女声各自的特点美化说话声。
   - 歌唱美声：在保留歌声原有特点的前提下，根据男女声各自的特点美化歌声。
   - 音色变换：将人声的音色朝特定的方向微调。
- **音效**
   - 曲风音效：在演唱特定风格的歌曲时，使歌声与伴奏更加契合。
   - 空间塑造：通过空间混响效果营造一定的空间氛围，让人声仿佛从特定的场地中传出。
   - 电音音效：通过调整人声的音调使其与伴奏的调式和主音音高完全匹配，从而实现电音效果。
- **变声**
   - 基础变声：保留一定的人声辨识度，使其更加中性、甜美或稳重。
   - 进阶变声：大幅改变人声，实现大叔音、少女音、猪八戒、绿巨人等声音。
- **自定义人声效果**：如果预设效果无法满足你的需求，你可以手动调整人声的音调、均衡和混响效果以自定义人声效果。

## 前提条件 [#前提条件-6]

项目已经实现了[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 设置音频场景和编码属性 [#设置音频场景和编码属性-12]

为了获得更好的人声效果，声网推荐你在实现人声效果前先调用以下方法：

- 调用 [`setAudioScenario`](/zh-CN/api-reference/rtc/react-native/audio/audio-basic#setaudioscenario) 将音频场景设置为高音质场景 `AudioScenarioGameStreaming` (3)。
- 调用 [`setAudioProfile`](/zh-CN/api-reference/rtc/react-native/audio/audio-basic#setaudioprofile) 将音频编码属性设置为高音质编码，其中：
   - 使用单声道传输设为 `AudioProfileMusicHighQuality`
   - 使用立体声传输设为 `AudioProfileMusicHighQualityStereo`

```javascript
// 创建 RtcEngine 对象
rtcEngine = createAgoraRtcEngine();
// 设置音频场景
rtcEngine.setAudioScenario(AudioScenarioType.AudioScenarioGameStreaming);
// 设置音频编码属性
rtcEngine.setAudioProfile(AudioProfileType.AudioProfileMusicHighQualityStereo);
```

## 实现人声效果 [#实现人声效果-6]

本节介绍如何在你的项目中实现各种人声效果。

### 美声 [#美声-6]

调用 [`setVoiceBeautifierPreset`](/zh-CN/api-reference/rtc/react-native/audio/audio-prenpost/audio-effect#api_irtcengine_setvoicebeautifierpreset) 方法，设置曲风音效、空间塑造、电音音效等效果。

- 语聊美声

   ```javascript
   // 将人声效果设置为磁性（男）
   rtcEngine.setVoiceBeautifierPreset(VoiceBeautifierPreset.ChatBeautifierMagnetic);
   // 关闭人声效果
   rtcEngine.setVoiceBeautifierPreset(VoiceBeautifierPreset.VoiceBeautifierOff);
   ```

- 歌唱美声

   ```javascript
   // 示例 1：设置男声音效
   // 设置为歌唱美声预设，可美化男声并添加小房间混响效果
   rtcEngine.setVoiceBeautifierPreset(VoiceBeautifierPreset.SingingBeautifier);
   // 关闭人声效果
   rtcEngine.setVoiceBeautifierPreset(VoiceBeautifierPreset.VoiceBeautifierOff);

   // 示例 2：设置女声音效
   // 调用 setVoiceBeautifierParameters 方法，实现美化女声，并添加大厅混响效果
   rtcEngine.setVoiceBeautifierParameters(VoiceBeautifierPreset.SingingBeautifier, 2, 3);
   // 关闭人声效果
   rtcEngine.setVoiceBeautifierPreset(VoiceBeautifierPreset.VoiceBeautifierOff);
   ```

- 音色变换

   ```javascript
   // 设置音色为浑厚
   rtcEngine.setVoiceBeautifierPreset(VoiceBeautifierPreset.TimbreTransformationVigorous);
   // 关闭人声效果
   rtcEngine.setVoiceBeautifierPreset(VoiceBeautifierPreset.VoiceBeautifierOff);
   ```

### 音效 [#音效-6]

调用 [`setAudioEffectPreset`](/zh-CN/api-reference/rtc/react-native/audio/audio-prenpost/audio-effect#api_irtcengine_setaudioeffectpreset) 方法，设置曲风音效、空间塑造、电音音效等效果。

- 曲风音效

   ```javascript
   // 设置曲风为流行
   rtcEngine.setAudioEffectPreset(AudioEffectPreset.StyleTransformationPopular);
   // 关闭人声效果
   rtcEngine.setAudioEffectPreset(AudioEffectPreset.AudioEffectOff);
   ```

- 空间塑造

   ```javascript
   // 设置空间塑造效果为 KTV 中的效果
   rtcEngine.setAudioEffectPreset(AudioEffectPreset.RoomAcousticsKtv);
   // 关闭人声效果
   rtcEngine.setAudioEffectPreset(AudioEffectPreset.AudioEffectOff);
   ```

- 电音音效

   ```javascript
   // 示例 1：采用预设的音调调整方式实现电音音效
   // 预设以主音音高为 C 的自然大调为基础，修正音频的实际音高
   rtcEngine.setAudioEffectPreset(AudioEffectPreset.PitchCorrection);
   // 关闭人声效果
   rtcEngine.setAudioEffectPreset(AudioEffectPreset.AudioEffectOff);

   // 示例 2：自行调整基础调式和主音音高实现电音音效
   // 调用 setAudioEffectParameters 调整修音的基础调式为自然小调，主音音高为 D
   rtcEngine.setAudioEffectParameters(AudioEffectPreset.PitchCorrection, 2, 6);
   // 关闭人声效果
   rtcEngine.setAudioEffectPreset(AudioEffectPreset.AudioEffectOff);
   ```

### 变声 [#变声-6]

调用 [`setAudioEffectPreset`](/zh-CN/api-reference/rtc/react-native/audio/audio-prenpost/audio-effect#api_irtcengine_setaudioeffectpreset) 和 [`setVoiceConversionPreset`](/zh-CN/api-reference/rtc/react-native/audio/audio-prenpost/audio-effect#api_irtcengine_setvoiceconversionpreset) 方法，分别实现基础变声和进阶变声效果。

- 基础变声

   ```javascript
   // 设置变声效果为更中性化的声音
   rtcEngine.setVoiceConversionPreset(VoiceConversionPreset.VoiceChangerNeutral);
   // 关闭人声效果
   rtcEngine.setVoiceConversionPreset(VoiceConversionPreset.VoiceConversionOff);
   ```

- 进阶变声

   ```javascript
   // 设置变声效果为绿巨人的声音
      rtcEngine.setAudioEffectPreset(AudioEffectPreset.VoiceChangerEffectHulk);
      // 关闭人声效果
      rtcEngine.setAudioEffectPreset(AudioEffectPreset.AudioEffectOff);
      ```

### 自定义人声效果 [#自定义人声效果-12]

调用 [`setLocalVoicePitch`](/zh-CN/api-reference/rtc/react-native/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicepitch)、[`setLocalVoiceEqualization`](/zh-CN/api-reference/rtc/react-native/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoiceequalization) 和 [`setLocalVoiceReverb`](/zh-CN/api-reference/rtc/react-native/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicereverb)，以调整音调、均衡和混响效果，来自定义人声效果。

以下示例代码展示如何通过手动设置参数值把原始人声变成绿巨人的声音：

```javascript
rtcEngine.setLocalVoicePitch(0.5);

// 设置本地人声均衡波段的中心频率
// 第 1 个参数为频谱子带索引，取值范围 [0,9]，分别代表 10 个频带，对应的中心频率是 [31,62,125,250,500,1000,2000,4000,8000,16000] Hz
// 第 2 个参数为每个频率区间的增益值，取值范围 [-15,15]，单位 dB, 默认值为 0
rtcEngine.setLocalVoiceEqualization(AudioEqualizationBandFrequency.AudioEqualizationBand31, -15);
rtcEngine.setLocalVoiceEqualization(AudioEqualizationBandFrequency.AudioEqualizationBand62, 3);
rtcEngine.setLocalVoiceEqualization(AudioEqualizationBandFrequency.AudioEqualizationBand125, -9);
rtcEngine.setLocalVoiceEqualization(AudioEqualizationBandFrequency.AudioEqualizationBand250, -8);
rtcEngine.setLocalVoiceEqualization(AudioEqualizationBandFrequency.AudioEqualizationBand500, -6);
rtcEngine.setLocalVoiceEqualization(AudioEqualizationBandFrequency.AudioEqualizationBand1k, -4);
rtcEngine.setLocalVoiceEqualization(AudioEqualizationBandFrequency.AudioEqualizationBand2k, -3);
rtcEngine.setLocalVoiceEqualization(AudioEqualizationBandFrequency.AudioEqualizationBand4k, -2);
rtcEngine.setLocalVoiceEqualization(AudioEqualizationBandFrequency.AudioEqualizationBand8k, -1);
rtcEngine.setLocalVoiceEqualization(AudioEqualizationBandFrequency.AudioEqualizationBand16k, 1);

// 原始人声强度，即 dry signal，取值范围 [-20,10]，单位为 dB
rtcEngine.setLocalVoiceReverb(AudioReverbType.AudioReverbDryLevel, 10);

// 早期反射信号强度，即 wet signal，取值范围 [-20,10]，单位为 dB
rtcEngine.setLocalVoiceReverb(AudioReverbType.AudioReverbWetLevel, 7);

// 所需混响效果的房间尺寸，一般房间越大，混响效果越强。取值范围 [0,100]
rtcEngine.setLocalVoiceReverb(AudioReverbType.AudioReverbRoomSize, 6);

// Wet signal 的初始延迟长度，取值范围 [0,200]，单位为 ms
rtcEngine.setLocalVoiceReverb(AudioReverbType.AudioReverbWetDelay, 124);

// 混响效果持续的强度，取值范围为 [0,100]，值越大，混响效果越强
rtcEngine.setLocalVoiceReverb(AudioReverbType.AudioReverbStrength, 78);
```

## 开发注意事项 [#开发注意事项-6]

- 同一时间只能设置一种人声效果，否则先设置的人声音效会被后设置的覆盖。
- `setVoiceBeautifierPreset`、`setAudioEffectPreset`、`setVoiceConversionPreset` 中的部分枚举适用于不同性别，需要加以区分。如果用于不适用的性别人声，会导致失真。

## 参考信息 [#参考信息-6]

### 示例项目 [#示例项目-6]

声网在 Gitee、GitHub 上提供开源的实现人声效果示例项目 VoiceChanger ([Gitee](https://gitee.com/agoraio-community/react-native-agora/tree/main/example/src/examples/advanced/VoiceChanger/VoiceChanger.tsx), [GitHub](https://github.com/AgoraIO-Extensions/react-native-agora/blob/main/examples/legacy/src/examples/advanced/VoiceChanger/VoiceChanger.tsx)) 供你参考，你可以前往下载或查看其中的源代码。

### API 参考 [#api-参考-6]

#### 设置音频场景和编码属性 [#设置音频场景和编码属性-13]

- [`setAudioScenario`](/zh-CN/api-reference/rtc/react-native/audio/audio-basic#setaudioscenario)
- [`setAudioProfile`](/zh-CN/api-reference/rtc/react-native/audio/audio-basic#setaudioprofile)

#### 预设人声效果 [#预设人声效果-6]

  - [`setVoiceBeautifierPreset`](/zh-CN/api-reference/rtc/react-native/audio/audio-prenpost/audio-effect#api_irtcengine_setvoicebeautifierpreset)
  - [`setAudioEffectPreset`](/zh-CN/api-reference/rtc/react-native/audio/audio-prenpost/audio-effect#api_irtcengine_setaudioeffectpreset)
  - [`setVoiceConversionPreset`](/zh-CN/api-reference/rtc/react-native/audio/audio-prenpost/audio-effect#api_irtcengine_setvoiceconversionpreset)
  - [`setAudioEffectParameters`](/zh-CN/api-reference/rtc/react-native/audio/audio-prenpost/audio-effect#api_irtcengine_setaudioeffectparameters)
  - [`setVoiceBeautifierParameters`](/zh-CN/api-reference/rtc/react-native/audio/audio-prenpost/audio-effect#api_irtcengine_setvoicebeautifierparameters)

#### 自定义人声效果 [#自定义人声效果-13]

- [`setLocalVoicePitch`](/zh-CN/api-reference/rtc/react-native/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicepitch)
- [`setLocalVoiceEqualization`](/zh-CN/api-reference/rtc/react-native/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoiceequalization)
- [`setLocalVoiceReverb`](/zh-CN/api-reference/rtc/react-native/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicereverb)
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="android" platform="harmonyos" />
在社交娱乐、KTV 和互动直播等场景中，你可以使用 HarmonyOS RTC SDK 调整本地人声的预设效果、音调、均衡和混响。

本文只介绍当前 HarmonyOS API 参考中已公开且支持的能力。

## 前提条件 [#前提条件-7]

在进行操作之前，请确保你的项目已经实现基本的实时音视频功能，详见[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

为了获得更好的人声效果，建议将音频场景设置为 `GAME_STREAMING`，并使用高音质音频编码属性：

```typescript
this.rtcEngine = RtcEngine.create(config);
this.rtcEngine?.setAudioScenario(Constants.AudioScenarioType.GAME_STREAMING);
this.rtcEngine?.setAudioProfile(Constants.AudioProfileType.MUSIC_HIGH_QUALITY_STEREO);
```

## 设置预设人声效果 [#设置预设人声效果]

调用 `setVoiceBeautifierPreset` 设置预设美声或音色效果。以下示例分别设置磁性人声和浑厚人声，并使用 `OFF` 恢复原始人声：

```typescript
// 磁性人声，适合男声
this.rtcEngine?.setVoiceBeautifierPreset(
    Constants.VoiceBeautifierPreset.CHAT_BEAUTIFIER_MAGNETIC
);

// 音色变换为浑厚
this.rtcEngine?.setVoiceBeautifierPreset(
    Constants.VoiceBeautifierPreset.TIMBRE_TRANSFORMATION_VIGOROUS
);

// 关闭预设人声效果
this.rtcEngine?.setVoiceBeautifierPreset(Constants.VoiceBeautifierPreset.OFF);
```

部分预设针对特定音色或性别进行了调校。使用前请阅读 API 参考中的枚举说明，否则可能产生失真。

## 设置预设音效 [#设置预设音效]

调用 `setAudioEffectPreset` 设置空间塑造或其他预设音效：

```typescript
// 设置 KTV 空间音效
this.rtcEngine?.setAudioEffectPreset(
    Constants.AudioEffectPreset.ROOM_ACOUSTICS_KTV
);

// 关闭预设音效
this.rtcEngine?.setAudioEffectPreset(Constants.AudioEffectPreset.AUDIO_EFFECT_OFF);
```

同一时间建议只使用一种预设人声或音效。重复设置时，后一次调用可能覆盖前一次效果。

## 自定义人声效果 [#自定义人声效果-14]

### 调整音调 [#调整音调]

调用 `setLocalVoicePitch` 调整音调。`pitch` 的取值范围为 0.5 到 2.0，默认值为 1.0：

```typescript
this.rtcEngine?.setLocalVoicePitch(0.8);
```

### 调整均衡 [#调整均衡]

调用 `setLocalVoiceEqualization` 调整指定频段的增益。频段枚举和增益范围以 API 参考为准：

```typescript
// 调整低频和中频，使人声更厚实
this.rtcEngine?.setLocalVoiceEqualization(
    Constants.AudioEqualizationBandFrequency.BAND_31,
    3
);
this.rtcEngine?.setLocalVoiceEqualization(
    Constants.AudioEqualizationBandFrequency.BAND_1K,
    -2
);
```

### 调整混响 [#调整混响]

调用 `setLocalVoiceReverb` 调整干声、湿声、房间大小、延迟和混响强度：

```typescript
this.rtcEngine?.setLocalVoiceReverb(
    Constants.AudioReverbType.DRY_LEVEL,
    0
);
this.rtcEngine?.setLocalVoiceReverb(
    Constants.AudioReverbType.WET_LEVEL,
    6
);
this.rtcEngine?.setLocalVoiceReverb(
    Constants.AudioReverbType.ROOM_SIZE,
    40
);
```

## 开发注意事项 [#开发注意事项-7]

- 预设美声、预设音效、音调、均衡和混响可能互相覆盖。需要切换效果时，先明确当前生效的效果，再设置新的效果。
- 人声效果主要用于人声。将其用于音乐或复杂混音可能无法得到预期效果。
- 关闭预设效果时，调用对应枚举中的 `OFF` 值；自定义参数需要根据业务逻辑恢复到默认值。

## 参考信息 [#参考信息-7]

### API 参考 [#api-参考-7]

- [`setAudioScenario`](/zh-CN/api-reference/rtc/harmonyos/audio/audio-basic#api_irtcengine_setaudioscenario)
- [`setAudioProfile`](/zh-CN/api-reference/rtc/harmonyos/audio/audio-basic#api_irtcengine_setaudioprofile2)
- [`setVoiceBeautifierPreset`](/zh-CN/api-reference/rtc/harmonyos/audio/audio-prenpost/audio-effect#api_irtcengine_setvoicebeautifierpreset)
- [`setAudioEffectPreset`](/zh-CN/api-reference/rtc/harmonyos/audio/audio-prenpost/audio-effect#api_irtcengine_setaudioeffectpreset)
- [`setLocalVoicePitch`](/zh-CN/api-reference/rtc/harmonyos/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicepitch)
- [`setLocalVoiceEqualization`](/zh-CN/api-reference/rtc/harmonyos/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoiceequalization)
- [`setLocalVoiceReverb`](/zh-CN/api-reference/rtc/harmonyos/audio/audio-prenpost/audio-effect#api_irtcengine_setlocalvoicereverb)
<_PlatformProcessedMarker close="true" />
</_PlatformTabsGroup>
