设置变声、混响、美声

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接口,设置变声效果,使人声变为老人、男孩、女孩等模式。每种音效对应一个枚举值,变声模式如下:

变声音效模式

枚举值

关闭

AliRtcSdk_AudioEffect_Voice_Changer_OFF

老人

AliRtcSdk_AudioEffect_Voice_Changer_Oldman

男孩

AliRtcSdk_AudioEffect_Voice_Changer_Babyboy

女孩

AliRtcSdk_AudioEffect_Voice_Changer_Babygirl

机器人

AliRtcSdk_AudioEffect_Voice_Changer_Robot

大魔王

AliRtcSdk_AudioEffect_Voice_Changer_Daimo

KTV

AliRtcSdk_AudioEffect_Voice_Changer_Ktv

回声

AliRtcSdk_AudioEffect_Voice_Changer_Echo

方言

AliRtcSdk_AudioEffect_Voice_Changer_Dialect

怒吼

AliRtcSdk_AudioEffect_Voice_Changer_Howl

电音

AliRtcSdk_AudioEffect_Voice_Changer_Electronic

留声机

AliRtcSdk_AudioEffect_Voice_Changer_Phonograph

Android

/* 变声音效预设模式 */
mAliRtcEngine.setAudioEffectVoiceChangerMode(mode);

iOS

/* 变声音效预设模式 */
self.rtcEngine?.setAudioEffectVoiceChangerMode(mode)

Windows

/* 变声音效预设模式 */
mAliRtcEngine->SetAudioEffectVoiceChangerMode(mode);

混响

调用setAudioEffectReverbMode接口实现混响音效,通过空间混响效果营造一定的空间氛围,让人声仿佛从特定的场地中传出。相关枚举值如下

混响模式

枚举值

关闭混响

AliRtcSdk_AudioEffect_Reverb_Off

人声I

AliRtcSdk_AudioEffect_Reverb_Vocal_I

人声II

AliRtcSdk_AudioEffect_Reverb_Vocal_II

澡堂

AliRtcSdk_AudioEffect_Reverb_Bathroom

明亮小房间

AliRtcSdk_AudioEffect_Reverb_Small_Room_Bright

黑暗小房间

AliRtcSdk_AudioEffect_Reverb_Small_Room_Dark

中等房间

AliRtcSdk_AudioEffect_Reverb_Medium_Room

大房间

AliRtcSdk_AudioEffect_Reverb_Large_Room

教堂走廊

AliRtcSdk_AudioEffect_Reverb_Church_Hall

Android

/* 混响音效预设模式 */
mAliRtcEngine.setAudioEffectReverbMode(mode);
/* 也可以通过参数配置 */

iOS

/* 混响音效预设模式 */
self.rtcEngine?.setAudioEffectReverbMode(mode)

Windows

/* 混响音效预设模式 */
mAliRtcEngine->SetAudioEffectReverbMode(mode);
/* 也可以通过参数配置 */

美声

通过调用setAudioEffectBeautifyMode接口实现人声美化,支持磁性和清新两种预定模式。

美声模式

枚举值

磁性

AliRtcSdk_AudioEffect_Beautify_Magnetic

清新

AliRtcSdk_AudioEffect_Beautify_Fresh

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之后调用

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