美声变声与混响
更新时间: 2024/09/18 16:26:13
在泛娱乐行业的多种强互动场景中,往往需要多种丰富的美化与特效功能提升场景的趣味性、提高互动体验,例如美声、变声与混响功能。在多人语聊或 K 歌房场景中,美声与变声功能可以美化主播或连麦者的声音,混响功能可以让声音更具立体感,提升场景的娱乐氛围,烘托气氛。
功能介绍
NERTC SDK 支持设置多种预设的美声与变声音效,您也可以通过设置本地语音音效均衡或混响来达到自定义的人声效果,增加场景气氛。
注意事项
setAudioEffectPreset
方法和setLocalVoicePitch
互斥,调用了其中任一方法后,另一方法会被重置为默认值。- 各人声效果相关接口在加入房间前后均可调用。退出房间后,各人声效果相关参数均恢复至默认值。
预设人声效果
NERTC SDK 为您提供多种类型的预设人声效果,以满足您在不同场景下的美声与变声需求。
美声效果
美声指声音的美化,即调整人声的音色,例如让声音更加低沉、圆润或清澈。另外,NERTC 的预设美声效果还可以实现场景空间环境的效果塑造,即营造场景化的空间氛围,使人声听起来像是处于特定的空间或场所。
调用 setVoiceBeautifierPreset
方法可以使用 SDK 预设的美声效果。目前支持以下预设的美声效果:
枚举值 | 描述 |
---|---|
VOICE_BEAUTIFIER_OFF | (默认)关闭美声效果。 |
VOICE_BEAUTIFIER_MUFFLED | 低沉。 |
VOICE_BEAUTIFIER_MELLOW | 圆润。 |
VOICE_BEAUTIFIER_CLEAR | 清澈。 |
VOICE_BEAUTIFIER_MAGNETIC | 磁性。 |
VOICE_BEAUTIFIER_RECORDINGSTUDIO | 录音棚。 |
VOICE_BEAUTIFIER_NATURE | 天籁。 |
VOICE_BEAUTIFIER_KTV | KTV。 |
VOICE_BEAUTIFIER_REMOTE | 悠远。 |
VOICE_BEAUTIFIER_CHURCH | 教堂。 |
VOICE_BEAUTIFIER_BEDROOM | 卧室。 |
VOICE_BEAUTIFIER_LIVE | Live。 |
预设美声效果的示例代码如下:
//以设置美声效果为预设的磁性为例
NERtcVoiceBeautifierType beautifier_type = kNERtcVoiceBeautifierMagnetic;
engine->setVoiceBeautifierPreset(beautifier_type);
变声效果
变声指转变人声的特质,例如让声音听起来像机器人、萝莉或具有其它的搞怪效果。
调用 setAudioEffectPreset
方法可以使用 SDK 预设的变声效果。目前支持以下预设的变声效果:
枚举值 | 描述 |
---|---|
AUDIO_EFFECT_OFF | (默认)关闭变声音效。 |
VOICE_CHANGER_EFFECT_ROBOT | 机器人。 |
VOICE_CHANGER_EFFECT_GIANT | 巨人。 |
VOICE_CHANGER_EFFECT_HORROR | 恐怖。 |
VOICE_CHANGER_EFFECT_MATURE | 成熟。 |
VOICE_CHANGER_EFFECT_MANTOWOMAN | 男变女。 |
VOICE_CHANGER_EFFECT_WOMANTOMAN | 女变男。 |
VOICE_CHANGER_EFFECT_MANTOLOLI | 男变萝莉。 |
VOICE_CHANGER_EFFECT_WOMANTOLOLI | 女变萝莉。 |
预设变声效果的示例代码如下:
//以设置变声效果为预设的男变女为例
NERtcVoiceChangerType voice_changer = kNERtcVoiceChangerManToWoman;
engine->setAudioEffectPreset(voice_changer);
API 参考
方法 | 功能描述 |
---|---|
setVoiceBeautifierPreset |
设置预设的美声效果 |
setAudioEffectPreset |
设置预设的变声效果 |
自定义人声效果
如果以上美声与变声效果无法满足您的需求,您也可以通过音调、音效均衡和混响,实现自定义的人声效果。
设置音调
调用 setLocalVoicePitch
方法可以设置本地语音音调,例如将音调调高或者调低。调用此方法时,您需要通过设置 pitch 参数调整语音频率。该参数的取值范围为 0.5 ~ 2.0,取值越小表示音调越低;默认值为 1.0,表示不需要修改音调。
设置语音音调的示例代码如下:
//设置语音音调
double pitch = 1.5 /**< 在 [0.5, 2.0] 范围内设置*/
engine->setLocalVoicePitch(pitch);
设置音效均衡
调用 setLocalVoiceEqualization
方法可以设置本地语音音效均衡,即自定义设置本地人声均衡波段的中心频率。调用此方法时,您需要设置 bandFrequency 和 bandGain 参数,相关参数的说明如下:
- bandFrequency:频谱子带索引。该参数的单位为赫兹(Hz),取值范围为 0 ~ 9,分别代表 10 个频带,对应的中心频率分别为 31、62、125、250、500、1k、2k、4k、8k 和 16k。
- bandGain:每个频带的增益。该参数的单位为分贝(dB),每个频带对应的增益取值范围为 -15 ~ 15,默认值为 0。
设置语音音效均衡的示例代码如下:
//设置本地语音音效均衡
engine->setLocalVoiceEqualization(kNERtcVoiceEqualizationBand_125, 6);
engine->setLocalVoiceEqualization(kNERtcVoiceEqualizationBand_250, 8);
engine->setLocalVoiceEqualization(kNERtcVoiceEqualizationBand_500, 6);
设置混响
混响指赋予声音一定立体效果,让声音如同在山洞、音乐厅等场景中发出一般,通常会让声音变得更加饱满、动听。
调用 setLocalVoiceReverbParam
方法可以设置本地语音混响,即自定义设置本地人声的混响回声效果。相关参数的说明如下:
- wetGain:湿信号增益。该参数的单位为分贝(dB),取值范围为 0 ~ 1,默认值为 0.0。
- dryGain:干信号增益。该参数的单位为分贝(dB),取值范围为 0 ~ 1,默认值为 1.0。
- damping:混响阻尼,用于设置混响的衰减程度,阻尼越大表示衰减越大。取值范围为 0 ~ 1,默认值为 1.0。
- roomSize:房间大小,用于设置模拟的“房间”大小,房间越大表示混响越强。取值范围为 0.1 ~ 2,默认值为 0.1。
- decayTime:持续强度,用于设置混响的拖尾长度。该参数的单位为秒,取值范围为 0.1 ~ 20,默认值为 0.1。
- preDelay:延迟长度。该参数的单位为秒,取值范围为 0 ~ 1,默认值为 0.0。
设置混响效果的示例代码如下:
//设置混响效果
NERtcReverbParam voice_reverb_param;
voice_reverb_param.wetGain = 0.1;
voice_reverb_param.dryGain = 0.5;
voice_reverb_param.damping = 0.3;
voice_reverb_param.roomSize = 1.2;
voice_reverb_param.decayTime = 1.3;
voice_reverb_param.preDelay = 0.3;
engine_->setLocalVoiceReverbParam(voice_reverb_param);
API 参考
方法 | 功能描述 |
---|---|
setLocalVoicePitch |
设置本地语音音调 |
setLocalVoiceEqualization |
设置本地语音音效均衡 |
setLocalVoiceReverbParam |
设置本地语音混响 |