摘? 要:敘述網(wǎng)絡(luò)電話系統(tǒng)" title="電話系統(tǒng)">電話系統(tǒng)的回聲特點(diǎn),介紹了ITU-T G.168建議書的有關(guān)要點(diǎn)?;谛詢r(jià)比方面的考慮,提出了利用nLMS算法構(gòu)成的橫向?yàn)V波器" title="橫向?yàn)V波器">橫向?yàn)V波器組成自適應(yīng)回聲消除" title="回聲消除">回聲消除器,并在TMS320C5402 DSP上實(shí)現(xiàn)了該算法。經(jīng)過(guò)測(cè)試,主要性能均達(dá)到G.168規(guī)范要求。
關(guān)鍵詞: 橫向?yàn)V波器? 回聲消除器? nLMS算法? 數(shù)字信號(hào)處理? ITU-T標(biāo)準(zhǔn)
?
過(guò)去,通過(guò)衛(wèi)星打國(guó)際長(zhǎng)途電話時(shí),因?yàn)橥届o止衛(wèi)星的通話路徑長(zhǎng),引起通話延遲(單跳250ms,雙跳500ms),因電路失配所引起的線路回聲就很明顯,所以從二十世紀(jì)80年代起人們就研究回聲消除的辦法。由簡(jiǎn)單的回聲抑制器發(fā)展到自適應(yīng)回聲消除器,國(guó)際電聯(lián)(ITU)也相應(yīng)地制訂了回聲消除器的國(guó)際標(biāo)準(zhǔn),如G.164?G.165和G.167等。進(jìn)入90年代后期,通過(guò)英特網(wǎng)撥打長(zhǎng)途電話,即IP電話流行。IP電話是以數(shù)據(jù)包的格式在英特網(wǎng)中與其它數(shù)據(jù)信息按TCP/IP協(xié)議一起傳輸,從發(fā)話端到受話端延時(shí)較長(zhǎng),并且是不確定的。這里的延時(shí)包括算法延遲?處理延遲?網(wǎng)絡(luò)延遲等,算法延遲從0.125ms~30ms不等,處理延遲約30ms,網(wǎng)絡(luò)延遲高達(dá)70~100ms,總的延遲在100ms以上,而人耳對(duì)于大于50ms的回聲就能鑒別出來(lái),因此IP電話系統(tǒng)的回聲影響相當(dāng)嚴(yán)重,如何消除IP電話中的回聲成為非常重要的問(wèn)題。
在IP電話系統(tǒng)中,自適應(yīng)回聲消除器成為不可缺少的設(shè)備。鑒于IP電話與普通國(guó)際長(zhǎng)途電話的不同,ITU于1997年通過(guò)了G.168回聲消除器的標(biāo)準(zhǔn),該標(biāo)準(zhǔn)是G.165標(biāo)準(zhǔn)的發(fā)展,而更多地考慮到網(wǎng)絡(luò)情況,包括話音?傳真?固定和移動(dòng)用戶等應(yīng)用,所以G.165和G.168均為IP電話系統(tǒng)采用的標(biāo)準(zhǔn)。
1 ITU-T G.168
國(guó)際電聯(lián)就回聲消除技術(shù)先后發(fā)布了一系列規(guī)范,分別包括電學(xué)回聲和聲學(xué)回聲的消除,其中1997年公布的G.168是關(guān)于電學(xué)回聲消除的最新規(guī)范。該建議書針對(duì)數(shù)字回聲消除器提出了一般的設(shè)計(jì)要求,定義了相關(guān)的測(cè)試項(xiàng)目,以保證其能夠在各種網(wǎng)絡(luò)條件下提供足夠的回聲消除能力。該建議書覆蓋了比G.165更加廣泛的網(wǎng)絡(luò)情況,包括話音?傳真?殘余的聲學(xué)回聲和移動(dòng)網(wǎng)等不同應(yīng)用。同時(shí),該建議書還定義了一系列客觀測(cè)試項(xiàng)目(objective tests),如果回聲消除器通過(guò)這些測(cè)試,那么當(dāng)其安裝在網(wǎng)絡(luò)中,起碼就可以完成最低限度的回聲消除功能。一個(gè)能夠通過(guò)這些測(cè)試的回聲消除器,不應(yīng)該影響話音信號(hào)的傳輸或其它設(shè)備的工作。圖1是回聲消除器的基本組成和參數(shù)。
?
?
為了客觀地評(píng)價(jià)各種回聲消除器的性能,G.168中規(guī)定了一種特定的復(fù)合信號(hào)源(Composite Source Signals: CCS),帶限CCS是具有與話音類似的功率密度譜的信號(hào),可以仿真話音信號(hào)的特征,用它來(lái)作測(cè)試信號(hào)可以測(cè)量回聲消除器對(duì)話音信號(hào)的處理能力。由于信號(hào)的起始和終止都有明確定義,因此可以方便地測(cè)出同一方向上的切換時(shí)間,和整個(gè)系統(tǒng)的切換和延遲時(shí)間。
在MATLAB中,利用程序生成了符合G.168要求的帶限CCS信號(hào),如圖2所示。
?
?
2 回聲消除器的算法原理
一般而言,回聲消除器就是一個(gè)自適應(yīng)辨識(shí)系統(tǒng),它通過(guò)特定的方法辨識(shí)未知的目標(biāo)系統(tǒng),即:回聲經(jīng)過(guò)的路徑。通常,先設(shè)定“自適應(yīng)辨識(shí)網(wǎng)絡(luò)”的結(jié)構(gòu)形式,再通過(guò)對(duì)輸入序列和輸出序列的計(jì)算,不斷地調(diào)整網(wǎng)絡(luò)參數(shù)。這種自適應(yīng)辨識(shí)要求在盡量短的輸入數(shù)字序列期間,以某種合理定義下的辨識(shí)誤差為準(zhǔn)則,解出各待定參數(shù)。
自適應(yīng)網(wǎng)絡(luò)結(jié)構(gòu)的常用形式為“橫向(Transverse)濾波器”,如圖3所示。T是延時(shí)器,W(n)=[w0(n),w1(n),...,wL-1(n)]是加權(quán)因子(n為時(shí)間序號(hào)),即待定的網(wǎng)絡(luò)參數(shù),它隨著辨識(shí)誤差等而改變,每隔一個(gè)碼元間隔(每時(shí)間序號(hào))調(diào)整一次。
????最陡梯度法是以最小估計(jì)誤差平方為準(zhǔn)則的自適應(yīng)信號(hào)處理算法,但是它要求知道輸入/輸出數(shù)據(jù)的二階統(tǒng)計(jì)特性,并且要求這些數(shù)據(jù)信號(hào)是平穩(wěn)的,通常不易滿足。于是,在最陡梯度法的基礎(chǔ)上引入適當(dāng)?shù)慕?,即得到LMS算法。由于在最陡梯度法中應(yīng)用的是統(tǒng)計(jì)平均特性,而在LMS法應(yīng)用的是瞬間數(shù)據(jù),只是在統(tǒng)計(jì)平均的意義下才與最陡梯度法等效,故解所反映的過(guò)程是隨機(jī)的,即它為一隨機(jī)自適應(yīng)算法。雖說(shuō)輸入信號(hào)" title="輸入信號(hào)">輸入信號(hào)的二階統(tǒng)計(jì)特性彼此相同,所得解(指權(quán)值)與最陡梯度法相比卻呈現(xiàn)波動(dòng),且波動(dòng)瞬間時(shí)值隨輸入信號(hào)的不同而異。LMS算法的特點(diǎn)是:每次迭代的計(jì)算量小,所需的存儲(chǔ)量也小,易于實(shí)現(xiàn)。
?
?
在圖3的情況下,設(shè)X(n)=[x(n),x(n-1),...,x(n-L+1)]T是時(shí)刻n的輸入信號(hào)矢量,由最近的L個(gè)信號(hào)采樣值構(gòu)成,L是橫向?yàn)V波器的長(zhǎng)度。y(n)是回聲消除器的期望(估計(jì))輸出值,d(n)是Sin點(diǎn)的實(shí)際輸出值,e(n)是減法器得到的估計(jì)誤差。μ是回聲消除器控制穩(wěn)定性和收斂速度的參量,稱為步長(zhǎng)因子。
LMS算法的基本方程歸納如下:
????
由于輸入信號(hào)的大小對(duì)LMS算法存在影響,即同樣情況下,能量高的信號(hào)會(huì)引起梯度噪放大,而能量低的信號(hào)算法收斂較慢。因此在實(shí)際應(yīng)用中,將輸入信號(hào)按照自身的平均能量進(jìn)行歸一化處理,得到歸一化的LMS算法,即nLMS。如式(4)所示。
這里的參數(shù)a是nLMS所特有的,為了避免在輸入信號(hào)矢量過(guò)小時(shí)可能產(chǎn)生的數(shù)值計(jì)算問(wèn)題,而特意引入的,它是一個(gè)很小的正數(shù)。
從方程看,LMS算法的優(yōu)點(diǎn)是運(yùn)算簡(jiǎn)便,但它只有一個(gè)可調(diào)整參數(shù),即步長(zhǎng)因子μ,用來(lái)控制收斂速度。由于μ的選擇受系統(tǒng)穩(wěn)定性的限制,因此,算法的收斂速度受到較大限制。
3 用DSP實(shí)現(xiàn)的G.168回聲消除器
3.1 TMS320VC5402 DSP的特點(diǎn)介紹
TMS320VC5402是TI C5000系列DSP芯片族中使用最廣的一種,具有以下特點(diǎn):
· TMS320VC5402 DSP,它的最高時(shí)鐘頻率達(dá)到100MHz,內(nèi)核電壓是1.8V,I/O電壓是3.3V。它的片內(nèi)存儲(chǔ)器為:16KB DARAM,4KB ROM,功耗低,平均約為0.32mW/MIPS。
· DSP內(nèi)部采用改進(jìn)的哈佛結(jié)構(gòu),即:程序空間和數(shù)據(jù)空間分開,允許同時(shí)取指令和取操作數(shù),而且,還允許在程序和數(shù)據(jù)空間之間相互傳送數(shù)據(jù)。
· DSP芯片內(nèi)部采用多總線結(jié)構(gòu),C54x內(nèi)部有P?C?D和E等4條總線(每條總線包括地址總線和數(shù)據(jù)總線),可以在一個(gè)機(jī)器周期內(nèi)從程序存儲(chǔ)區(qū)取1條指令,從數(shù)據(jù)存儲(chǔ)區(qū)讀2個(gè)操作數(shù)并向數(shù)據(jù)存儲(chǔ)區(qū)寫1個(gè)操作數(shù),大大提高了DSP的運(yùn)行速度。
· 在DSP中,采用流水線結(jié)構(gòu),將一條指令執(zhí)行所需要的取指?譯碼?取操作數(shù)并執(zhí)行等幾個(gè)步驟同時(shí)完成,使指令周期" title="指令周期">指令周期降低到最小值。
· DSP內(nèi)部有多個(gè)處理單元,如算術(shù)邏輯運(yùn)算單元(ALU)?輔助運(yùn)算單元(ARCU)?累加器(ACC)和硬件乘法器(MUL)等,它們可以在一個(gè)指令周期內(nèi)同時(shí)進(jìn)行運(yùn)算,特別適用于FIR和IIR濾波器。
· 在DSP的指令系統(tǒng)中,設(shè)計(jì)了一些特殊高效的DSP指令,如FIRS和LMS指令,專門用于對(duì)稱FIR濾波器和LMS算法。
3.2 編程介紹
DSP中實(shí)現(xiàn)的nLMS算法就是上面介紹的(1)~(4)式,但其中的歸一化方法需要說(shuō)明。首先,考慮到數(shù)值計(jì)算的有限精度,將(4)式分母中的平方項(xiàng)拆開,組成兩個(gè)分式相乘。拆開后的信號(hào)能量記為POWER(y(n)),由(6)式的時(shí)間估計(jì)值進(jìn)行迭代計(jì)算。
以下為采用C5000匯編語(yǔ)言實(shí)現(xiàn)nLMS算法的基本代碼:
STM#(TAPS-2),BRC? ;根據(jù)橫向?yàn)V波器的長(zhǎng)度TAPS,循環(huán)(TAPS-1)次,但是另有一次
在RPTBD指令后的流水線中完成。
????SSBX FRCT
????XC 2, NTC?????????????? ?。蝗绻笸V垢聻V波器系數(shù),
???????????????????????????????? 則將(5)式的更迭項(xiàng)置零
????ST #0, n_error_mu?
????LD #0,B?
????LD n_error_mu, T?????????????? ;norm_error * mu -> T?
????RPTBD $nLMS_end-1
MPY *n_ref_ptr+0%,A?
LMS *filter_ptr,*ref_ptr+0%?
ST A,*filter_ptr+
?????? || MPY *n_ref_ptr+0%,A?
???????????? ??????????????? ????? ;error (in T) * n_ref_sample->A
LMS *filter_ptr,*ref_ptr+0%?
?????????????????????????????????? ?;A+coef<<16+round.->A
?????????????????????????????????? ?;coef*ref+B->B
$nLMS_end:
ST A,*filter_ptr
|| SUB *AR5,A
???? ??????????????????????? ;S0<<16-B (est.echo) -> A?
STH A,error_out
ABS A
STH A,ABSE0 ??? ????????;abs value for power estimate.
在程序的主要循環(huán)體內(nèi),每次循環(huán)只需要兩個(gè)指令周期,因此對(duì)于nLMS算法的每次系數(shù)更新需要的指令周期約為(2×TAPS)個(gè)。這里,DSP處理器的優(yōu)越性能起了決定作用。
在實(shí)際應(yīng)用中,回聲消除器所需要的處理能力取決于回聲路徑容量,即自適應(yīng)濾波器的抽頭個(gè)數(shù),以及在穩(wěn)定情況下是否繼續(xù)更新濾波器系數(shù)。如果僅僅是在話路建立初期激活濾波器系數(shù)的迭代,而在系數(shù)收斂以后,凍結(jié)迭代過(guò)程,維持當(dāng)前系數(shù),則可以節(jié)省系統(tǒng)的處理能力,完成對(duì)更多信道的回聲消除。在表1中,對(duì)利用C5000匯編語(yǔ)言實(shí)現(xiàn)的nLMS算法進(jìn)行了一些評(píng)估。從中可以看出,如果采用單片100MIPS的C5402,則可以并行處理11條64ms的回聲路徑。
?
?
3.3 測(cè)試結(jié)果
按照G.168的要求,采用帶限CCS信號(hào)進(jìn)行了有關(guān)的測(cè)試,并將輸入/輸出信號(hào)的功率作圖示意。均方根(RMS功率)的估計(jì)范圍是0.7s。
(1)測(cè)試項(xiàng)目1A,穩(wěn)定工作時(shí),殘余回聲電平測(cè)試(NLP暫停);
(2)測(cè)試項(xiàng)目2B,收斂性能測(cè)試(NLP暫停)。
這兩個(gè)項(xiàng)目可以在一次測(cè)試中完成,結(jié)果如圖4所示。這里,中間一條線是輸入信號(hào)的均方根,最下方一條線是估計(jì)誤差的均方根,最上方一條線是兩者的差值。顯然,采用帶限CCS信號(hào),當(dāng)濾波器穩(wěn)定工作時(shí),殘余回聲電平(最下方曲線)低于輸入信號(hào)(中間曲線)30dB以上,達(dá)到G.168的要求。
?
?
根據(jù)G.168要求,系統(tǒng)工作1s后,殘余回聲電平低于輸入信號(hào)16dB,從圖4可見,實(shí)際結(jié)果略低于規(guī)范要求。其原因在于,所選的步長(zhǎng)因子為0.001,取值較小,導(dǎo)致系統(tǒng)收斂時(shí)間較長(zhǎng)。測(cè)試項(xiàng)目3A,近端低電平的雙講性能測(cè)試(NLP暫停)。
如圖5所示,這里,中間一條線是輸入信號(hào)的均方根,最下方一條線(殘余回聲)是估計(jì)誤差的均方根,最上方一條線是兩者的差值。殘余回聲的功率與近端話音相當(dāng),符合規(guī)范要求。
?
?
本文介紹了回聲消除中的LMS算法,以及在DSP上如何實(shí)現(xiàn),最后按照G.168的各項(xiàng)測(cè)試要求進(jìn)行了性能檢測(cè),主要指標(biāo)都符合規(guī)范要求。因?yàn)镮P電話系統(tǒng)發(fā)展很快,回聲消除器是該系統(tǒng)不可缺少的模塊,因此如何取得最佳的性價(jià)比是業(yè)界最為關(guān)心的。LMS不是回聲消除中的最佳算法,但是它具有算法簡(jiǎn)便快速?DSP開銷小等優(yōu)點(diǎn),并且在此基礎(chǔ)上,通過(guò)一些改進(jìn)可以得到性能較好的算法。如果是應(yīng)用于局端的大容量IP電話終端,可以采用性能更高的C62xx DSP芯片。
?
參考文獻(xiàn)
1 德州儀器公司應(yīng)用報(bào)告 SPRA188.Implementing a Line-Echo Canceller Using the Block Update and NLMS Algorithms on the TMS320C54x DSP.1997;4ITU-T G.168.Apparatus associated with long-distance telephone circuits:Digital network echo cancellers.1997;4
3 陳尚勤. 快速自適應(yīng)信息處理. 北京:人民郵電出版社
4 覃景繁,韋崗.回波消除理論進(jìn)展及其應(yīng)用.電路與系統(tǒng)學(xué)報(bào).1998;3(3)