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