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)Windows
/* 变声音效预设模式 */
mAliRtcEngine->SetAudioEffectVoiceChangerMode(mode);混响
调用setAudioEffectReverbMode接口实现混响音效,通过空间混响效果营造一定的空间氛围,让人声仿佛从特定的场地中传出。相关枚举值如下
混响模式 | 枚举值 |
关闭混响 |
|
人声I |
|
人声II |
|
澡堂 |
|
明亮小房间 |
|
黑暗小房间 |
|
中等房间 |
|
大房间 |
|
教堂走廊 |
|
Android
/* 混响音效预设模式 */
mAliRtcEngine.setAudioEffectReverbMode(mode);
/* 也可以通过参数配置 */iOS
/* 混响音效预设模式 */
self.rtcEngine?.setAudioEffectReverbMode(mode)Windows
/* 混响音效预设模式 */
mAliRtcEngine->SetAudioEffectReverbMode(mode);
/* 也可以通过参数配置 */美声
通过调用setAudioEffectBeautifyMode接口实现人声美化,支持磁性和清新两种预定模式。
美声模式 | 枚举值 |
磁性 |
|
清新 |
|
Android
/* 美声音效预设模式 */
mAliRtcEngine.setAudioEffectBeautifyMode(mode);
/* 也可以通过参数配置 */iOS
/* 美声音效预设模式 */
self.rtcEngine?.setAudioEffectBeautifyMode(mode)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)