1 功能简介
在直播、语聊房、K 歌房场景中,为增长趣味性和互动性,玩家能够经过变声来搞怪,经过混响烘托气氛,经过立体声使声音更具立体感。ZegoExpress SDK 提供了多种预设的变声、混响、混响回声、立体声效果,开发者能够灵活设置本身想要的声音,若是须要试听,能够启用耳返进行测试。ide
- 变声:经过改变用户的音调,使输出的声音在感官上与原始声音不一样,实现男声变女生等多种效果。
- 混响:经过对声音的特殊处理,制造不一样环境的混响效果,让声音如同在音乐厅、大教堂等场景中发出通常。
- 混响回声:经过对声音的特殊处理,可搭配变声、混响以实现自定义各式各样的声音效果,例如空灵,机器人的声音。
- 虚拟立体声:经过深度使用双声道技术,虚拟出发音源的各个位置角度,实现立体声、3D 环绕音、听声辩位等效果。
您可经过 ZEGO 提供的 音效体验 DEMO 体验 SDK 预设的人声效果。测试
该功能只针对 SDK 采集的声音有效,开发者能够在通话或直播过程当中动态调整变声、混响、混响回声、虚拟立体声。编码
2 示例源码下载
请参考 下载示例源码 获取源码。url
相关源码请查看 “/ZegoExpressExample/Examples/AdvancedAudioProcessing/VoiceChangeReverbStereo” 目录下的文件。spa
3 前提条件
在使用变声/混响/立体声以前,请确保:.net
- 已在项目中集成 ZEGO Express SDK,实现基本的实时音视频功能,详情请参考 快速开始 - 集成 和 快速开始 - 实现流程。
- 已在 ZEGO 控制台 建立项目,并申请有效的 AppID,详情请参考 控制台 - 项目管理 中的“项目信息”。
4 使用步骤
4.1 变声
4.1.1 设置预设变声
调用 setVoiceChangerPreset
方法使用 SDK 预置的变声效果。code
ZegoVoiceChangerPreset
预置的变声效果以下,开发者能够根据须要选择:视频
类型名 | 描述 | 变声类型 |
---|---|---|
None | 无变声 | - |
MenToChild | 男声变童声 | 变声 |
MenToWomen | 男声变女声 | 变声 |
WomenToChild | 女声变童声 | 变声 |
WomenToMen | 女声变男声 | 变声 |
Foreigner | 外国人音效 | 变声 |
OptimusPrime | 擎天柱音效 | 变声 |
Android | 机器人音效 | 变声 |
Ethereal | 空灵音效 | 音色变换 |
MaleMagnetic | 磁性男 | 房间美声 |
FemaleFresh | 清新女 | 房间美声 |
MajorC | C大调电音 | 电音音效 |
MinorA | A小调电音 | 电音音效 |
HarmonicMinor | 和声小调电音 | 电音音效 |
如下示例代码以“男声变童声”为例:blog
[[ZegoExpressEngine sharedEngine] setVoiceChangerPreset:ZegoVoiceChangerPresetMenToChild];
4.1.2 设置自定义变声
若 SDK 预置的变声效果没法知足需求,开发者能够调用 ZegoVoiceChangerParam
方法,经过音高参数 “pitch” 设置自定义变声,该参数取值范围为 [-8.0, 8.0],值越大声音越尖锐,默认值为 “0.0”(即无变声)。项目管理
ZegoVoiceChangerParam *param = [[ZegoVoiceChangerParam alloc] init];
param.pitch = 2.0;
[[ZegoExpressEngine sharedEngine] setVoiceChangerParam:param];
4.2 混响
4.2.1 设置预设混响
调用 setReverbPreset
经过预设枚举设置混响。
ZegoReverbPreset
预置的混响效果以下,开发者能够根据须要选择:
类型名 | 描述 | 混响类型 |
---|---|---|
None | 无 | - |
SoftRoom | 小房间 | 空间塑造 |
LargeRoom | 大房间 | 空间塑造 |
ConcerHall | 音乐厅 | 空间塑造 |
Valley | 山谷 | 空间塑造 |
RecordingStudio | 录音室 | 空间塑造 |
Basement | 地下室 | 空间塑造 |
KTV | KTV | 空间塑造 |
Popular | 流行 | 曲风 |
Rock | 摇滚 | 曲风 |
VocalConcert | 演唱会 | 空间塑造 |
GramoPhone | 留声机 | 空间塑造 |
如下示例代码以“大房间”模式为例:
[[ZegoExpressEngine sharedEngine] setReverbPreset:ZegoReverbPresetLargeRoom];
4.2.2 设置自定义混响
若 SDK 预设的混响类型没法知足需求,开发者能够调用 ZegoReverbAdvancedParam
方法,经过相关参数搭配设置,实现开发者须要的混响效果(详细参数说明请参考 API 文档)。
ZegoReverbAdvancedParam *reverbParam = [[ZegoReverbAdvancedParam alloc] init];
reverbParam.damping = 50.0; // 混响阻尼
reverbParam.reverberance = 50.0; // 余响
reverbParam.roomSize = 50.0; // 房间大小
reverbParam.wetOnly = false;
reverbParam.wetGain = 5.0;
reverbParam.dryGain = 5.0;
reverbParam.toneLow = 80.0;
reverbParam.toneHigh = 80.0;
reverbParam.preDelay = 20.0;
reverbParam.stereoWidth = 0.0;
[[ZegoExpressEngine sharedEngine] setReverbAdvancedParam:reverbParam];
当设置自定义混响参数后,启用混响时设置的预设混响效果则会失效。若是想再次使用 SDK 预设参数,能够使用 setReverbPreset
预设枚举方法进行设置。
4.3 混响回声
调用 setReverbEchoParam
方法,经过相关参数搭配设置,实现开发者须要的混响回声效果(详细参数说明请参考 API 文档)。
如下示例代码以实现“空灵音效”为例:
ZegoReverbEchoParam *echoParamEthereal = [[ZegoReverbEchoParam alloc] init];
echoParamEthereal.inGain = 0.8;
echoParamEthereal.outGain = 1.0;
echoParamEthereal.numDelays = 7;
echoParamEthereal.delay = @[@230, @460, @690, @920, @1150, @1380, @1610];
echoParamEthereal.decay = @[@0.41f, @0.18f, @0.08f, @0.03f, @0.009f, @0.003f, @0.001f];
[[ZegoExpressEngine sharedEngine] setReverbEchoParam:echoParamEthereal];
4.4 虚拟立体声
4.4.1 设置推流音频声道数
若是须要开启虚拟立体声功能,必须在推流前先调用 setAudioConfig
方法设置音频编码声道为 Stereo 双声道(默认为 Mono 单声道)。
此处示例经过预设枚举构造 ZegoAudioConfig
设置为双声道。
ZegoAudioConfig *config = [ZegoAudioConfig configWithPreset:ZegoAudioConfigPresetStandardQualityStereo];
[[ZegoExpressEngine sharedEngine] setAudioConfig:config];
4.4.2 设置虚拟立体声参数
设置音频编码声道为双声道后,调用 enableVirtualStereo
方法,经过 “enable” 参数开启虚拟立体声,并经过 “angle” 参数设置虚拟立体声的声源角度后才有立体声效果,角度范围为 0 ~ 360,通常可设为 90 度(即正前方)。
自从 2.15.0 版本开始,SDK 新增支持全方位虚拟立体声效果,使用方式为将 “angle” 角度参数设置为 “-1”。
此处示例为开启虚拟立体声并将角度设置为 90 度:
[[ZegoExpressEngine sharedEngine] enableVirtualStereo:YES angle:90];
此处示例为开启全方位虚拟立体声:
[[ZegoExpressEngine sharedEngine] enableVirtualStereo:YES angle:-1];
5 API参考列表
方法 | 描述 |
---|---|
setVoiceChangerPreset |
经过预设枚举设置变声 |
ZegoVoiceChangerParam |
变声器参数 |
setReverbPreset |
经过预设枚举设置混响 |
ZegoReverbAdvancedParam |
音频混响高级参数 |
setReverbEchoParam |
设置混响回声效果 |
setAudioConfig |
设置音频配置 |
enableVirtualStereo |
设置虚拟立体声 |