ARTC SDK 提供变声、混响、美声等实时音效功能。您可以在音视频通话中调用 API,为本地人声添加丰富的音效,提升互动娱乐体验。
功能介绍
开发者可通过调用相关API快速启用相关音效:
-
变声:改变人声,实现老人、男孩、女孩等声音音效。
-
混响:通过空间混响效果营造一定的空间氛围,让人声仿佛从特定的场地中传出。
-
美声:将人声的音色朝特定的方向微调,例如磁性、清新。
-
自定义人声效果:除了上面预设的音效模式外,您还可以调用相关接口调整人声的音调、混响和均衡效果来实现自定义人声效果。
示例源码
ARTC 提供了开源示例项目供您参考,您可以前往下载或查看其中的代码,示例代码:
Android端设置变声、混响、美声:Android/ARTCExample/BasicUsage/src/main/java/com/aliyun/artc/api/basicusage/VoiceChange/VoiceChangeActivity.java
iOS端设置变声、混响、美声:iOS/ARTCExample/BasicUsage/VoiceChange/VoiceChangeVC.swift
前提条件
在设置视频配置之前,请确保达成以下条件:
功能实现
本节将介绍如何在您的项目中调用相关接口以实现各种音效
变声
调用setAudioEffectVoiceChangerMode接口,设置变声效果,使人声变为老人、男孩、女孩等模式。每种音效对应一个枚举值,变声模式如下:
|
变声音效模式 |
枚举值 |
|
关闭 |
|
|
老人 |
|
|
男孩 |
|
|
女孩 |
|
|
机器人 |
|
|
大魔王 |
|
|
KTV |
|
|
回声 |
|
|
方言 |
|
|
怒吼 |
|
|
电音 |
|
|
留声机 |
|
Android
/* 变声音效预设模式 */
mAliRtcEngine.setAudioEffectVoiceChangerMode(mode);
iOS
/* 变声音效预设模式 */
self.rtcEngine?.setAudioEffectVoiceChangerMode(mode)
Mac
/* 变声音效预设模式 */
[self.rtcEngine setAudioEffectVoiceChangerMode:mode];
Windows
/* 变声音效预设模式 */
mAliRtcEngine->SetAudioEffectVoiceChangerMode(mode);
混响
调用setAudioEffectReverbMode接口实现混响音效,通过空间混响效果营造一定的空间氛围,让人声仿佛从特定的场地中传出。相关枚举值如下
|
混响模式 |
枚举值 |
|
关闭混响 |
|
|
人声I |
|
|
人声II |
|
|
澡堂 |
|
|
明亮小房间 |
|
|
黑暗小房间 |
|
|
中等房间 |
|
|
大房间 |
|
|
教堂走廊 |
|
Android
/* 混响音效预设模式 */
mAliRtcEngine.setAudioEffectReverbMode(mode);
/* 也可以通过参数配置 */
iOS
/* 混响音效预设模式 */
self.rtcEngine?.setAudioEffectReverbMode(mode)
Mac
/* 混响音效预设模式 */
[self.engine setAudioEffectReverbMode:selectMode];
Windows
/* 混响音效预设模式 */
mAliRtcEngine->SetAudioEffectReverbMode(mode);
/* 也可以通过参数配置 */
美声
通过调用setAudioEffectBeautifyMode接口实现人声美化,支持磁性和清新两种预定模式。
|
美声模式 |
枚举值 |
|
磁性 |
|
|
清新 |
|
Android
/* 美声音效预设模式 */
mAliRtcEngine.setAudioEffectBeautifyMode(mode);
/* 也可以通过参数配置 */
iOS
/* 美声音效预设模式 */
self.rtcEngine?.setAudioEffectBeautifyMode(mode)
Mac
/* 美声音效预设模式 */
[self.engine setAudioEffectBeautifyMode:selectMode];
Windows
/* 美声音效预设模式 */
mAliRtcEngine->SetAudioEffectBeautifyMode(mode);
/* 也可以通过参数配置 */
自定义人声效果
如果上面的预设音效无法满足您的要求,可以调用下面的接口来调整人声的音效、均衡和混响参数以实现自定义人声效果。
相关接口如下:
-
setAudioEffectPitchValue(value):设置变调参数。-
value:范围 [0.5-2.0],1.0 表示音调不变,小于 1.0 表示音调降低,大于 1.0 表示音调升高。
-
-
setAudioEffectReverbParamType(type, value):设置混响音效参数,需要在setAudioEffectReverbMode之后调用。-
type:混响参数类型,请参考AliRtcAudioEffectReverbParamType。 -
value:混响参数值,不同类型的混响参数有不同的取值范围,详情请参考AliRtcAudioEffectReverbParamType。
-
-
setAudioEffectEqualizationParam:设置均衡器参数,需要在setAudioEffectBeautifyMode之后调用。-
bandIndex:均衡器段数,取值 [0-9] 表示[31,62,125,250,500,1000,2000,4000,8000,16000] Hz 共 10 个频段。 -
gain:均衡器增益值(-15dB 到 15dB,默认为 0)。
-
Android
// 设置音调 范围[0.5,2.0],1.0表示音调不变,小于1.0表示音调降低,大于1.0表示音调升高
mAliRtcEngine.setAudioEffectPitchValue(1.5);
// 设置混响参数示例,需要在setAudioEffectReverbMode之后调用
mAliRtcEngine.setAudioEffectReverbMode(AliRtcEngine.AliRtcAudioEffectReverbMode.AliRtcSdk_AudioEffect_Reverb_Large_Room);
mAliRtcEngine.setAudioEffectReverbParamType(AliRtcEngine.AliRtcAudioEffectReverbParamType.AliRtcSdk_AudioEffect_Reverb_Room_Size, 50);
// 设置美声参数示例
mAliRtcEngine.setAudioEffectBeautifyMode(AliRtcEngine.AliRtcAudioEffectBeautifyMode.AliRtcSdk_AudioEffect_Beautify_Magnetic);
mAliRtcEngine.setAudioEffectEqualizationParam(AliRtcEngine.AliRtcAudioEffectEqualizationBandFrequency.AliRtcSdk_AudioEffect_EqualizationBand1K, 5);
iOS
// 设置音调 范围[0.5,2.0],1.0表示音调不变,小于1.0表示音调降低,大于1.0表示音调升高
let pitch = 1.5
self.rtcEngine?.setAudioEffectPitchValue(pitch)
// 设置混响参数示例,需要在setAudioEffectReverbMode之后调用
self.rtcEngine?.setAudioEffectReverbMode(.large_Room)
self.rtcEngine?.setAudioEffectReverbParamType(.room_Size, value: 50)
// 设置美声参数示例
self.rtcEngine?.setAudioEffectBeautifyMode(.vigorous)
self.rtcEngine?.setAudioEffectEqualizationParam(.band1K, gain: 5)
Mac
// 设置音调 范围[0.5,2.0],1.0表示音调不变,小于1.0表示音调降低,大于1.0表示音调升高
int pitch = 1.5;
[self.rtcEngine setAudioEffectPitchValue:pitch];
// 设置混响参数示例,需要在setAudioEffectReverbMode之后调用
[self.rtcEngine setAudioEffectReverbMode:AliRtcAudioEffectReverb_Large_Room];
[self.rtcEngine setAudioEffectReverbParamType:AliRtcAudioEffectReverb_Room_Size value:50.0];
// 设置美声参数示例
[self.rtcEngine setAudioEffectBeautifyMode:AliRtcAudioEffectBeautify_Vigorous];
[self.rtcEngine setAudioEffectEqualizationParam:AliRtcAudioEffectEqualizationBand1K gain:5.0];
Windows
// 设置音调 范围[0.5,2.0],1.0表示音调不变,小于1.0表示音调降低,大于1.0表示音调升高
mAliRtcEngine->SetAudioEffectPitchValue(1.5);
// 设置混响参数示例,需要在SetAudioEffectReverbMode之后调用
mAliRtcEngine->SetAudioEffectReverbMode(AliEngineAudioEffectReverbMode::AliEngineAudioEffectReverb_Large_Room);
mAliRtcEngine->SetAudioEffectReverbParamType(AliEngineAudioEffectReverbParamType::AliEngineAudioEffectReverbParamType_Room_Size, 50.0f);
// 设置美声参数示例
mAliRtcEngine->SetAudioEffectBeautifyMode(AliEngineAudioEffectBeautifyMode::AliEngineAudioEffectBeautify_Vigorous);
mAliRtcEngine->SetAudioEffectEqualizationParam(AliEngineAudioEffectEqualizationBandFrequency::AliEngineAudioEffectEqualizationBandFrequency_Band1K, 5.0f);