在直播、语聊房、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 | 设置虚拟立体声 |
联系我们
文档反馈