摘 要: 為了提高VoIP的通信質量,減少回聲干擾,對LMS算法、NLMS算法進行闡述, 基于NLMS提出了一種運算量小并且提高收斂性能的改進的自適應濾波算法。通過在Matlab下的仿真研究和對誤差曲線的分析,證明了該改進算法的收斂速度快,均方誤差小。用改進的算法對語音回聲信號進行消除,仿真得到消除回聲后的信號效果明顯,為IP電話中回聲消除的自適應濾波問題提供了一個較好的算法。
關鍵詞: 回聲消除; 自適應濾波算法; 量化誤差算法; 可變步長算法
中圖分類號: TN911?34 文獻標識碼: A 文章編號: 1004?373X(2013)22?0035?04
0 引 言
相比于傳統的PSTN,VoIP(Voice over Internet Protocol)有很大的優勢,它的網絡利用率高,通信成本低,而且能廣泛地采用Internet和全球IP互連的環境,提供比傳統業務更多、更好的服務。
隨著VoIP的迅速發展,如何提高通信質量是研究的重點難題[1]。而在實際通信中,回聲會嚴重影響通信質量,因此如何消除回聲是提高通話質量的關鍵技術之一。為了消除回聲,一般采用的自適應濾波算法如:最小均方誤差算法(Least Mean Square,LMS)、歸一化LMS算法(Normalized LMS,NLMS)等,但是這些算法都存在一些收斂速度、均方誤差的問題。基于算法的收斂性能和穩態性能,本文提出了一種改進的算法,使其在快速收斂的情況下,具有較好的穩態性能。
1 回聲消除技術介紹
現代進行回聲消除的技術主要是基于自適應濾波器,該濾波器能夠根據參考信號,預測出接收信號中的回聲,并將回聲從信號中消除和抑制,從而消除回聲。
1.1 自適應濾波器結構
自適應濾波器的結構如圖1所示,其是由自適應算法來不斷調整濾波器系數實現的。自適應濾波器由兩部分組成:一個是濾波器結構,另一個是調整濾波器系數的自適應算法。自適應濾波器的結構[2?3]可以采用FIR結構或者IIR結構,但是由于IIR濾波器存在一些穩定性的問題,所以一般選擇FIR濾波器作為自適應濾波器的結構。
圖1中:x(k)是輸入信號;y(k)是輸出信號;d(k)是參考信號或者期望信號;e(k)為d(k)和y(k)之間的誤差信號。誤差信號e(k)控制自適應濾波器的濾波器系數,根據自適應濾波算法以及e(k)的值自動調整自適應濾波器的濾波器系數。
1.2 自適應濾波算法
1.2.1 最小均方自適應算法
最小均方自適應算法(LMS算法)[4]是線性自適應濾波器算法。其權值的遞推公式為:
[wn+1=wn+2μenxn] (1)
式中:w(n)為第n步迭代的權向量;[μ]是步長因子;e(n)是誤差信號;x(n)是輸入信號。這里,0<[μ]<1。在收斂范圍內通過步長選擇來控制收斂速度和穩態誤差。
1.2.2 歸一化LMS算法
歸一化LMS(NLMS)算法[5?7]是基于LMS算法的一種改進,兩種算法的不同在于LMS算法中的固定步長因子[μ]是一個常數,而NLMS算法中采用了可變的步長因子[μ],其目的是為了加快算法的收斂速度。在NLMS算法中,根據式(2)來定義可變步長因子[μ]:
2 基于NLMS的改進算法
2.1 算法分析
在NLMS算法中,步長因子[μ]對收斂有極大的影響。步長決定算法的穩定性、收斂速度和自適應過程的平穩性。在收斂初始階段或者未知系統參數發生變化時,步長因子的值應該較大,這樣使得算法會有較快收斂速度或對于時變系統來說會有較快的跟蹤速度。然后隨著收斂的加深,步長因子應該逐漸減小以此來減小穩態誤差。
在NLMS算法中步長因子:
在語音處理中,一段語音的輸入序列都會很長,甚至長度未知,而且其非平穩性。[N0]可根據LMS算法在實際問題中收斂到穩態解時的迭代次數確定,而[Nd]則可根據輸入數據的長度確定。
這樣開始收斂時,[f(k)]為一較小的常數;當[k≥N]時,隨著收斂級數k的逐漸增大,[f(k)]逐漸變大,步長因子[μ]逐漸變小。
2.2 仿真分析
圖2,圖3為LMS算法的仿真,采用的是32階FIR濾波器。在自適應濾波器結構中采取的是LMS算法,其中LMS的步長因子[μ]=0.008。
在圖2中,橫坐標為迭代次數,縱坐標為信號幅值。desired是希望輸出的信號,output是回聲消除后的信號,error是desired信號與output信號之間的誤差。
從圖2可以看出期望輸出的信號與回聲消除后的信號還是有比較大的差異,特別是在迭代剛開始的時候兩個信號之間的誤差比較明顯。由圖3可以看出,在100次迭代以前,誤差比較大,隨著迭代次數增大,誤差逐漸減小,直到迭代次數在150次以后,誤差在一個較小的幅度內波動,慢慢趨于平穩。
由圖4可以看出期望信號與回聲消除后的信號之間的差異不是特別明顯,隨著迭代次數越來越大,兩個信號非常近似。
由圖5可以看到迭代次數為80以前,信號之間的誤差比較明顯,之后誤差急劇下降,迭代次數到達250以后,誤差基本上就非常小。
圖6、圖7為改進的NLMS算法的仿真,為了便于比較,和LMS、NILMS算法一致,定義了32階的FIR濾波器。在自適應濾波器中使用的是改進的NLMS算法,其中改進的NLMS算法的步長因子[μ]=1。
由圖6可以明顯看出期望信號與回聲消除后的信號之間基本上是重合的,在迭代初期兩個信號之間有比較小的差異,隨著迭代次數越來越大,兩個信號基本一致。
由圖7可以看到迭代次數為50以前,信號之間有比較大的誤差,之后迭代次數增大,誤差也逐漸下降,迭代次數到達100以后,誤差就基本上穩定在一個比較小的范圍。
圖8為LMS、NLMS、改進的NLMS三種算法期望信號與回聲消除后信號均方誤差的比較,其中紅色的線代表的是LMS算法,綠色的線代表的是NLMS算法,黑色的線代表的是改進的NLMS算法。
由圖8可以很明顯地看出,在剛開始收斂時,LMS算法和NLMS算法的均方誤差比較大,而改進的NLMS算法的誤差相比而言小一點。當收斂級數到50的時候,改進的NLMS算法基本上就趨于穩定,而LMS還有NLMS算法依舊還是有一定的誤差。
改進的NLMS算法既有較小的誤差,收斂速度也比較快。綜合看來,改進的NLMS算法有比較好快速收斂性能和穩定性能。
采用改進的NLMS算法對實際語音信號[8]進行回聲消除。圖9中,第一幅圖是近端信號,也就是實際希望得出的信號,第二幅圖是近端信號中混入了遠端回聲信號后得到的麥克風信號,第三幅圖是利用改進的算法進行回聲消除后得到的信號。
從圖9中可以看出,消除回聲后的信號與近端信號基本一致,回聲消除效果比較理想。
在實際運用的時候,步長因子[μ]的選擇非常重要,因為它會對濾波器收斂性能有很大的影響,它控制了算法的收斂速度。本文試驗中采用的步長因子[μ]是經過多次測試得到的。
3 結 語
本文主要是研究自適應信號處理技術在語音通信的回聲消除方面的應用。
傳統的LMS算法因為它簡單的結構、穩定的性能以及容易在硬件上實現等許多優點而被廣泛地用在自適應控制、雷達、系統辨識及信號處理等各個領域。但是LMS自適應算法的收斂速度比較慢。而NLMS算法雖然收斂速度有所提高,但是它具有一個致命的弱點,就是當輸入信號是像語音等相關性很強的信號[9]時,算法的收斂速度會顯著降低,從而影響回聲消除的質量。本文主要是基于NLMS算法進行改進,通過理論的分析和Matlab[10]仿真研究表明,本文提出的算法能加快算法的收斂速度并且有較好的穩定性,為回聲消除的實際運用提供了比較好的解決方案,在回聲系統中能夠較好地滿足IP電話對于語音的要求,從而提高了通話的質量。
參考文獻
[1] 王琦,馬躍,喻煒.VoIP中為保證語音質量所采用的關鍵技術[J].中國數據通信,2002(2):25?29.
[2] 尹浩瓊.通信系統中回聲消除的研究[D].北京:北京郵電大學,2006.
[3] 西蒙.自適應濾波器原理[M].北京:電子工業出版社,2006.
[4] 龔耀寰.自適應濾波[M].2版.北京:電子工業出版社,2003.
[5] 鄭寶玉.自適應濾波器原理[M].4版.北京:電子工業出版社,2003.
[6] EWEDA E. Convergence analysis of adaptive filtering algorithm with singular data covariance matrix [J]. IEEE Transactions on Signal Processing, 2001, 49(2): 334?343.
[7] LIU Jian?feng. A novel adaption scheme in the NLMS algorithm for echo cancellation [J]. IEEE Signal Processing Letters, 2001, 8(1): 20?22.
[8] 魏臻.歸一化LMS算法在IP電話回聲消除的研究[J].微計算機信息,2010,28(1):27?28.
[9] 皇甫堪,陳建文,樓生強.現代數字信號處理[M].北京:電子工業出版社,2003.
[10] 陳懷琛,吳大正,高西全.Matlab及在電子信息課程中的應用[M].3版.北京:電子工業出版社,2006.