文档中心
Old_Live_Room 互动视频
文档中心
体验 App
SDK 中心
API 中心
常见问题
代码市场
进入控制台
立即注册
登录
中文站 English
  • 文档中心
  • 互动视频
  • 音频进阶
  • 变声
  • 混响
  • 立体声

变声/混响/立体声

更新时间:2022-10-11 15:53

1 功能简介

在直播、语聊房、K歌房场景中,为增加产品的趣味性和互动性,玩家用变声来搞怪,用混响烘托气氛,ZEGO SDK 提供多种预置的变声和混响与虚拟立体声效果,可以灵活定制自己想要的声音,比如设置音调、虚拟立体声和混响等,变声、混响、立体声只针对采集的声音有效。

相关功能的 Demo 源码,请联系 ZEGO 技术支持获取。

2 初始化 SDK

参考文档:快速开始 - 实现流程 的 “3.1 创建引擎”。

3 变声

通过改变用户的音调,使输出的声音在感官上与原始声音不同,实现特定的变声效果。

  • 开发者可通过设置预设变声或设置变声参数实现特定的变声效果。
  • 推荐通过设置预设变声实现变声效果,设置变声参数的接口即将废弃。

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);

    3.2 设置变声参数

成功初始化 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);

4 混响

通过对声音的特殊处理,制造不同环境的混响效果,让声音如同在音乐厅、大教堂等场景中发出一般,混响只针对采集的声音有效,推流成功后动态设置不同的混响参数都会生效。如果需要试听,可以启用耳返来测试混响效果。

说明:

  • 开发者可通过预设混响、启用混响、高级自定义混响参数、自定义混响参数4种方式实现混响效果。
  • 推荐通过设预设混响和高级自定义混响参数实现混响效果,启用混响和自定义混响参数的接口即将废弃。

4.1 预设混响

成功初始化 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); // 此处设置混响枚举值由您定义

4.2 启用混响

成功初始化 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); // 此处设置混响的效果是音乐厅

4.3 高级自定义混响参数

若 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。

4.4 自定义混响参数

若 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); 

5 虚拟立体声

通过深度使用双声道技术,虚拟出发音源的各个位置角度,实现立体声、3D环绕音、听声辩位等效果,推流成功后动态设置不同的虚拟立体声参数都会生效。如果需要试听,可以启用耳返来测试虚拟立体声效果。

5.1 设置推流通道数

成功初始化 SDK 之后,如需开启虚拟立体声,需要先启用双声道,开发者可调用 com.zego.zegoliveroom 包下的 setAudioChannelCount 函数开启双声道,之后再推流。

  • 接口原型:

    public void setAudioChannelCount(int count)

  • 参数:

    count:声道数,1 或 2,默认为 1(单声道)。

  • 备注:

    1. 必须在推流前设置。
    2. 若 App 有设置延迟模式,setLatencyMode 设置为 ZegoConstants.LatencyMode#Normal、 ZegoConstants.LatencyMode#Normal2、ZegoConstants.LatencyMode#Low3 三者之一才能设置双声道。
  • 示例代码如下:

...
// 初始化 SDK 等操作
...
// 设置成双声道推流
zegoliveRoom.setAudioChannelCount(2); 
// 开始推流等操作

5.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。

  • 备注:

    1. 必须在 initSDK 之后调用。
    2. 必须要先设置双声道后再推流,设置虚拟立体声参数后才有虚拟立体声效果,请参考 6.1 启用双声道。
  • 示例代码如下:

    ...
    // 初始化 SDK 等操作
    ...
    // 自定义虚拟立体声参数
    zegoliveRoom.enableVirtualStereo(true, 90); // 此处设置的声源位置为 90°

6 API参考列表

方法 描述
setVoicePreset 预设变声配置
setReverbPreset 设置预设的音频混响效果
setAdvancedReverbParam 设置音频混响参数以获得不同的混响效果
setVoiceChangerParam 设置变声参数
enableReverb 启用混响开关
setReverbParam 设置自定义音频混响参数
setAudioChannelCount 设置推流音频声道数
enableVirtualStereo 设置虚拟立体声

7 相关文档

  • 快速开始-初始化SDK
  • 快速开始-登录房间
  • 快速开始-推流
  • 快速开始-拉流
本篇目录
  • 免费试用
  • 提交工单
    咨询集成、功能及报价等问题
    电话咨询
    400 1006 604
    咨询客服
    微信扫码,24h在线

    联系我们

  • 文档反馈