在直播、語聊房、K 歌房場景中,為增加趣味性和互動性,玩家可以通過變聲來搞怪,通過混響烘托氣氛,通過立體聲使聲音更具立體感。ZegoExpress SDK 提供了多種預設的變聲、混響、混響回聲、立體聲效果,開發者可以靈活設置自己想要的聲音,如果需要試聽,可以啟用耳返進行測試。 ...
1 功能簡介
在直播、語聊房、K 歌房場景中,為增加趣味性和互動性,玩家可以通過變聲來搞怪,通過混響烘托氣氛,通過立體聲使聲音更具立體感。ZegoExpress SDK 提供了多種預設的變聲、混響、混響回聲、立體聲效果,開發者可以靈活設置自己想要的聲音,如果需要試聽,可以啟用耳返進行測試。
- 變聲:通過改變用戶的音調,使輸出的聲音在感官上與原始聲音不同,實現男聲變女生等多種效果。
- 混響:通過對聲音的特殊處理,製造不同環境的混響效果,讓聲音如同在音樂廳、大教堂等場景中發出一般。
- 混響回聲:通過對聲音的特殊處理,可搭配變聲、混響以實現自定義各式各樣的聲音效果,例如空靈,機器人的聲音。
- 虛擬立體聲:通過深度使用雙聲道技術,虛擬出發音源的各個位置角度,實現立體聲、3D 環繞音、聽聲辯位等效果。
您可通過 ZEGO 提供的 音效體驗 DEMO 體驗 SDK 預設的人聲效果。
該功能只針對 SDK 採集的聲音有效,開發者可以在通話或直播過程中動態調整變聲、混響、混響回聲、虛擬立體聲。
2 示例源碼下載
請參考 下載示例源碼 獲取源碼。
相關源碼請查看 “/ZegoExpressExample/Examples/AdvancedAudioProcessing/VoiceChangeReverbStereo” 目錄下的文件。
3 前提條件
在使用變聲/混響/立體聲之前,請確保:
- 已在項目中集成 ZEGO Express SDK,實現基本的實時音視頻功能,詳情請參考 快速開始 - 集成 和 快速開始 - 實現流程。
- 已在 ZEGO 控制台 創建項目,並申請有效的 AppID,詳情請參考 控制台 - 項目管理 中的“項目信息”。
4 使用步驟
4.1 變聲
4.1.1 設置預設變聲
調用 setVoiceChangerPreset
方法使用 SDK 預置的變聲效果。
ZegoVoiceChangerPreset
預置的變聲效果如下,開發者可以根據需要選擇:
類型名 | 描述 | 變聲類型 |
---|---|---|
None | 無變聲 | - |
MenToChild | 男聲變童聲 | 變聲 |
MenToWomen | 男聲變女聲 | 變聲 |
WomenToChild | 女聲變童聲 | 變聲 |
WomenToMen | 女聲變男聲 | 變聲 |
Foreigner | 外國人音效 | 變聲 |
OptimusPrime | 擎天柱音效 | 變聲 |
Android | 機器人音效 | 變聲 |
Ethereal | 空靈音效 | 音色變換 |
MaleMagnetic | 磁性男 | 房間美聲 |
FemaleFresh | 清新女 | 房間美聲 |
MajorC | C大調電音 | 電音音效 |
MinorA | A小調電音 | 電音音效 |
HarmonicMinor | 和聲小調電音 | 電音音效 |
以下示例代碼以“男聲變童聲”為例:
[[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 |
設置虛擬立體聲 |
獲取Demo
獲取本文的Demo、開發文檔、技術支持。
獲取SDK的商務活動、熱門產品。
註冊即構ZEGO開發者帳號,快速開始。