美声与变声
更新时间: 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。 |
预设美声效果的示例代码如下:
C#private void setVoiceBeautifierPreset()
{
//以设置美声效果为预设的磁性为例
RtcVoiceBeautifierType type = RtcVoiceBeautifierType.kNERtcVoiceBeautifierMagnetic;
int result = rtcEngine.SetVoiceBeautifierPreset(type);
if (result != (int)RtcErrorCode.kNERtcNoError)
{
//失败
}
}
变声效果
变声指转变人声的特质,例如让声音听起来像机器人、萝莉或具有其它的搞怪效果。
调用 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 | 女变萝莉。 |
预设变声效果的示例代码如下:
C#//以设置变声效果为预设的男变女为例
private void setAudioEffectPreset()
{
RtcVoiceChangerType type = RtcVoiceChangerType.kNERtcVoiceChangerManToWoman;
int result = rtcEngine.SetAudioEffectPreset(type);
if (result != (int)RtcErrorCode.kNERtcNoError)
{
//失败
}
}
API 参考
方法 | 功能描述 |
---|---|
SetVoiceBeautifierPreset |
设置预设的美声效果 |
SetAudioEffectPreset |
设置预设的变声效果 |
自定义人声效果
如果以上美声与变声效果无法满足您的需求,您也可以通过音调、音效均衡等,实现自定义的人声效果。
设置音调
调用 SetLocalVoicePitch
方法可以设置本地语音音调,例如将音调调高或者调低。调用此方法时,您需要通过设置 pitch
参数调整语音频率。该参数的取值范围为 0.5 ~ 2.0,取值越小表示音调越低;默认值为 1.0,表示不需要修改音调。
设置语音音调的示例代码如下:
C#private void setLocalVoicePitch()
{
//设置音调
double pitch = 1.5f;
int result = rtcEngine.SetLocalVoicePitch(pitch);
if (result != (int)RtcErrorCode.kNERtcNoError)
{
//失败
}
}
设置音效均衡
调用 SetLocalVoiceEqualization
方法可以设置本地语音音效均衡,即自定义设置本地人声均衡波段的中心频率。调用此方法时,您需要设置 bandFrequency
和 bandGain
参数,相关参数的说明如下:
bandFrequency
:频谱子带索引。该参数的单位为赫兹(Hz),取值范围为 0 ~ 9,分别代表 10 个频带,对应的中心频率分别为 31、62、125、250、500、1k、2k、4k、8k 和 16k。bandGain
:每个频带的增益。该参数的单位为分贝(dB),每个频带对应的增益取值范围为 -15 ~ 15,默认值为 0。
设置语音音效均衡的示例代码如下:
C#private void setLocalVoiceEqualization()
{
//设置本地语音音效均衡
int result = rtcEngine.SetLocalVoiceEqualization(RtcVoiceEqualizationBand.kNERtcVoiceEqualizationBand125, 6);
Debug.Assert(result != (int)RtcErrorCode.kNERtcNoError);
result = rtcEngine.SetLocalVoiceEqualization(RtcVoiceEqualizationBand.kNERtcVoiceEqualizationBand250, 8);
Debug.Assert(result != (int)RtcErrorCode.kNERtcNoError);
result = rtcEngine.SetLocalVoiceEqualization(RtcVoiceEqualizationBand.kNERtcVoiceEqualizationBand500, 6);
Debug.Assert(result != (int)RtcErrorCode.kNERtcNoError);
}
API 参考
方法 | 功能描述 |
---|---|
SetLocalVoicePitch |
设置本地语音音调 |
SetLocalVoiceEqualization |
设置本地语音音效均衡 |