海思多媒體(MPP)開發(7)——音頻模塊(AUDIO)

(一)前言:

AUDIO 模塊包括音頻輸入、音頻輸出、音頻編碼、音頻解碼四個子模塊。音頻輸入和輸出模塊通過對 Hi35xx 芯片音頻接口的控制實現音頻輸入輸出功能。

音頻編碼和解碼模塊提供對 G711、G726、ADPCM 格式的音頻編解碼功能,並支持錄製和播放 LPCM 格式的原始音頻文件。

(二)音頻接口:

nvp6134:

  • nvp6134支持4路聲音和1路麥克風輸入,其實也就是將模擬聲音信號轉換爲數字信號,官方稱之爲錄音模式。
  • 另外還支持1路回放模式,所謂回放模式,也就是將數字音頻數據輸入nvp6134,通6134將數字信號轉換爲模擬音頻信號輸出。
  • nvp6134支持SSP/DSP/I2S Interface (Master/Slave mode)

Hi3521A:

  • 3 個單向 I2S/PCM 接口
  • − 2 個輸入,支持 16 路複合輸入
  • − 1 個輸出,支持雙聲道(2 路複合)輸出
  • 支持 16bit 語音輸入和輸出

從上面可以看出,NVP6134+Hi3521的這種搭配方式只能使用I2S來進行數據通信。在調試的時候需要將nvp6134與海思的AI(音頻輸入)模塊相對應上。一個爲master模式,另外一個則需要slave模式。


(三)聲音質量增強(Voice Quality Enhancement)

Hi35xx 的音頻輸入和輸出模塊支持對音頻數據進行聲音質量增強(Voice Quality Enhancement)處理。功能包含回聲抵消、語音降噪、自動增益、高通濾波、錄音,噪聲消除、均衡器六個處理模塊

AEC

AEC 爲回聲抵消(Acoustic Echo Cancellation)模塊,主要工作在需要進行去除回聲的場景下:如 IPC 對講,遠端語音數據在 AO 設備上播放,此時在本地通過 MIC 採集語音數據,它支持消除錄製的語音數據中的 AO 設備播放的聲音(回聲)。

ANR

ANR 爲語音降噪(Audio Noise Reduction)模塊,主要工作在需要去除外界噪聲,保留語音輸入的場景下。

與 RNR 算法比起來,ANR 更講究噪聲處理的乾淨程度。ANR 會濾除一些環境聲音,主要保留語音數據,並會帶來一定的細節丟失。所以 ANR 算法更適用於 NVR 和 IPC場景。在這兩個場景下,我們更希望能夠着重保留人聲,濾除其他噪聲。

RNR

RNR 爲錄音噪聲消除(Record Noise Reduction)模塊,主要工作在需要去除環境噪聲,但保留小信號輸入的場景下。

與 ANR 算法比起來,RNR 更講究細節輸入(小信號)的保留度,RNR 會在降噪的同時保留小信號的輸入,所以降噪力度會低一點,但能更多的保留現場聲音,真實還原場景,適用於運動 DV 場景。

HPF

HPF 爲高通濾波(high-pass filte)模塊,主要負責去除低頻噪聲。

低頻噪聲來源經常爲硬件噪聲或工頻噪聲,表現爲轟轟轟類不舒適的聲音。我們可以通過使用頻譜分析單板在安靜環境下錄製的碼流,來確定是否需要加入該模塊。如果低頻噪聲不是非常明顯,並且客戶需要保留低頻部分的音源,則不建議加入該模塊。

推薦配置參數爲 AUDIO_HPF_FREQ_120 或 AUDIO_HPF_FREQ_150。

AGC

AGC 爲自動增益控制(Auto Gain Control)模塊,主要負責增益控制輸出電平,在聲音輸入音量有大小變化時,能將輸出音量控制在比較一致的範圍內,主要工作在需要保證聲音不至於過大或過小的場景下。

EQ

EQ 模塊爲均衡處理器(Equalizer)模塊,主要對音頻數據進行均衡處理,以調節音頻數據中各頻段聲音的增益

GAIN

GAIN 模塊是音量調節模塊,主要用於調節 AGC 開啓後的音量大小。

RES

RES 模塊爲重採樣(Resampler)模塊。當 AI 上行或 AO 下行通路中開啓 VQE 各功能模塊時,在處理前後各存在一次重採樣第一次的作用是將輸入採樣率下的音頻數據轉換成功能模塊所支持的工作採樣率(8kHz/16kHz/48kHz),第二次則將工作採樣率下的數據轉換成輸出採樣率。

(四)音頻格式

海思音頻編碼和解碼模塊提供對 G711、G726、ADPCM 格式的音頻編解碼功能,音頻格式介紹如下:

LPCM

LPCM,linear pulse code modulation,即線性脈衝編碼調製,是一種非壓縮音頻數字化技術,是一種未壓縮的原音重現,在普通CD、DVD及其他各種要求最高音頻質量的場合中已經得到廣泛的應用。各種應用場合中的LPCM(PCM)原理是一樣的,區別在於採樣頻率和量化精度不同。

聲音之所以能夠數字化,是因爲人耳所能聽到的聲音頻率不是無限寬的,主要在20kHz以下。按照抽樣定理,只有抽樣頻率大於40kHz,才能無失真地重建原始聲音。如CD採用44.1kHz的抽樣頻率,其他則主要採用48kHz或96kHz。

PCM(脈衝編碼調製)是一種將模擬語音信號變換爲數字信號的編碼方式。主要經過3個過程:抽樣、量化和編碼。抽樣過程將連續時間模擬信號變爲離散時間、連續幅度的抽樣信號,量化過程將抽樣信號變爲離散時間、離散幅度的數字信號,編碼過程將量化後的信號編碼成爲一個二進制碼組輸出。

量化分爲線性量化和非線性量化。線性量化在整個量化範圍內,量化間隔均相等。非線性量化採用不等的量化間隔。量化間隔數由編碼的二進制位數決定。例如,CD採用16bit線性量化,則量化間隔數L=65536。位數(n)越多,精度越高,信噪比SNR=6.02n+1.76(dB)也越高。但編碼的二進制位數不是無限制的,需要根據所需的數據率確定。比如:CD可以達到的數據率爲2×44.1×16=1411.2Kbit/s。
簡單的理解,LPCM就是把原始模擬聲音波形經過採樣和線性量化後得到的數字信號,這些數據信號還沒被壓縮。

ADPCM

ADPCM :Adaptive Differential Pulse Code Modulation

說到ADPCM, 就得先說下DPCM。Differential(差異)或Delta PCM(DPCM)紀錄的是目前的值與前一個值的差異值。DPCM對信號的差值進行量化,可以進一步減少量化比特數。與相等的PCM比較,這種編碼只需要25%的比特數。這與一些視頻的壓縮理念類似,用該幀與前一幀的差異來進行記錄該幀以達到壓縮的目的。

ADPCM (ADPCM Adaptive Differential Pulse Code Modulation), 是一種針對16bit (或者更高) 聲音波形數據的一種有損壓縮算法, 它將聲音流中每次採樣的 16bit 數據以 4bit 存儲, 所以壓縮比1:4. 而壓縮/解壓縮算法非常的簡單, 所以是一種低空間消耗,高質量聲音獲得的好途徑。

該算法利用了語音信號樣點間的相關性,並針對語音信號的非平穩特點,使用了自適應預測和自適應量化,即量化器和預測器的參數能隨輸入信號的統計特性自適應於或接近於最佳的參數狀態,在32kbps◎8khz速率上能夠給出網絡等級話音質量。

特性:ADPCM綜合了APCM的自適應特性和DPCM系統的差分特性,是一種性能比較好的波形編碼。它的核心想法是:
①利用自適應的思想改變量化階的大小,即使用小的量化階(step-size)去編碼小的差值,使用大的量化階去編碼大的差值;
②使用過去的樣本值估算下一個輸入樣本的預測值,使實際樣本值和預測值之間的差值總是最小。

  • 優點:算法複雜度低,壓縮比小,編解碼延時最短(相對其它技術)
  • 缺點:聲音質量一般

簡單理解,ADPCM就是對LPCM數據進行有損壓縮,壓縮過程中量化參數遇小則小,遇大則大,根據差值來自己調整大小;另外它可以對之前的數據統計後來預測後來的數據差值,儘量使差值比較小。

G711

G711是國際電信聯盟ITU-T定製出來的一套語音壓縮標準,它代表了對數PCM(logarithmic pulse-code modulation)抽樣標準,主要用於電話。它主要用脈衝編碼調製對音頻採樣,採樣率爲8k每秒。它利用一個 64Kbps 未壓縮通道傳輸語音訊號。 起壓縮率爲1:2, 即把16位數據壓縮成8位。G.711是主流的波形聲音編解碼器。

G.711 標準下主要有兩種壓縮算法。一種是u-law algorithm (又稱often u-law, ulaw, mu-law),主要運用於北美和日本;另一種是A-law algorithm,主要運用於歐洲和世界其他地區。其中,後者是特別設計用來方便計算機處理的

G711的內容是將14bit(uLaw)或者13bit(aLaw)採樣的PCM數據編碼成8bit的數據流,播放的時候在將此8bit的數據還原成14bit或者13bit進行播放,不同於MPEG這種對於整體或者一段數據進行考慮再進行編解碼的做法,G711是波形編解碼算法,就是一個sample對應一個編碼,所以壓縮比固定爲:

  • 8/14 = 57% (uLaw)
  • 8/13 = 62% (aLaw)

簡單理解,G.711就是語音模擬信號的一種非線性量化, bitrate 是64kbps。

G726

G.726是ITU-T定義的音頻編碼算法。1990年 CCITT(ITU前身)在G.721和G.723標準的基礎上提出。G.726可將64kbps的PCM信號轉換爲40kbps、32kbps、24kbps、16kbps的ADPCM信號。

最爲常用的方式是 32 kbit/s,但由於其只是 G.711速率的一半,所以就將網絡的可利用空間增加了一倍。G.726具 體規定了一個 64 kbpsA-law 或 μ-law PCM 信號是如何被轉化爲40, 32, 24或16 kbps 的 ADPCM 通道的。在這些通道中,24和16 kbps 的通道被用於數字電路倍增設備(DCME)中的語音傳輸,而40 kbps 通道則被用於 DCME 中的數據解調信號(尤其是4800 kbps 或更高的調制解調器)。
實際上,G.726 encoder 輸入一般都是G.711 encoder的輸出:64kbit/s 的A-law或µ-law;G.726算法本質就是一個ADPCM, 自適應量化算法,把64kbit/s 壓縮到32kbit/s 。

AAC

AAC,全稱Advanced Audio Coding,中文名:高級音頻編碼,是一種專爲聲音數據設計的文件壓縮格式。與MP3不同,它採用了全新的算法進行編碼,更加高效,具有更高的“性價比”。利用AAC格式,可使人感覺聲音質量沒有明顯降低的前提下,更加小巧。蘋果ipod、諾基亞手機支持AAC格式的音頻文件。

  • 優點:相對於mp3,AAC格式的音質更佳,文件更小。
  • 不足:AAC屬於有損壓縮的格式,與時下流行的APE、FLAC等無損格式相比音質存在“本質上”的差距。加之,傳輸速度更快的USB3.0和16G以上大容量MP3正在加速普及,也使得AAC頭上“小巧”的光環不復存在。

AAC是新一代的音頻有損壓縮技術,它通過一些附加的編碼技術(比如PS,SBR等),衍生出了LC-AAC,HE-AAC,HE-AACv2三種主要的編碼,LC-AAC就是比較傳統的AAC,相對而言,主要用於中高碼率(>=80Kbps),HE-AAC(相當於AAC+SBR)主要用於中低碼(<=80Kbps),而新近推出的HE-AACv2(相當於AAC+SBR+PS)主要用於低碼率(<=48Kbps),事實上大部分編碼器設成<=48Kbps自動啓用PS技術,而>48Kbps就不加PS,就相當於普通的HE-AAC。

 

注意音頻通道的綁定:AI模塊只能綁定到AO和AENC兩個模塊,它與視頻通道的綁定相互獨立,並且不受影響。也就是說AI的綁定與vpss沒有任何的關係。

 

本章頻測工程可以從「目錄與序言」提供的地址去獲取

 

本專欄第一篇文章「目錄與序言」列出了專欄的完整目錄,按目錄順序閱讀,有助於你的理解。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章