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