與傳統(tǒng)的PSTN網(wǎng)絡(luò)采用電路交換技術(shù)不同,IP電話采用的是分組交換技術(shù),,充分利用Internet來傳輸語音數(shù)據(jù),,使得價格大大降低,從而取得了長足的發(fā)展,。但是IP電話也存在一些弊端,,比如語言質(zhì)量比較差,導(dǎo)致這一弊端的因素很多,,其中主要的因素就是網(wǎng)絡(luò)延時和算法延時,,這主要是由于互聯(lián)網(wǎng)的數(shù)據(jù)傳輸特點以及語音編解碼耗時較大導(dǎo)致的,總延時長達100ms,。根據(jù)經(jīng)驗,,如果語音的延時超過了50ms,那么,,人耳就可以鑒別出自己的回聲,,顯然,IP電話系統(tǒng)的回聲是非常嚴重的,,鑒于此,,國際電聯(lián)(ITU)也相應(yīng)地制定了回聲消除的國際規(guī)范,如G.165,,G.168,。
2 回聲消除器的結(jié)構(gòu)框圖和基本原理
圖1所示是VoIP回聲消除系統(tǒng)結(jié)構(gòu)圖。
從圖1可以看出,,整個回聲消除系統(tǒng)分成三個部分:NLMS自適應(yīng)濾波器,、語音檢測器和粗略時延估計器。其中,,語音檢測器又分為三個部分:近端說話檢測器,、遠端說話檢測器和雙端說話檢測器。
圖1中,,A,、B端代表遠端用戶,C,、D端代表近端用戶,y(n)代表時刻n來自遠端的語音采樣值,。y(n)經(jīng)過互聯(lián)網(wǎng)到達近端用戶的揚聲器端,,由于從揚聲器出來的聲音信號經(jīng)過空氣形成的回聲通道H(z)又會被近端的話筒拾取,,這部分回聲信號echo(n)會混同近端用戶的語音信號一起進入近端的話筒,也就形成近端的聲學信號r(n),,r(n)再通過互聯(lián)網(wǎng),,向遠端用戶的揚聲器傳輸。如果不采取回聲消除措施,,只要遠端信號y(n)通過互聯(lián)網(wǎng)傳回遠端揚聲器的時間超過50ms(這是經(jīng)常出現(xiàn)的情況),,那么,這部分被近端拾取的回聲信號echo(n)會被遠端用戶分辨出來,,結(jié)果就使得遠端用戶聽到了自己的聲音,,會大大降低通話的質(zhì)量,這是用戶所不能容忍的,。所以,,必須采取消除回聲的措施。
完成回聲消除的一個很重要的模塊就是自適應(yīng)濾波器,,本文采用NLMS算法進行自適應(yīng)濾波,。當遠端信號y(n)到達近端之后,先把這個信號“復(fù)制”一份,,放到存儲器中,,結(jié)合誤差信號,利用NLMS算法不斷調(diào)整自適應(yīng)濾波器的系數(shù),,使得y(n)經(jīng)過自適應(yīng)濾波器后的輸出盡量逼近回聲信號echo(n),,這樣,當近端的語音信號x(n)=0的時候,,從B端輸出的誤差信號e(n)也就接近0,,從而達到了回聲消除的目的。
當然,,在NLMS自適應(yīng)濾波器進行濾波和系數(shù)更新之前,,必須檢測語音模式是近端說話模式、遠端說話模式,、還是雙端說話模式,,因為不同的說話模式NLMS自適應(yīng)濾波器所執(zhí)行的功能是不完全相同的。另外,,由于遠端信號y(n)被自適應(yīng)濾波器“復(fù)制”到存儲器中的時刻t1和y(n)經(jīng)過回聲通道H(z),,進入近端話筒并作相應(yīng)的處理的時刻t2是不相同的,t2要大于t1,,這主要是語音數(shù)據(jù)編碼,、打包和壓縮造成的。為了使得濾波器處理的信號y(n)和傳回遠端的信號r(n)保持對應(yīng),,即echo(n)和y(n)保持高度的相關(guān)性,,那么被自適應(yīng)濾波器“復(fù)制”的y(n)信號,,最好在存儲器中延時一段時間,這樣才能保證達到回聲消除取得比較好的效果,。
3 NLMS自適應(yīng)濾波器原理
為了討論方便,,這里先考慮遠端說話模式,即近端語音信號x(n)為0,。為了簡單起見,,把圖1中的NLMS自適應(yīng)濾波器部分單獨抽出來,簡化成圖2,。圖2所示是NLMS自適應(yīng)濾波器結(jié)構(gòu)圖,。
其中,H(z)傳遞函數(shù)用來表示回聲通道的特性,。NLMS自適應(yīng)濾波器就是要盡快地調(diào)整自己的系數(shù),,使其沖擊響應(yīng)盡量逼近H(z)的沖擊響應(yīng),這樣才能使誤差信號e(n)逼近0,。具體的實現(xiàn)過程如下,。
自適應(yīng)濾波器的輸出由式(1)給出:
其中:N是NLMS自適應(yīng)濾波器的階數(shù)。BT=〔b0,,b1Λ,,bN-1〕是濾波器的系數(shù)矢量。-1),,Λ,,y(n-N+1)〕是濾波器n時刻的輸入信號矢量。
由于前面已經(jīng)假設(shè)為遠端說話模式,,故,,近端語音信號x(n)為0。誤差信號e(n)可由式(2)給出:
其中:μ為步長因子,,是一個常數(shù),,由試驗來確定,μ的選取至關(guān)重要,,為了確保收斂,,必須滿足0<μ<2。μ取值過大,,雖然可以加快自適應(yīng)濾波器的收斂速度,,但是誤差信號e(n)也會大,μ取值過小,,則使收斂速度變慢,。e(n)由式(2)計算。P(n)是n時刻輸入信號矢量yn的短時平均功率,,。
4 語音檢測器
語音檢測器在整個回聲消除系統(tǒng)中也占據(jù)非常重要的地位,,這是因為不同的語音模式自適應(yīng)濾波器所要求執(zhí)行的功能是不相同的,下面分別說明,。
4.1 遠端說話檢測器
當近端用戶不說話而只有遠端用戶說話的時候,就是遠端說話模式,。式(4)用于檢測遠端說話模式,。
代表遠端信號和近端信號的較短窗功率估計值。是閥值常量,,要由實驗來確定,,取得太大或者太小都會導(dǎo)致檢測錯誤。
如果檢測出為遠端說話模式,,那么,,應(yīng)該通過圖1中的NLMS控制器同時打開NLMS自適應(yīng)濾波器的濾波功能和系數(shù)更新功能。
4.2 雙端說話檢測器
當近端用戶和遠端用戶同時說話的時候,,就是雙端說話模式,。式(5)用于檢測雙端說話模式。
表誤差信號和近端信號的短窗功率估計值,。C是系數(shù)常量,,C=10ERLE/10,一般ERLE取為8dB,。D是閥值常量,,要由實驗來確定,取得太大或者太小都會導(dǎo)致檢測錯誤,,影響濾波效果,。
如果檢測出為雙端說話模式,則要凍結(jié)FIR濾波器的系數(shù)更新功能,,只需要完成濾波功能,,即只要計算濾波器輸出r(n)的值。
4.3 近端說話檢測器
當只有近端用戶說話而遠端用戶不說話的時候,,就是近端說話模式,。式(6)用于檢測近端說話模式。
表近端信號短窗功率估計值和長窗功率估計值,。NES MARGIN是閥值常量,,要由實驗來確定。
如果檢測出為近端說話模式,,那么,,應(yīng)該通過圖1中的NLMS控制器同時凍結(jié)NLMS自適應(yīng)濾波器的濾波功能和系數(shù)更新功能。
5 粗略時延估計器
由于遠端信號y(n)通過回聲通道要經(jīng)過編碼、打包和壓縮的處理,,會花費大量的時間,,這就必然會產(chǎn)生延時。而且這種延時還是在一定范圍內(nèi)隨機波動的,,這就增加了估計的難度,,要想準確地計算出延時的大小是不可能的,只能是一個粗略的估計值,,故稱為粗略時
延估計器,。可以按照式(7)和式(8)來估計延時值:
首先按照式(7)計算從近端傳到遠端的聲學信號和誤差信號的互相關(guān)函數(shù),,然后從中選出絕對值最大者,,作為延時的估計參數(shù)。
6 DSP芯片簡介及關(guān)鍵代碼介紹
本文選擇TI公司的DSPTMS320C5402為硬件平臺來實現(xiàn)回聲消除,,TMS320C54x是一款低功耗,、高性能的定點數(shù)字信號處理器,運行速度可達到100MIPS,。有兩個40位累加器A,、B,192K字可尋址空間(64K字的程序存儲器,、64K字數(shù)據(jù)存儲器及64K字I/O空間),。采用8總線增強型哈佛結(jié)構(gòu),多級流水線操作,,專用的硬件乘法器,,DSP的專用指令(如FIRS,LMS),。
下面是用DSP實現(xiàn)回聲消除的NLMS算法的關(guān)鍵代碼:
編程的時候,,為了提高程序的運行效率,要充分利用DSP芯片的優(yōu)點,。要盡量使用指令周期少的尋址方式,,如直接尋址、雙操作數(shù)尋址,。在設(shè)計濾波器的數(shù)據(jù)和系數(shù)緩沖區(qū)的時候采用循環(huán)尋址,,這樣可以避免大批數(shù)據(jù)的搬移,節(jié)省指令周期,,如果開辟一個長度為L的緩沖區(qū),,必須保證其首址最低位至少有N個0,N是滿足2N>R的最小整數(shù),。還要多采用如ST‖MPY等并行指令,,多采用DSP的專用指令,,如LMS、FIRS,。
7 結(jié)束語
回聲消除技術(shù)在IP電話中占有非常重要的地位,,本文介紹了用NLMS算法設(shè)計回聲消除器,還涉及到語音檢測和時延估計,,以及如何在DSP上實現(xiàn),。下面給出63階的NLMS自適應(yīng)濾波器的系數(shù)更新結(jié)果,為了方便起見,,把回聲通道H(z)等效成一個63階的FIR濾波器,,其沖擊響應(yīng)如圖3所示,并假設(shè)近端語音信號x(n)為0,,不考慮延時,一段時間后NLMS濾波器的沖擊響應(yīng)見圖4,。圖4所示是收斂后的NLMS自適應(yīng)濾波器系數(shù),。由圖4可以看出,NLMS自適應(yīng)濾波器的收斂效果較好,。
經(jīng)過測試,,本文所述的回聲消除器用于VoIP電話中,可以比較明顯地改善語音的質(zhì)量,。