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