在直播、语聊房、K歌房场景中,为增加产品的趣味性和互动性,玩家用变声来搞怪,用混响烘托气氛,ZEGO SDK 提供多种预置的变声和混响与虚拟立体声效果,可以灵活定制自己想要的声音,比如设置音调、虚拟立体声和混响等,变声、混响、立体声只针对采集的声音有效。
相关功能的 Demo 源码,请联系 ZEGO 技术支持获取。
参考文档:快速开始 - 实现流程 的 “3.1 创建引擎”。
通过改变用户的音调,使输出的声音在感官上与原始声音不同,实现特定的变声效果。
成功初始化 SDK 之后,调用 com.zego.zegoavkit2.audioprocessing 包下的 SetVoicePreset 来设置变声器参数,变声只针对采集的声音有效,推流成功后动态设置不同的变声参数都会生效。如果需要试听,可以启用耳返来测试变声效果。
注意:此接口必须在初始化 SDK 之后调用。预设变声接口与设置变声参数接口不能混用。
接口原型:
bool SetVoicePreset(ZegoVoiceChangerType type);
参数:
type:多种变音的枚举值。
备注:
SDK 会内置一些预置参数,预设值对应的语音变声效果如下:
| 类型名 | 描述 | 变声类型 |
|---|---|---|
| CHANGER_OFF | 恢复默认原声 | - |
| OPTIMUSP_RIME | 汽车人 | 变声 |
| ROBOT | AI 机器人 | 变声 |
| FOREIGNER | 外国人 | 变声 |
| MEN_TO_CHILD | 男声变童声 | 变声 |
| MEN_TO_WOMEN | 男声变女声 | 变声 |
| WOMEN_TO_CHILD | 女声变童声 | 变声 |
| WOMEN_TO_MEN | 女声变男声 | 变声 |
| MALE_MAGNETIC | 磁性男声 | 房间美声 |
| FEMALE_FRESH | 清新女声 | 房间美声 |
| FEMALE_ENERGETIC | 女活力 | 房间美声 |
| CLEAR | 清澈 | 音色变换 |
| HIGHLY_RESONANT | 高亢 | 音色变换 |
| LOUD_CLEAR | 嘹亮 | 音色变换 |
| FULLNESS | 饱满 | 音色变换 |
| DICTIONARIES | 假音 | 音色变换 |
| ROUNDNESS | 圆润 | 音色变换 |
| MUFFLED | 低沉 | 音色变换 |
| RICHNESS | 浑厚 | 音色变换 |
| ELUSIVE | 空灵 | 音色变换 |
示例代码如下:
// 初始化 SDK 等操作
...
// 预设变声配置。
// 变声音效只针对采集的声音有效,
// 变声器类型参考 ZegoVoiceChangerType type
//
// 调用时机:初始化SDK之后
ZegoAudioProcessing.setVoicePreset(type);
成功初始化 SDK 之后,调用 com.zego.zegoavkit2.audioprocessing 包下的 setVoiceChangerParam 来设置变声器参数,变声只针对采集的声音有效,推流成功后动态设置不同的变声参数都会生效。如果需要试听,可以启用耳返来测试变声效果。
注意:此接口必须在初始化 SDK 之后调用。
接口原型:
public static boolean setVoiceChangerParam(float param)
参数:
param:默认变声器参数是 0.0,取值范围 [-8.0, 8.0]。
备注:
SDK 会内置一些预置参数,可参考 ZegoVoiceChangerCategory ,预设值对应的语音变声效果如下:
| 类型名 | 描述 |
|---|---|
| MEN_TO_CHILD | 男声变童声 |
| MEN_TO_WOMEN | 男声变女声 |
| NONE | 无变声 |
| WOMEN_TO_CHILD | 女声变童声 |
| WOMEN_TO_MEN | 女声变男声 |
示例代码如下:
...
// 初始化 SDK 等操作
...
// 设置变声器参数。
// 变声音效只针对采集的声音有效, 参数取值范围[-8.0, 8.0],
// 几种典型的变声效果参考 ZegoAudioProcessing.ZegoVoiceChangerCategory
//
// 调用时机:初始化SDK之后
ZegoAudioProcessing.setVoiceChangerParam(param);
通过对声音的特殊处理,制造不同环境的混响效果,让声音如同在音乐厅、大教堂等场景中发出一般,混响只针对采集的声音有效,推流成功后动态设置不同的混响参数都会生效。如果需要试听,可以启用耳返来测试混响效果。
说明:
成功初始化 SDK 之后,调用 com.zego.zegoavkit2.audioprocessing.ZegoAudioProcessing 包下的 setReverbPreset 来启用混响。
注意:此接口必须在初始化 SDK 之后调用。预设混响接口与启用混响接口不能混用。
接口原型:
public static boolean setReverbPreset(ZegoVoiceReverbType type)
参数:
type:ZegoVoiceReverbType 预设的混响效果,枚举值预置参数如下:
| 类型名 | 描述 | 混响类型 |
|---|---|---|
| OFF | 关闭混响效果 | - |
| CONCERT_HALL | 音乐厅 | 空间塑造 |
| LARGE_AUDITORIUM | 大教堂 | 空间塑造 |
| SOFT_ROOM | 房间 | 空间塑造 |
| WARM_CLUB | 俱乐部 | 空间塑造 |
| BASEMENT | 地下室 | 空间塑造 |
| KTV | KTV | 空间塑造 |
| RECORDING_STUDIO | 录音棚 | 空间塑造 |
| VOCAL_CONCERT | 演唱会 | 空间塑造 |
| MISTY | 飘渺(空旷) | 空间塑造 |
| THREE_DIMENSIONAL_VOICE | 3D人声 | 空间塑造 |
| GRAMOPHONE | 留声机 | 空间塑造 |
| POPULAR | 流行 | 曲风 |
| HIPHOP | 嘻哈 | 曲风 |
| ROCK | 摇滚 | 曲风 |
示例代码如下:
...
// 初始化 SDK 等操作
...
// 启用混响
ZegoAudioProcessing.setReverbPreset(ZegoVoiceReverbType type); // 此处设置混响枚举值由您定义
成功初始化 SDK 之后,调用 com.zego.zegoavkit2.audioprocessing 包下的 enableReverb 来启用混响。
接口原型:
public static boolean enableReverb(boolean enable, ZegoAudioReverbMode mode)
参数:
enable:true 为启用混响,false 为关闭混响,默认为 false。
mode:SDK 预置参数,SDK 预置参数如下:
| 类型名 | 描述 |
|---|---|
| CONCERT_HALL | 音乐厅 |
| LARGE_AUDITORIUM | 大教堂 |
| SOFT_ROOM | 房间 |
| WARM_CLUB | 俱乐部 |
示例代码如下:
...
// 初始化 SDK 等操作
...
// 启用混响
ZegoAudioProcessing.enableReverb(true, ZegoAudioReverbMode.CONCERT_HALL); // 此处设置混响的效果是音乐厅
若 SDK 预置的混响参数不满足需求,可在成功初始化 SDK 之后,调用 com.zego.zegoavkit2.audioprocessing.ZegoAudioAdvancedReverbParam 包下的 setAdvancedReverbParam 来自定义混响参数。
接口原型:
ZegoAudioProcessing.setAdvancedReverbParam(boolean, ZegoAudioAdvancedReverbParam)
参数:
boolean:设置成功的状态
ZegoAudioAdvancedReverbParam:设置到 SDK 的混响参数。setAdvancedReverbParam 包含以下参数:
| 参数名 | 描述 |
|---|---|
| dryGain | 干信号增益 Dry Gain (dB):[-20,10] |
| hfDamping | 阻尼控制 Damping (%):[0,100] |
| preDelay | 初始延迟时间 Pre-delay (ms):[0~200] |
| reverberance | 余响大小 Reverberance (%):[0,100] |
| roomSize | 房间大小 Room Size (%): [0,100].Sets the size of the simulated room. |
| stereoWidth | 立体声宽度 Stereo Width (%): [0,100] |
| toneHigh | 高频衰减 ToneHigh(%):[0,100].Setting this control below 100% reduces the high frequency components of the reverberation, creating a less "bright" effect. |
| toneLow | 低频衰减 ToneLow(%):[0,100]. |
| wetGain | 湿信号增益 Wet Gain (dB):[-20,10] |
| wetOnly | 只有湿信号 Wet Only |
备注:
当设置自定义 SDK 混响参数后,启用混响时设置的预置混响参数就会失效。如果想要再次使用 SDK 预设参数,可重新调用 enableReverb。
若 SDK 预置的混响参数不满足需求,可在成功初始化 SDK 之后,调用 com.zego.zegoavkit2.audioprocessing 包下的 setReverbParam 来自定义混响参数。
接口原型:
public static boolean setReverbParam(ZegoAudioReverbParam param)
参数:
param:设置到 SDK 的混响参数。setAdvancedReverbParam 包含以下参数:
| 参数名 | 描述 |
|---|---|
| damping | 混响阻尼,取值范围[0.0, 2.0],控制混响的衰减程度,阻尼越大,衰减越大 |
| dryWetRatio | 干湿比,取值范围 大于等于 0.0。 控制混响与直达声和早期反射声之间的比例,干(dry)的部分默认定为1,当干湿比设为较小时,湿(wet)的比例较大,此时混响较强 |
| reverberance | 余响,取值范围[0.0, 0.5],用于控制混响的拖尾长度 |
| roomSize | 房间大小,取值范围[0.0, 1.0],用于控制产生混响“房间”的大小,房间越大,混响越强 |
备注:
当设置自定义 SDK 混响参数后,启用混响时设置的预置混响参数就会失效。如果想要再次使用 SDK 预设参数,可重新调用 enableReverb。
示例代码如下:
...
// 初始化 SDK 等操作
...
// 设置混响参数
ZegoAudioReverbParam param = new ZegoAudioReverbParam();
param.damping = 1.0; // 此处设置混响阻尼为 1.0
param.dryWetRatio = 0.5; // 此处设置干湿比为 0.5
param.reverberance = 0.2; // 此处设置余响为 0.2
param.roomSize = 0.5; // 此处设置房间大小为 0.5
ZegoAudioProcessing.setReverbParam(param);
ZegoAudioProcessing.enableReverb(true, ZegoAudioReverbMode.CONCERT_HALL);
通过深度使用双声道技术,虚拟出发音源的各个位置角度,实现立体声、3D环绕音、听声辩位等效果,推流成功后动态设置不同的虚拟立体声参数都会生效。如果需要试听,可以启用耳返来测试虚拟立体声效果。
成功初始化 SDK 之后,如需开启虚拟立体声,需要先启用双声道,开发者可调用 com.zego.zegoliveroom 包下的 setAudioChannelCount 函数开启双声道,之后再推流。
接口原型:
public void setAudioChannelCount(int count)
参数:
count:声道数,1 或 2,默认为 1(单声道)。
备注:
setLatencyMode 设置为 ZegoConstants.LatencyMode#Normal、 ZegoConstants.LatencyMode#Normal2、ZegoConstants.LatencyMode#Low3 三者之一才能设置双声道。 示例代码如下:
...
// 初始化 SDK 等操作
...
// 设置成双声道推流
zegoliveRoom.setAudioChannelCount(2);
// 开始推流等操作
成功初始化 SDK 之后,调用 com.zego.zegoavkit2.audioprocessing 包下的 enableVirtualStereo 来自定义虚拟立体声声源位置。
接口原型:
public static boolean enableVirtualStereo(boolean enable, int angle)
参数:
enable:true 开启虚拟立体声,false 关闭虚拟立体声。
angle:虚拟立体声中声源的角度,范围为 0~180,90 为正前方,0 和 180 分别对应最右边和最左边,SDK 默认为 90。
备注:
initSDK 之后调用。示例代码如下:
...
// 初始化 SDK 等操作
...
// 自定义虚拟立体声参数
zegoliveRoom.enableVirtualStereo(true, 90); // 此处设置的声源位置为 90°
| 方法 | 描述 |
|---|---|
| setVoicePreset | 预设变声配置 |
| setReverbPreset | 设置预设的音频混响效果 |
| setAdvancedReverbParam | 设置音频混响参数以获得不同的混响效果 |
| setVoiceChangerParam | 设置变声参数 |
| enableReverb | 启用混响开关 |
| setReverbParam | 设置自定义音频混响参数 |
| setAudioChannelCount | 设置推流音频声道数 |
| enableVirtualStereo | 设置虚拟立体声 |

联系我们
文档反馈