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