王仁杰,楊曉敏,蘆璐
(四川大學電子信息學院,成都 610065)
近年來,通信和網絡技術不斷發展,使得人們對通信的質量提出了新的要求,其中最主要的就是語音通話質量。聲學回聲是降低語音通話質量的重要因素之一[1]。回聲是由于麥克風和揚聲器之間的回聲路徑的脈沖響應耦合效應而產生的。由于人耳對回聲非常敏感,延遲超過10ms的回聲就能被人耳捕捉到,超過32ms的回聲就會嚴重干擾通話質量。因此,如何消除聲學回聲具有重要的現實意義。目前最普遍應用的方法是基于自適應濾波的回聲消除器(Acoustic Echo Cancellation,AEC)。AEC的基本原理是運用自適應濾波算法對回聲路徑的脈沖響應進行估計,其本質是一個系統辨識的問題。然而當回聲路徑存在非線性的特性時,傳統的自適應濾波算法,比如最小均方算法(Least Mean Square,LMS)、歸一化最小均方算法(Normalized Least Mean Square,NLMS)的性能會出現明顯的下降。因此,如何對回聲路徑中的非線性特性建模,提出有效的非線性回聲對消方法具有重要意義[4]。
目前的非線性回聲對消的方法中,具有代表性的有以下兩種。文獻[1]中提出了一中基于函數連接的非線性自適應濾波算法用于回聲對消(Split Functional Link Adaptive Filter,SFLAF)。該方法的特點是對輸入信號進行非線性擴展,具體地說,是通過三角函數函數連接擴展,將未經過變換的信號和經過變換的信號分別用兩個濾波器進行濾波,以此達到同時對回聲路徑的線性和非線性特性建模的目的。文獻[2]將回聲路徑中的非線性變換設定為一種sigmoid變換,在進行濾波之前對sigmoid的參數進行估計,并結合RLS的快速收斂和強跟蹤能力,能快速使得估計值收斂到真實值。
受以上方法的啟發,本文結合以上兩種方法,對函數連接型自適應回聲對消器做出改進:其中在文獻[1]中的SFLAF的線性濾波器中引入文獻[2]的RLS-sigmoid算法,將回聲路徑中的非線性變換設定為sigmoid類型的變換。對非線性變換的參數進行估計,進一步增強了算法的非線性建模能力,提升了回聲對消的效果。
圖1給出了一個函數連接型濾波器FLAF的結構。FLAF包括兩個階段:輸入信號的非線性擴展以及后續的線性自適應濾波。假設在n時刻,FLAF接收到的輸入信號向量為x(n)=[x(n),x(n-1),…,x(n-L+1)],其中L表示輸入向量的長度。FLAF利用函數擴展塊(Functional Expansion Block,FEB)對其進行處理。FEB由一系列的函數組成,它們可以是正交基函數的完備集,滿足Stone-Weierstrass近似定理[5]。FEB將輸入信號進行擴展,映射到更高的維度,從而可以提高對系統的非線性建模能力。而所謂的函數連接(Functional Link),本質上是就是FEB這個函數集合中的函數算子[6]。

圖1 FLAF結構示意圖


(1)
其中,0≤i≤L-1,L是輸入向量原有的長度。
而對于長度為L的輸入向量,經過FEB處理后,最終得到擴展向量hn。

=h0(n),h(n),…,hLe-1(n)〗T
(2)
其中,Le代表擴展后向量的長度,易得,Le=LQ。
FEB中函數集合的選擇對FLAF的性能有重要的影響,需要根據具體的應用場景和處理的信號而定。這些滿足Stone-Weierstrass近似定理的基函數,可以是正交多項式的子集,例如切比雪夫[7]、勒讓德[10]和三角函數多項式[11];也可以是近似函數,例如sigmoid函數和高斯函數。這其中,三角函數多項式由于在均方意義上能最好的表征任何的非線性函數,并且相較于冪級數多項式計算復雜度也較低,因此也被運用的最為廣泛[8]。
考慮輸入向量x(n)中的第i個元素,0≤i≤L-1,一般的三角函數FEB可以表示為:

(3)
其中1≤p≤P,P是三角函數連接擴展的階數。而0≤j≤Q,在這種情況下,FEB中函數的個數Q=2P+1。1代表線性的元素,即沒有通過三角函數變換,和輸入向量中元素完全一樣的元素。因此,這種情況下得到的擴展向量同時包含了線性和非線性的元素。
最后,只需要對擴展向量進行簡單的線性濾波就可以完成整個FLAF過程。濾波器的目標就是在越小的誤差范圍內準確的對非線性建模。線性濾波器的權值向量記作w(n)=[w0(n),w1(n),…,wLe-1(n)]T,期望信號記作d(n),則FLAF的誤差信號表示為:
e(n)=d(n)-y(n)
=d(n)-hT(n)w(n)
(4)
可以看出,e(n)的最小化取決于對權值向量w(n)的估計。我們可以采用任意一種基于梯度下降法的自適應算法來更新權值向量[9]。
分裂型FLAF(Split Functional Link Adaptive Filter,SFLAF)的結構如圖2所示。所謂分裂,就是將經過FEB擴展后的信號中的線性元素和非線性元素解耦合,分別通過兩個并行的自適應濾波器,用總體誤差分別對兩個濾波器的權值向量進行更新。這其中,線性濾波器接收未經過函數變換的輸入向量,旨在估計回聲路徑;而非線性濾波器接收經過三角函數變換的向量,旨在對回聲路徑中的非線性變換建模[1]。

圖2 SFLAF結構示意圖
SFLAF的輸出信號由線性濾波器和非線性濾波器的輸出信號疊加而成:
y(n)=yL(n)+yFL(n)
(5)

文獻[2]提出了一種對回聲路徑中的非線性特性進行建模的有效方法:其將非線性畸變建模為sigmoid函數,并通過對其參數的估計來擬合非線性。其結構如圖3所示。該算法分別用最小均方算法LMS和遞歸最小二乘算法RLS(Recursive Least Square,RLS)來更新sigmoid變換的參數和濾波器的權值向量。得益于RLS算法快速的收斂速度和跟蹤能力,能快速使得估計值收斂到真實值。

圖3 RLS-sigmoid結構示意圖
受此啟發,我們將RLS-sigmoid算法引入到SFLAF的線性分支中,新的算法記作Split Functional Link RLS-sigmoid,SFLRLS-sigmoid。算法結構如圖4所示。

圖4 提出的SFLRLS-sigmoid算法結構示意圖
首先對長度為L的輸入信號x(n)分別進行sigmoid變換和函數擴展。輸入信號x(n)通過(6)中的sigmoid變換:

(6)
其中,α和β是sigmoid變換的兩個參數。得到xS(n)=[f(x(n)),f(x(n-1)),…,f(x(n-L+1))]。同時,輸入信號x(n)通過三角函數連接進行函數連接擴展,得到擴展后的輸入信號xFL(n)=[φ1(x(n)),φ2(x(n)),…,φ2P(x(n))]。
接著,分別將xS(n)和xFL(n)通過自適應濾波器:yS(n)=wST(n)xS(n),yFL(n)=wFLT(n)xFL(n);其中,wS(n)和wFL(n)為對應濾波器的權值。然后得到總體的濾波輸出:y(n)=yS(n)+yFL(n)。將近端麥克風拾取到帶回聲的近端信號d(n)與總體濾波輸出y(n)相減后再回送給遠端,回送信號為總殘差信號e(n)=d(n)-y(n)。
利用殘差信號e(n)對下一次迭代的sigmoid變換的參數按照如下方法進行更新:

(7)

(8)
其中,α(n)和β(n)是在n時刻對α和β的估計值,μα和μβ是兩個步長參數[2]。wS(n)利用遞歸最小二乘算法(RLS)更新:
P(0)=δ[-1]I
(9)

(10)
wS(n+1)=wS(n)+k(n)e(n)
(11)
P(n+1)=λ-1P(n)-λ-1k(n)xT(n)P(n)
(12)
其中,矩陣P(n)是逆相關矩陣,I是單位矩陣,k(n)是增益向量,λ和δ分別是遺忘因子和正則化參數[9]。wFL(n)利用歸一化最小均方算法(NLMS)更新:
(13)
其中,μFL和σ分別是步長和正則化參數,‖·‖為二范數運算。


圖5 回聲路徑的脈沖響應
按照以上實驗條件,用本文方法與現有的兩種方法進行回聲消除實驗,各種算法的參數具體取值如表1所示。圖6給出了本文方法和文獻[2]對sigmoid非線性變換的參數α和β的估計值的迭代曲線??梢钥闯觯瑑煞N方法都能收斂到真實的參數值,而SFLRLS-sigmoid的收斂速度更快。

表1 實驗各算法的最優參數近似取值

圖6 sigmoid參數α和β學習曲線
選擇回聲返回損失增強(Echo Return Loss Enhancement,ERLE)作為性能指標:

其中,E{·}表示求期望運算。圖7給出了3種方法的ERLE對比曲線??梢钥闯?,由于RLS-sigmoid能準確估計sigmoid非線性變換的參數值,其效果要優于SFLAF。而本文方法在RLS-sigmoid的基礎上與SFLAF結合,進一步加快了sigmoid非線性變換參數值的收斂過程。因此,相較于文獻[1]、[2]的方法,本文方法的收斂速度更快,并且收斂穩定后的ERLE值也更大。

圖7 回聲對消的ERLE對比曲線
本文提出了一種改進的基于函數連接的非線性回聲對消方法SFLRLS-sigmoid,通過實驗證明,這兩種方法的結合與它們各自單獨作用相比較,進一步提升了對回聲路徑的非線性特性的建模能力,收斂速度更快,回聲對消的效果更好。