1. 程式人生 > >聲學回聲消除(Acoustic Echo Cancellation)

聲學回聲消除(Acoustic Echo Cancellation)

  回聲就是聲音訊號經過一系列反射之後,又聽到了自己講話的聲音,這就是回聲。一些回聲是必要的,比如劇院裡的音樂回聲以及延遲時間較短的房間回聲;而大多數回聲會造成負面影響,比如在有線或者無線通訊時重複聽到自己講話的聲音(回想那些年我們開黑打遊戲時,如果其中有個人開了外放,他的聲音就會迴盪來回蕩去)。因此消除回聲的負面影響對通訊系統是十分必要的。

  針對回聲消除(Acoustic Echo Cancellation,AEC )問題,現如今最流行的演算法就是基於自適應濾波的回聲消除演算法。本文從回聲訊號的兩種分類以及 AEC 的基本原理出發,介紹幾種經典的 AEC 演算法並對其效能進行闡釋。

回聲分類

  在通訊系統中,回聲主要分為兩類:電路回聲和聲學回聲

電路回聲

  電路回聲通常產生於有線通話中,而造成電路回聲的根本原因是轉換混合器的二線-四線阻抗不能完全匹配。中心局至轉換混合器之間採用四線的連線方式傳輸訊號,上面兩條線路用於傳送給使用者端訊號,下面兩條線路用於接收使用者端訊號。通訊公司為了降低遠距離訊號傳輸成本,將混合器至使用者端的連線線減少為二線連線,分別用於使用者端訊號的接受與傳送。中間的轉換混合電路功能是將四線連線轉換為二線連線,由於在轉換過程中使用了不同型號的電線或者負載線圈沒有被使用的原因,不可避免地會產生阻抗不匹配現象,導致混合器接收線路上的語音訊號流失到了傳送線路,產生了回聲訊號,使得另一端的使用者在接收訊號的同時聽到了自己的聲音。

電路回聲產生原理

  在現如今的數字通訊網路中,轉換混合器與數模轉換器融為一體,但無論是類比電子線路還是數位電子線路,二-四線的轉換都會造成阻抗不匹配問題,從而導致其產生電路回聲,影響現代通訊質量。由於電路回聲的線性以及穩定性,用一個簡單的線性疊加器就可以實現電路回聲消除。首先將產生的回聲訊號在數值上取反,線性地疊加在回聲訊號上,將產生的回聲訊號抵消,實現電路回聲的初步消除。然而由於技術缺陷,線性疊加器不能完整地將回聲訊號抹去,因此需要新增一個非線性處理器,其實質是一個阻擋訊號的開關,將殘餘的回聲訊號經過非線性處理之後,就可以實現電路回聲的消除,或者得到噪聲很小的靜音訊號。由於電路回聲訊號是線性且穩定的,所以比較容易將其消除,而本文主要研究的是如何消除非線性的聲學回聲。

電路回聲消除的基本原理

聲學回聲

  在麥克風與揚聲器互相作用影響的雙工通訊系統中極易產生聲學回聲。如下圖所示

遠端講話者A-->麥克風A-->電話A-->電話B---->揚聲器B--->麥克風B-->電話B-->電話A-->揚聲器A--->麥克風A--->.........就這樣無限迴圈,

詳細講解:遠端講話者A的話語被麥克風採集並傳入至通訊裝置,經過無線或有線傳輸之後達到近端的通訊裝置,並通過近端 B 的揚聲器播放,這個聲音又會被近端 B 的麥克風拾取至其通訊裝置形成聲學回聲,經傳輸又返回了遠端 A 的通訊裝置,並通過遠端 A 的揚聲器播放出來,從而遠端講話者就聽到了自己的回聲。

聲學回聲產生原理

聲學回聲訊號根據傳輸途徑的差別可以分別直接回聲訊號和間接回聲訊號。

直接回聲:近端揚聲器B將語音訊號播放出來後,近端麥克風B直接將其採集後得到的回聲。

  直接回聲不受環境的印象,與揚聲器到麥克風的距離及位置有很大的關係,因此直接回聲是一種線性訊號。

間接回聲:近端揚聲器B將語音訊號播放出來後,語音訊號經過複雜多變的牆面反射後由近端麥克風B將其拾取。

  間接回聲的大小與房間環境、物品擺放以及牆面吸引係數等等因素有關,因此間接回聲是一種非線性訊號。

回聲消除技術主要用於在擴音電話、電話會議系統等情形中。

AEC的基本原理

  如今解決 AEC 問題最常用的方法,就是

使用不同的自適應濾波演算法調整濾波器的權值向量,估計一個近似的回聲路徑來逼近真實回聲路徑,從而得到估計的回聲訊號,並在純淨語音和回聲的混合訊號中除去此訊號來實現回聲的消除。

 AEC的基本原理

  $x(n)$為遠端輸入訊號,經過未知的回聲路徑$w(n)$得到$y(n)=x(n)*w(n)$,再加上觀測噪聲$v(n)$即為期望訊號$d(n)= y(n) + v(n)$。x(n)通過自適應濾波器$\hat{w}(n)$得到估計的回聲訊號,並與期望訊號$d(n)$相減得到誤差訊號$e(n)$,即$e(n)=d(n)-\hat{w}^T(n)x(n)$,誤差訊號的值越小說明自適應濾波演算法所估計的回聲路徑就越接近實際的回聲路徑。

  濾波器採用特定的自適應演算法不停地調整權值向量,使估計的回聲路徑 \hat{w}(n) 逐漸趨近於真實回聲路徑$w(n)$。顯然,在 AEC 問題中,自適應濾波器的選擇對回聲消除的效能好壞起著十分關鍵的作用。

自適應濾波器的基本原理

  自適應濾波器是一個對輸入訊號進行處理並不停學習,直到其達到期望值的器件。自適應濾波器在輸入訊號非平穩條件下,也可以根據環境不斷調節濾波器權值向量,使演算法達到特定的收斂條件,從而實現自適應濾波過程。

  自適應濾波器按輸入訊號型別可分為模擬濾波器和離散濾波器,本文中使用的是離散濾波器中的數字濾波器(數字濾波器按結構可劃分為輸入不僅與過去和當前的輸入有關、還與過去的輸出有關的無限衝激響應濾波器(IIR),以及輸出與有限個過去和當前的輸入有關的有限衝激響應濾波器(FIR))為了使得自適應濾波器具有更強的穩定性,並且具有足夠的濾波器係數可以用來調整以達到特定的收斂準則,一般選取橫向的 FIR 濾波器進行來進行回聲的消除

 橫向FIR濾波器結構框圖

  $x(n)$是遠端輸入訊號,$\hat{w}_i(n)$是濾波器係數,其中$i=0,1,...,L-1$,$L$為濾波器的長度,$n$為取樣點數,$\hat{w}(n)$為濾波器的權值向量且$\hat{w}(n)=[\hat{w}_0(n),\hat{w}_1(n),...,\hat{w}_{L-1}(n)]^T$,根據誤差訊號$e(n)=d(n)-\hat{w}^T(n)x(n)$的值以及不同演算法的收斂準則調整濾波器的權值向量。

  然而自適應濾波演算法的選擇從根本上決定了回聲消除的效果是否良好,接下來將介紹幾種解決 AEC 問題的經典自適應濾波演算法。

回聲消除常用演算法

LSM演算法

  通過上面AEC的基本原理我們知道了誤差訊號$e(n)$等於期望訊號減去濾波器輸出訊號:

$$e(n)=d(n)-\hat{w}^T(n)x(n)$$

對上式兩端先平方,然後再求其數學期望,可將$e(n)$的MSE表示為:

$$\xi=E[e^2(n)]=E[d^2(n)]-2P^T\hat{w}(n)+\hat{w}^T(n)R\hat{w}(n)$$

其中,$P=E[d(n)x(n)]$為$d(n)$與輸入訊號$x(n)$的負相關矩陣,$R=E[x(n)x^T(n)]$為$x(n)$的自相關矩陣。

  對誤差訊號求導並且使導數值置零,求解得到使得誤差最小的“最優權重” $\hat{w}_{opt}(n)=\frac{P}{R}$,R 和 P 的估計分別為$\hat{R}(n) 和$\hat{P}(n)$ ,利用各自的瞬時估計值將其分別表示為:\hat{R}(n)=x(x)x^T(n);\hat{P}(n)=d(n)x(n) 。另外,用$\hat{g}_w(n)$表示誤差訊號對權值向量導數的估計值,利用下式方法求解最優權值向量的維納解:

 得到:$\hat{g}_w(n)=-2e(n)x(n)$ ,演算法取瞬時平方誤差作為目標函式,那麼$\hat{g}_w(n)$為其真實梯度,因為:

因此得到 LMS 演算法的權值向量更新公式:

$$\hat{w}(n+1)=\hat{w}(n)+2\mu e(n)x(n)$$

式中,$\mu$為固定步長因子,$\mu$的大小很大程度上決定了演算法的收斂與穩態效能。LMS 演算法複雜性低,但是它的收斂速度慢。為改善 LMS 這個不足之處,科研人員提出一系列改進演算法,NLMS 演算法就是其中一種

NLMS演算法

 

NSAF演算法

 

參考

《基於自適應濾波器的聲學回聲消除研究——馮江浩》

&n