美声与音效

最近更新时间:2022-09-20 05:17:40

功能描述

在社交娱乐应用中,通常需要美化人声或为人声增添丰富的音效的需求。例如在语聊房场景中,用户可以选择音效来改变自己的声音。SDK 提供自定义人声效果。

相关名词解释如下:

  • 变声:通过改变用户的音调,使输出的声音在感官上与原始声音不同,实现男声变女声等效果。
  • 混响:通过对声音的特殊处理,制造不同环境的混响效果,让声音如同在音乐厅、大教堂等场景中发出一般。
  • 混响回声:通过对声音的特殊处理,可搭配变声、混响以实现自定义各式各样的声音效果,例如空灵,机器人的声音。
  • 虚拟立体声:通过深度使用双声道技术,虚拟出发音源的各个位置角度,实现立体声、3D 环绕音、听声辩位等效果。

实现方法

开始前请确保已在你的项目中实现基本的实时音视频功能。

自定义人声效果

以下示例代码展示如何把原始人声变成绿巨人霍克的声音:

// 设置音调。可以在 [0.5, 2.0] 范围内设置。取值越小,则音调越低。默认值为 1.0,表示不需要修改音调。
int nRet = rtcEngine.setLocalVoicePitch(0.5);

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

// 原始人声强度,即所谓的 dry signal,取值范围 [-20,10],单位为 dB
nRet = rtcEngine.setLocalVoiceReverb(AUDIO_REVERB_DRY_LEVEL, 10);

// 早期反射信号强度,即所谓的 wet signal,取值范围 [-20,10],单位为 dB
nRet = rtcEngine.setLocalVoiceReverb(AUDIO_REVERB_WET_LEVEL, 7);

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

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

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

API 参考

预设的人声效果:

  • setAudioEffectPreset
  • setAudioEffectParameters
  • setVoiceBeautifierPreset

自定义人声效果:

开发注意事项

  • 本文所有方法对人声的处理效果最佳,不推荐调用这类方法处理含音乐的音频数据。