美声变声与混响

更新时间: 2024/03/15 17:25:03

在泛娱乐行业的多种强互动场景中,往往需要多种丰富的美化与特效功能提升场景的趣味性、提高互动体验,例如美声、变声与混响功能。在多人语聊或 K 歌房场景中,美声与变声功能可以美化主播或连麦者的声音,混响功能可以让声音更具立体感,提升场景的娱乐氛围,烘托气氛。

功能介绍

NERTC SDK 支持设置多种预设的美声与变声音效,您也可以通过设置本地语音音效均衡或混响来达到自定义的人声效果,增加场景气氛。

注意事项

  • setAudioEffectPreset 方法和 setLocalVoicePitch 互斥,调用了其中任一方法后,另一方法会被重置为默认值。
  • 各人声效果相关接口在加入房间前后均可调用。退出房间后,各人声效果相关参数均恢复至默认值。

示例项目源码

网易云信提供美声变声 AudioEffect 示例项目源码,您可以参考该源码配置美声和变声。

预设人声效果

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。

预设美声效果的示例代码如下:

//以设置美声效果为预设的低沉为例
int preset = NERtcVoiceBeautifierType.VOICE_BEAUTIFIER_MUFFLED;
NERtcEx.getInstance().setVoiceBeautifierPreset(preset);

变声效果

变声指转变人声的特质,例如让声音听起来像机器人、萝莉或具有其它的搞怪效果。

调用 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 女变萝莉。

预设变声效果的示例代码如下:

//以设置变声效果为预设的机器人为例
int preset = NERtcVoiceChangerType.VOICE_CHANGER_EFFECT_ROBOT;
NERtcEx.getInstance().setAudioEffectPreset(preset);

API 参考

方法 功能描述
setVoiceBeautifierPreset 设置预设的美声效果
setAudioEffectPreset 设置预设的变声效果

自定义人声效果

如果以上美声与变声效果无法满足您的需求,您也可以通过音调、音效均衡和混响,实现自定义的人声效果。

设置音调

调用 setLocalVoicePitch 方法可以设置本地语音音调,例如将音调调高或者调低。调用此方法时,您需要通过设置 pitch 参数调整语音频率。该参数的取值范围为 0.5 ~ 2.0,取值越小表示音调越低;默认值为 1.0,表示不需要修改音调。

设置语音音调的示例代码如下:

//设置语音音调
double pitch = 0.6; //pitch 输入pitch区间在[0.5,2] ,默认值为1
int ret = NERtcEx.getInstance().setLocalVoicePitch(pitch);

设置音效均衡

调用 setLocalVoiceEqualization 方法可以设置本地语音音效均衡,即自定义设置本地人声均衡波段的中心频率。调用此方法时,您需要设置 bandFrequencybandGain 参数,相关参数的说明如下:

  • bandFrequency:频谱子带索引。该参数的单位为赫兹(Hz),取值范围为 0 ~ 9,分别代表 10 个频带,对应的中心频率分别为 31、62、125、250、500、1k、2k、4k、8k 和 16k。
  • bandGain:每个频带的增益。该参数的单位为分贝(dB),每个频带对应的增益取值范围为 -15 ~ 15,默认值为 0。

设置语音音效均衡的示例代码如下:

//设置本地语音音效均衡
int gain = 10 //  取值范围是[-15,15],默认值为 0
int bandFrequency = NERtcVoiceEqualizationBand.VoiceEqualizationBand_1K;
NERtcEx.getInstance().setLocalVoiceEqualization(bandFrequency, gain);

设置混响

混响指赋予声音一定立体效果,让声音如同在山洞、音乐厅等场景中发出一般,通常会让声音变得更加饱满、动听。

调用 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 param = new NERtcReverbParam();
param.wetGain = 0;       
param.dryGain = 1;        
param.damping = 0;        
param.decayTime = 0.1;    
param.roomSize = 0.1;    
param.preDelay = 0;        
int ret = NERtcEx.getInstance().setLocalVoiceReverbParam(param);

API 参考

方法 功能描述
setLocalVoicePitch 设置本地语音音调
setLocalVoiceEqualization 设置本地语音音效均衡
setLocalVoiceReverbParam 设置本地语音混响
此文档是否对你有帮助?
有帮助
去反馈
  • 功能介绍
  • 注意事项
  • 示例项目源码
  • 预设人声效果
  • 美声效果
  • 变声效果
  • API 参考
  • 自定义人声效果
  • 设置音调
  • 设置音效均衡
  • 设置混响
  • API 参考