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