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