在視頻或者音頻通話過程當中,一方面爲了減少原始聲音數據的傳輸碼率,須要進行音頻壓縮,另外一方面爲了獲得更高質量的音質,須要進行音頻處理。如何處理好這兩方面,保證聲音傳播的高真性,是個技術活兒!
音頻處理的方法主要包括:音頻降噪、自動增益控制、回聲抑制、靜音檢測和生成溫馨噪聲,主要的應用場景是視頻或者音頻通話領域。音頻壓縮包括各類音頻編碼標準,涵蓋 ITU 制定的電信領域音頻壓縮標準(G.7xx 系列)和微軟、Google、蘋果、杜比等公司制定的互聯網領域的音頻壓縮標準。(iLBC、SILK、OPUS、AAC、AC3 等)。git
在進一步瞭解音頻處理和壓縮以前須要知道這些:
(1)音調:泛指聲音的頻率信息,人耳的主觀感覺爲聲音的低沉(低音)或者尖銳(高音)。
(2)響度:聲音的強弱。
(3)採樣率:聲音信息在由模擬信號轉化爲數字信號過程當中的精確程度,採樣率越高,聲音信息保留的越多。
(4)採樣精度:聲音信息在由模擬信號轉化爲數字信號過程當中,表示每個採樣點所須要的字節數,通常爲 16bit(雙字節)表示一個採樣點。
(5)聲道數:相關的幾路聲音數量,常見的如單聲道、雙聲道、5.1 聲道。
(6)音頻幀長:音頻處理或者壓縮所操做的一段音頻信息,常見的是 10ms,20ms,30ms。github
一、噪聲抑制(Noise Suppression)
手機等設備採集的原始聲音每每包含了背景噪聲,影響聽衆的主觀體驗,下降音頻壓縮效率。以 Google 著名的開源框架 WebRTC 爲例,咱們對其中的噪聲抑制算法進行嚴謹的測試,發現該算法能夠對白噪聲和有色噪聲進行良好的抑制。知足視頻或者語音通話的要求。
其餘常見的噪聲抑制算法如開源項目 Speex 包含的噪聲抑制算法,也有較好的效果,該算法適用範圍較 WebRTC 的噪聲抑制算法更加普遍,能夠在任意採樣率下使用。web
二、回聲消除(Acoustic EchoCanceller)
在視頻或者音頻通話過程當中,本地的聲音傳輸到對端播放以後,聲音會被對端的麥克風採集,混合着對端人聲一塊兒傳輸到本地播放,這樣本地播放的聲音包含了本地原來採集的聲音,形成主觀感受聽到了本身的回聲。
回聲產生的原理以下圖所示:算法
以 WebRTC 爲例,其中的回聲抑制模塊建議移動設備採用運算量較小的
AECM 算法,該算法的處理步驟以下圖所示。有興趣的讀者能夠參考
AECM 的源代碼進行研究,這裏不展開介紹了。微信
三、自動增益控制(Auto Gain Control)
手機等設備採集的音頻數據每每有時候響度偏高,有時候響度偏低,形成聲音忽大忽小,影響聽衆的主觀感覺。自動增益控制算法根據預先配置的參數對輸入聲音進行正向/負向調節,使得輸出的聲音適宜人耳的主觀感覺。
以 WebRTC 爲例,它的自動增益控制算法的基本流程圖以下所示。框架
四、靜音檢測(Voice ActivityDetection)
靜音檢測的基本原理:計算音頻的功率譜密度,若是功率譜密度小於閾值則認爲是靜音,不然認爲是聲音。靜音檢測普遍應用於音頻編碼、AGC、AECM 等。ide
五、溫馨噪聲產生(ComfortableNoiseGeneration)
溫馨噪聲產生的基本原理:根據噪聲的功率譜密度,人爲構造噪聲。普遍適用於音頻編解碼器。在編碼端計算靜音時的白噪聲功率譜密度,將靜音時段和功率譜密度信息編碼。在解碼端,根據時間信息和功率譜密度信息,重建隨機白噪聲。
它的應用場景:徹底靜音時,爲了創造溫馨的通話體驗,在音頻後處理階段添加隨機白噪聲。性能
音頻的另外一個普遍應用的領域:音頻編碼。
首先看一下當前應用最普遍的一些音頻編碼標準,以下圖所示。測試
圖中橫軸是音頻編碼碼率,縱軸是音頻頻帶信息。從圖中咱們能夠得到以下幾方面信息。
(1)對於固定碼率的編碼標準,如 G.711 或者 G.722,圖中採用單點表示,說明這兩個編碼標準是固定碼率編碼標準。其餘如 Opus、Speex,它們的曲線是連續的,說明這類編碼標準是可變碼率的編碼標準。
(2)從頻帶方面看,G.7十一、G.72二、AMR 和 iLBC 等標準適用於narrowband(8khz 採樣率)和 wideband(16khz 採樣率)範圍,針對普通的語音通話場景。AAC 和 MP3 適用於 fullband(48khz採樣率)範圍,針對特殊的音樂場景。而 Opus 適用於整個頻帶,能夠進行最大範圍的動態調節,適用範圍最廣。
(3)從標準的收費狀況看,適用於互聯網傳輸的 iLBC、Speex 和 Opus都是免費且開源的;適用於音樂場景的 MP3 和 AAC,須要 license 受權,並且不開源。編碼
隨着音頻處理和壓縮技術的不斷髮展,效果更好、適用範圍更廣、性能更高的算法和新的技術必將不斷涌現,若是你有好的技術或者分享,歡迎關注網易 MC 官方博客以及微信公衆號:**
關注更多技術乾貨內容: 網易雲信博客
歡迎關注 網易雲信 GitHub
歡迎關注 網易雲信官網官網微信公衆號: