作者:凌逆戰
博客園地址:https://www.cnblogs.com/LXP-Never/p/11773190.html
自適應回聲消除原理
聲學回聲是指揚聲器播出的聲音在接受者聽到的同時,也通過多種路徑被麥克風拾取到。多路徑反射的結果產生了不同延時的回聲,包括直接回聲和間接回聲。
直接回聲是指由揚聲器播出的聲音未經任何反射直接進入麥克風。這種回聲的延時最短 ,它同遠端說話者的語音能量,揚聲器與麥克風之間的距離、角度 ,揚聲器的播放音量,麥克風的拾取靈敏度等因素直接相關;
間接回聲是指由揚聲器播出的聲音經過不同的路徑 (如房屋或房屋內的任何物體 )的一次或多次反射后進入麥克風所產生的回聲的集合。房屋內的任何物體的任何變動都會改變回聲的通道。因此,這種回聲的特點是多路徑的、時變的。
自適應回聲消除的基本思想是估計回音路徑的特征參數,產生一個模擬的回音路徑,得出模擬回音信號,從接收信號中減去該信號,實現回音抵消。其關鍵就是得到回聲路徑的沖擊響應$\hat{h}(n)$,由於回音路徑通常是未知的和時變的,所以一般采用自適應濾波器來模擬回音路徑。自適應回音消除的顯著特點是實時跟蹤,實時性強。
回聲消除原理框圖
圖中$ y(n)$代表來自遠端的信號 , $r(n)$是經過回聲通道而產生的回聲,$x(n)$是近端的語音信號。D端是近端麥克風,麥克風采集到的房間疊加的回聲和近端說話人的語音。對回聲消除器來說,接收到的遠端信號作為一個參考信號,回聲消除器根據參考信號由自適應濾波器產生回聲的估計值$\hat{r}(n)$,將$\hat{r}(n)$從近端帶有回聲的語音信號減去,就得到近端傳送出去的信號 。在理想情況下,經過回聲消除器處理后,殘留的回聲誤差$e(n)=r(n)-\hat{r}(n)$將為0,從而實現回音消除。
自適應濾波器算法的性能指標
收斂速度:濾波器的收斂速度越快越好,使正常通話開始后,通話者很快就感覺不到明顯的回波存在。
穩態殘留回波(穩定性):即當濾波器收斂達到穩態后的回波輸出量,實際中總是希望該參數越小越好。
算法復雜度:良好的算法應該在保持收斂速度的同時盡量降低計算復雜度,同時也能減少功耗
ITU-T G.168對各種回音抵消器產品在包括以上兩個主要指標在內的各種指標規定了必須達到的標准。
自適應濾波器結構
自適應濾波器結構
圖中所示濾波器的輸入是$X(n)={x(n),x(n-1),...x(n-N+1)}^T$,$z^{-1}$濾波器z域模型的延遲單元(零狀態),濾波器的權重系數是$h(n)={h_1(n),h_2(n),...,h_N(n)}^T$,$d(n)$為期望輸出信號,$\hat{d}(n)$為濾波器的實際輸出,也稱估計值,$\hat{d}(n)=\sum_{i=1}^Nx(n-i+1)h_i(n)$。$e(n)$是誤差,$e(n)=d(n)-\hat{d(n)}$,由誤差經過一定的自適應濾波算法來調整濾波系數,使得濾波器的實際輸出接近期望輸出信號。
傳統的IIR和FIR濾波器在處理輸入信號的過程中濾波器的參數固定,當環境發生變化時,濾波器無法實現原先設定的目標。自適應濾波器能夠根據自身的狀態和環境變化調整濾波器的權重。
自適應濾波器類型。可以分為兩大類:非線性自適應濾波器、線性自適應濾波器。非線性自適應濾波器包括基於神經網絡的自適應濾波器及Volterra濾波器。非線性自適應濾波器信號處理能力更強,但計算復雜度較高。所以實踐中,線性自適應濾波器使用較多。
主要分為兩類FIR濾波器、IIR濾波器。
- FIR濾波器時非遞歸系統,即當前輸出樣本僅是過去和現在輸入樣本的函數,其系統沖激響應h(n)是一個有限長序列。具有很好的線性相位,無相位失真,穩定性較好。
- IIR濾波器時遞歸系統,即當前輸出樣本是過去輸出和過去輸入樣本的函數,其系統沖激h(n)是一個無限長序列。IIR系統的相頻特性是非線性的,穩定性不能保證。好處是實現階數較低,計算量較少。
由於IIR存在穩定性問題,因此一般采用FIR。
自適應濾波器算法按照不同的優化准則,常見自適應濾波算法有:遞推最小二乘算法(RLS),最小均方誤差算法(LMS),歸一化均方誤差算法(NLMS),快速精確最小均方誤差算法,子帶濾波,頻域的自適應濾波等等。
全帶自適應稀疏算法
譜減法
本文研究的背景噪聲是以汽車噪聲和風聲為主要對象,此類噪聲的特點為加性的、局部平穩的、且與語音信號統計獨立。譜減法根據噪聲的加性特點,通過噪聲能量估計和增益計算得到噪聲的功率譜,然后從帶噪語音的功率譜中減去估計出的噪聲得到較為純凈的語音。
由於譜減法沒有考慮人耳聽覺對語音頻譜分布的幅度較為敏感的特點。因此采用譜減法進行濾波后,會給原信號帶來噪聲,使語音質量變差,並且會影響到其他處理,如語音編碼等。用實際的語音信號檢測譜減法的濾波效果,如圖下所示,可以看出,經過譜減法后噪聲得到了一定的消除,但頻率較低的信號處濾波效果並不是很理想。
遞歸最小二乘法 RLS
RLS算法的基本方法為:
$$\begin{array}{l}\mathop d\limits (n) = X_{}^T(n)H(n - 1)\\e(n) = d(n) - \mathop d\limits(n)\\k(n) = \frac{{P(n - 1)X_{}^3(n)}}{{\lambda + X_{}^T(n)P(n - 1)X_{}^3(n)}}\\P(n) = \frac{1}{\lambda }[P(n - 1) - K(n)X_{}^T(n)P(n - 1)]\\H(n) = H(n - 1) + K(n)e(n)\end{array}$$
K(n) 稱為Kalman 增益向量,$\lambda$是一個加權因子,其取值范圍$0<\lambda<1$,該算法的初始化一般令$H(-1) = 0$及$P(-1) = \frac{1}{\delta I}$,其中δ是小的正數。
最小均方算法 LMS
1959年由Widrow和Hoff提出了最小均方(Least Mean Square,LMS)算法,基於維納濾波理論,采用瞬時值估計梯度矢量的算法,通過最小化誤差信號的能量來更新自適應濾波器權值系數。
\[\nabla (n) = \frac{{\partial [\mathop e\nolimits^2 (n)]}}{{\partial {\bf{h}}(n)}} = - 2e(n){\bf{X}}(n)\]
按照自適應濾波器濾波系數矢量的變化與梯度矢量估計的方向之間的關系,可以寫出LMS算法調整濾波器系數的公式如下所示:
$${\bf{h}}(n+1)={\bf{h}}(n)+\frac{1}{2}\mu [-\nabla (n)]\\={\bf{h}}(n)+\mu e(n){\bf{X}}(n)$$
上式中的$\mu$為步長因子。$\mu$值越大,算法收斂越快,但穩態誤差也越大;$\mu$值越小,算法收斂越慢,但穩態誤差也越小。為保證算法穩態收斂,應使$\mu$在以下范圍取值:
$$0 < \mu < \frac{2}{{\sum\limits_{i = 1}^N {x(i)_{}^2} }}$$
從收斂速度來看,RLS 算法明顯優於LMS 算法,但RLS 算法在運算上卻比LMS 算法復雜得多,為了減小計算復雜度,並保留RLS 的收斂性能,人們提出了一些改進的RLS 算法。如RLS 格型算法,快速RLS 算法,梯度格型算法,快速橫向濾波器算法等。總的來看,這些以收斂法都是以運算速度換取運算復雜性。
於是人們研究介於兩者之間的一種算法, 如共軛梯度法、自仿射投影算法 等。共軛梯度法不需要RLS 中的矩陣運算,也沒有某些快速RLS 算法存在的不穩定問題,但它的缺點是穩態誤差比較大。
而LMS 算法的優點是運算簡便,但它只有一個可調整參數,即步長因子μ ,可以用來控制收斂速率, 由於μ 的選擇受系統穩定性的限制, 因此, 算法的收斂速度受到很大限制。為了加快收斂速度人們提出許多改進的LMS 算法。
- 優點:抑制旁瓣效應
- 缺點:LMS算法計算復雜度不高,但是其收斂速率較慢,並且隨着濾波器階數(步長參數)升高,系統的穩定性下降,要保證采用最小的步長參數,保證最小的失調,可能無法滿足收斂標准
塊處理LMS算法(BLMS)
為了對付LMS運算量大的問題,在LMS基礎上提出了塊處理LMS(BLMS)。它與LMS算法不同的是:LMS算法是每來一個采樣點就調整一次濾波器權值;而BLMS算法是每K采樣點才對濾波器的權值更新一次。這樣BLMS算法的運算量就比LMS的運算量要小的多,但它的收斂速度卻與LMS算法相同。
塊自適應濾波器的原理圖
輸入數據序列經過串一並變換器被分成若干個長度為L的數據塊。然后將這些數據塊一次一塊地送入長度為M的濾波器中,在收集到每一塊數據樣值后,進行濾波器抽頭權值的更新,使得濾波器的自適應過程一塊一塊地進行,而不是像時域傳統自適應濾波算法那樣一個樣值一個樣值地進行。
具體算法如下:
$$公式一:{\bf{h}}(n+1)={\bf{h}}(n)+\frac{1}{2}\mu [-\nabla (n)]={\bf{h}}(n)+\mu e(n){\bf{X}}(n)$$
由上面公式可知,可以推出:
$${\bf{h}}(n) = {\bf{h}}(n - 1) + \mu e(n - 1){\bf{X}}(n - 1)$$
代入公式一得:
$${\bf{h}}(n + 1) = {\bf{h}}(n - 1) + \mu e(n){\bf{X}}(n) + \mu e(n - 1){\bf{X}}(n - 1)$$
由於在塊自適應濾波算法中,誤差信號隨抽樣速率而變,故可得出對於每一個數據塊,都有不同的用於自適應過程的誤差信號值。因此,對於第k個數據塊,可以對所有的可能值求乘積$x(kL+i)e(kL+i)$之和,並由此定義運行在實數據上的塊LMS自適應濾波算法的權向量的更新公式,一次類推可得:
$$h(n+k+1)=h(n)+\mu e(n+kL)X(n+kL)+...+\mu e(n+kL+L)x(n+kL+L)=h(n)+\mu\sum_{i=0}^{L-1}e(n+kL+i)x(n+kL+i)$$
其中,$\\mu$為步長因子。
塊自適應濾波算法具有與時域傳統自適應濾波算法相似的特性。塊LMS自適應濾波算法使用了更精確的梯度向量估計。
歸一化最小均方算法 NLMS
歸一化最小均方(Normalized Least Mean Squares,NLMS)算法是改進的LMS算法,根據原LMS算法中誤差信號與遠端輸入信號的乘積,對遠端輸入信號的平方(功率)進行歸一化處理,將固定步長因子的LMS算法變為根據輸入信號時變的變步長NLMS算法,具體算法如下:
$$\begin{array}{l}estimated\_echo(i) = \sum\limits_{k = 0}^{N - 1} {{a_k}y(i - k)} \\{a_k}(i + 1) = {a_k}(i) + \frac{{{\beta _1}}}{{{P_y}(i)}}e(i)y(i - k)\\{P_y}(i) = (average(\left| {y(i)} \right|))_{}^2\end{array}$$
其中$a(k)$為濾波器的系數,$e(n)$為誤差信號,$\beta_1$為固定環路增益,N為濾波器系數,$P_y(i)$為參考信號的能量估計。
- 優點:改善了LMS算法收斂速度慢的缺點。計算簡單、更高的精度
- 缺點:輸入相關信號時,收斂速率明顯下降
后續研發除了歸一化塊處理LMS(BNLMS):結合以上NLMS和BLMS兩者的特點則有歸一化塊處理LMS(BNLMS)
變步長LMS(VSS LMS)
針對μ 值, 人們研究了許多變步長LMS 算法(Variable Step-Size LMS),一般是在濾波器工作的開始階段采用較大的μ值,以加快收斂速度,而在后階段采用較小的μ值,可以減小穩態誤差。這類算法的關鍵是確定在整個過程中μ值如何變化或μ值在何種條件滿足下才改變。
- 優點:收斂速度快,
- 缺點:算法的穩定性和跟蹤能力上較易受輸入噪聲的影響
仿射投影算法
仿射投影濾波器是歸一化 LMS 濾波器的推廣。具體來說,歸一化濾波器抽頭 系 數 的 調 整 項$\frac{\tilde{\mu }x(n)e^*(n)}{||x(n)||^2+\delta }$被 更 復 雜 的$\tilde{\mu }A^H(n)(A(n)A^H(n)+\delta I)^{-1}e(n)$所代替,其中 I 是單位矩陣,$\delta$是一個小正常數。
我們將仿射投影濾波器的設計用約束最優化問題來描述:
其約束條件為:
式中 N 小於輸入數據的維數 M。
當 N=1時,歸一化 LMS 濾波器是這個約束最優准則的一個特例,其中仿射投影濾波器的階數可看作 N 。
結合式上面兩個公式基於多約束拉格朗日乘子法,建立如下代價函數:
引入如下定義:
1、 N*M 的數據矩陣 A(n) ,其共軛轉置定義為:
2、 N *1的期望響應向量 d(n) ,其共軛轉置定義為:
3、 N *1的拉格朗日向量 $\lambda ^H$,其共軛轉置定義為:
利用式(3-12)重新定義代價函數為:
對代價函數 J(n) 取權向量的微分可得:
設該導數為零,可得
為了從上式中消去拉格朗日乘子向量$\lambda$ ,首先利用式(3-13)和(3-14)的定義,重寫
式(3-11)為:
然后,在式(3-18)兩邊同時左乘以 A(n) 並利用式(3-10)和式(3-19)消去權向量$\hat{w}$(n+1),則得
由此,可以推出如下結果:
1、設 n 次迭代得到的數據$d(n)$與$A(n)\hat{w}(n)$之間的差為:
2、矩陣乘積$A(n)A^H(n)$是一個 N *N 矩陣,它的逆為$(A(n)A^H(n))^{-1}$。
因此對式(3-20)求解向量$\lambda$,得:
將式(3-22)代入式(3-18),得到的最優變化的權向量為:
最后,我們對需多次迭代的權向量進行控制。為此,把步長參數$\tilde{\mu}$代入式(3-23),得到:
等價地,可寫出:
式(3-25)為仿射投影濾波器的更新方程。因此仿射投影算法的運算過程描述如下:
其中 M 為抽頭數,$\tilde{\mu}$為自適應常數,N 為濾波器階數。
仿射投影算法較 NLMS 更適合處理輸入信號具有相關性的情況,因為仿射投影算法濾波器系數的更新依賴於多個輸入信號,而非只與上一時刻的輸入信號相關。和 NLMS 算法類似,仿射投影算法的收斂速度也隨着步長因子的變化而改變,因此仿射投影算法也可針對步長因子進行改進。通常情況下,仿射投影濾波器較歸一化 LMS 濾波器收斂速度要快。然而,仿射投影算法性能的改善是以算法復雜度的增加為代價的,在實際應用中,對於要求實時性的場合會受到限制。
- 優點:收斂快
- 缺點:運算量很大
稀疏類自適應算法——PNLMS
通過對回聲路徑模型的分析,發現回聲能量中較活躍系數均在時域聚集,且比重很小,其數值只有很少不為零的有效值,大多數都是零值或者接近零值,這就是回聲路徑具有的稀疏特性(基於時域對信號進行處理的一種特性)
PNLMS
根據回聲路徑的稀疏性,Duttweiler引入了比例自適應的思想,提出了比例歸一化最小均方算法 PNLMS,按比例分配濾波器的權值向量大小,該算法對回聲消除的發展具有非常重要的意義。
該算法采用與濾波器抽頭稀疏成正比的可變步長參數來調整算法收斂速度,利用其抽頭稀疏的比例值來判斷當前權重稀疏所屬的活躍狀態,根據狀態的不同,所分配的步長大小也有所差異,活躍抽頭系數分配較大的步長參數,這樣可以加速其收斂,而不活躍的抽頭系數則相反,通過分配其較小的步長參數來提高算法的穩態誤差。每個濾波器抽頭被分別賦予了不同估計值,算法的穩態收斂性得到了明顯改善。然而,PNLMS 有一個明顯的缺點,即比例步長參數的選擇引入了定值,這會導致估計誤差累積,最后使算法在后期的收斂速度減慢下來。
優點:使算法對於稀疏的回聲路徑,在初始階段擁有快速的收斂速率,與此同時降低了穩態誤差,
缺點:
- 由於 PNLMS 算法過分強調大系數的收斂,而當系數變小后,P 步長也隨之變小,但隨着算法的運行,則可能出現算法后期收斂速度慢、不能及時收斂的情況
- 相比於NLMS算法增加了算法的復雜度
- 另外在回聲路徑非稀疏情況下,收斂速度會變得比NLMS算法更慢
PNLMS++
PNLMS ++算法,在每個采樣周期內,通過將NLMS算法和PNLMS算法之間進行交替來實現收斂速度方面的提升。但是PNLMS ++算法只在回聲路徑稀疏或高度非稀疏的情況下表現良好。
CPNLMS
CPNLMS 算法(Composite PNLMS)通過比較誤差信號功率和已設閾值大小,來判斷算法采用 PNLMS 還是 NLMS 算法
- 缺點:閾值的選取往往和實際環境有關,因此該算法在實際應用中不能通用
$\mu$准則MPNLMS
$\mu$准則MPNLMS算法:為了解決PNLMS算法后程收斂速度慢的問題,將最速下降法應用到PNLMS算法中,使用$\mu$准則來計算比例因子(使用對數函數代替PNLMS算法中的絕對值函數)
- 優點:使得濾波器權值向量的更新更加平衡,提升了PNLMS算法接近穩態時期的收斂速率
- 缺點:復雜性加大
改進比例歸一化最小均方 IPNLMS
IPNLMS算法,基於L1范數將估計的回聲路徑權值向量均值與比例步長參數之和作為比例矩陣的對角元素(通過調整濾波器的比例參數步長),使得IPNLMS有着和PNLMS相近的初始收斂速率,並且在非稀疏的回聲路徑條件下,IPNLMS的收斂速率相比PNLMS有所改善,但性能改善的同時也增加了計算復雜度。
改進的IPNLMS
在PNLMS類算法進行自適應迭代更新過程中,大抽頭權值向量擁有大步長因子,這樣提升了收斂速率,但濾波器自適應收斂至接近穩態時,大抽頭權值向量將會產生較大的穩態誤差。為了解決這一問題,P.A.Naylor提出了改進的IPNLMS(Improved IPNLMS,IIPNLMS)算法。IIPNLMS算法在IPNLMS算法的基礎之上,對於數值較大的權值向量,使用較小的參數使得其步長成比例減小,從而降低系數噪聲。
MPNLMS
MPNLMS算法引入最優步長控制矩陣,均衡了濾波器大小系數之間的更新,MPNLMS 中 P 步長的計算方式克服了 PNLMS 過分注重大系數收斂忽略小系數收斂的缺點,修正了 PNLMS 算法收斂后期速度慢的缺點,但
- 缺點:MPNLMS算法的運算過程中包含對數的計算,因此算法的運算復雜度相對較高。
SPNLMS
SPNLMS算法,將MPNLMS濾波器更新過程中的對數函數關系簡為兩段折線形式的形式。
SPNLMS的P步長計算函數$F(|w_l(k)|)$可以描述為:
$$F(|w_l(k)|)=\left\{\begin{matrix}
600*|w_l(k)|&&|w_l(k)\leq 0.005|\\
3&&其他
\end{matrix}\right.$$
- 優點:相對於MPNLMS為減小運法復雜度
- 缺點:但收斂速度有所下降
改進的 MPNLMS算法,采用多個分段函數來近似 MPNLMS 的對數函數,從而降低算法的復雜度。
改進的 SPNLMS算法,通過控制步長控制矩陣迭代的頻率降低算法復雜度。收斂速度也所下降
以上對 MPNLMS 的改進算法在減小算法運算復雜度的情況下損害了收斂性能和穩定性能。
稀疏控制(Sparse Control, SC)
有時候回聲路徑的稀疏程度會根據溫度、壓力以及房間牆面的吸聲系數等等因素而產生變化,這就需要一種能夠適應不同稀疏度變化的AEC算法。
稀疏控制比例回聲消除算法(SC-PNLMS、SC-MPLNMS、SC-IPNLMS),使用新的稀疏控制方法動態地適應回聲路徑的稀疏程度,使得算法在稀疏和非稀疏的回聲路徑條件下都有良好的性能表現,體現了稀疏控制類的自適應濾波算法能夠提高算法對回聲路徑稀疏程度的魯棒性。
小總結:通過上述對 PNLMS 算法的分析,可知導致 PNLMS 算法整體收斂速度慢的原因主要是大系數和小系數之間收斂的不均衡。盡管很多學者針對此缺陷提出了修正算法,如 PNLMS++、CPNLMS 等,但是 PNLMS 忽略小系數收斂的缺陷並未從根本上得到改善,因此這些改進算法的效果不是十分理想。Deng通過對濾波器系數收斂過程的定量分析,在權系數更新過程中推導出最優步長的計算方式,提出一種改進的算法——MPNLMS 算法。MPNLMS 中 P 步長的計算方式克服了 PNLMS 過分注重大系數收斂忽略小系數收斂的缺點,修正了 PNLMS 收斂后期速度慢的缺陷。
一種新的改進型 PNLMS 算法,因 PNLMS 算法只注重大系數更新,忽視小系數收斂,致使算法在收斂后期速度下降,因此在 P 步長引入的同時必須注意小系數的更新。MPNLMS 算法通過建立 P 步長與當前濾波器權系數的函數關系,在一定程度上解決了 PNLMS 算法后期收斂速度慢的問題,但濾波過程包含了對數運算,不利於系統的實時實現。
本文通過定量分析濾波過程,並考慮到大、小系數的收斂,建立了一種新的 P步長與當前濾波器系數之間的映射關系,降低了算法的運算復雜度。 該改進算法以 PNLMS 算法為基礎,通過改變收斂過程來克服 PNLMS 算法的缺陷
子帶自適應濾波器(SAF)
在聲學回聲消除應用中,遠端輸入語音信號的相關性較高,然而,傳統的方法是基於“信號的無關性”假設的,傳統的全帶LMS 和NLMS 等計算復雜度低的隨機梯度算法收斂速度明顯下降。
遠端語音信號相關性有兩層含義:
- 時域上:它表征語音信號相關矩陣特征值的擴散度
- 頻域上:它表征遠端語音信號的頻譜動態范圍
一般來說,語音信號相比白色信號,前者明顯有更大的頻譜動態范圍,即更大的信號相關性。因此,可以通過降低輸入信號的相關性來加快算法收斂速度,但是行之有效的一種方法是將自適應濾波器和濾波器組理論相結合,提出了子帶自適應濾波(subband adaptive filter,SAF)算法,子帶結構是基於頻域對信號進行的一種處理(節省計算量、提高收斂速度)。
子帶自適應濾波器:SAF算法將相關信號通過濾波器組分割成近似無關的各個子帶獨立信號(子帶分割)。然后對子帶信號進行多速率抽取來獲得采樣信號,再進行信號的自適應處理。為研究子帶自適應濾波器,首先需要了解多速率信號抽取系統和濾波器組。
多速率系統[1]
用於子帶自適應濾波器的多速率抽取系統有下采樣和上采樣兩種,主要通過抽取和插值方法來使系統獲得不同采樣率。輸入信號經過 N 個濾波器分頻后的總采樣點數是原信號的 N 倍,大幅度提高的采樣數增加了計算量。
濾波器組[1]
信號子帶分割通過濾波器組實現。濾波器組由分析濾波器和綜合濾波器共同組成。而濾波器組的實質是一系列帶通濾波器。
分析濾波器組將數字信號分割后抽取成多個子帶信號,經過信號處理后,綜合濾波器組再對子帶信號進行插值和濾波相加而恢復成原來的信號。
子帶自適應算法結構[1]
在傳統的 SAF中,子帶自適應算法都是以最小化子帶誤差信號為目標的,這樣基於局部目標函數誤差的最小化不一定是全局誤差能量最小化。而分析濾波器組在子帶切割和綜合濾波器組重建全帶信號時皆會引入時延,在AEC 應用中,這樣的時延會使包含近端語音的全帶誤差信號傳到遠端,為了消除時延的影響,無延時子帶閉環結構系統以全局誤差能量最小化為約束條件來調整濾波器系數。最后,確保自適應濾波算法能夠收斂到最佳的濾波器系數。
- 優點:改善了全帶自適應濾波算法在相關信號條件下的收斂速率
- 缺點:
- 但其穩態誤差由於輸出時存在的混疊分量而顯著升高
- 當采用正交鏡像濾波器組時,雖然可以通過子帶系統將混疊部分相互抵消掉,但在現實中卻無法實現
子帶自適應算法的后續發展
問題:針對SAF算法穩態誤差較高的問題
解決:提出了 基於最小擾動原理提出了歸一化的SAF(normalized SAF,NSAF)算法。
優點:由於SAF類算法固有的解相關特性,NSAF在處理相關輸入信號時比全帶的NLMS收斂速度快,而且計算成本與NLMS不相上下
近幾年研究人員為了能夠提升AEC算法的收斂性能和穩態性能,在NSAF的基礎上結合全帶自適應濾波算法的成比例理論,提出了幾種改進的NSAF算法,例如不同形式的變步長因子NSAF以及變正則化參數NSAF。為了在識別稀疏回聲路徑時快速收斂,文獻[22,23]將NLMS算法中的成比例思想以類比的方式融合到NSAF算法中,提出了比例NASF(proportionate NASF,PNSAF)算法和μ准則PNSAF(μ-law PNASF,MPNSAF)算法。
因為子帶結構中存在混疊分量問題
- Keermann於1988年利用采樣濾波器組技術消除了混疊現象,但是此舉增加了算法復雜度。
- 相鄰子帶間留安全頻帶,缺點:引入了空白頻帶,降低了信號質量。
- 重疊子濾波器補償法,缺點:因為交叉項而增加了運算量,還降低了收斂速度。
2004年K. A. Lee 和 W. S. Gan提出了基於最小擾動原理的多帶結構式自適應濾波器(Multiband Structured SAF,MSAF)算法,並給出了自適應濾波器抽頭系數的更新方程。該結構完全不存在濾波器輸出端的混疊分量問題。
多帶自適應濾波器
子帶自適應濾波器中每個子帶單獨使用一個子濾波器。該結構會導致輸出端產生混疊分量,解決此問題的傳統方法多以降低信號的質量或增大穩態誤差為代價,Lee 和 Gan在 2004 年提出了一種全新多帶結構。不同於子帶濾波器在每個子帶都使用不同的濾波器,多帶結構的每個子帶使用相同的全帶濾波器,這很好地克服了輸出端存在混疊分量的問題。
頻域塊LMS自適應濾波算法
塊LMS自適應濾波算法中的線性卷積和線性相關均可以采用快速傅里葉變換(FFT)來實現。因此,塊LMS自適應濾波算法的有效實現方法實際上是利用FFT算法在頻域上完成濾波器系數的自適應。這樣實現的塊LMS自適應濾波算法稱為頻域塊LMS自適應濾波算法(FDAF,Frequency-Domain Block Least MeanSquare Adaptive Filter)。
另一方面,數字信號處理中常用的重疊存儲法和重疊相加法為快速卷積運算提供了強有力的工具,即利用離散傅里葉變換計算線性卷積。重疊存儲方法是非自適應濾波兩種方法中更為常用的一種方法。此外,值得注意的是,盡管濾波器能夠以任意數量的重疊來實現,但當以50%重疊時運算效率達到最高。
基於重疊存儲法的頻域塊LMS自適應濾波算法的信號流程圖
問題:針對回聲路徑很長且復雜,並且回聲延遲較高時,時域自適應濾波算法計算復雜度高的問題,
解決:提出了頻域分塊濾波(FDAF)算法,FDAF算法將長度為L的自適應濾波器分成FFT長度的整數倍個子塊,對輸入信號的每個子塊進行頻域內的LMS算法。
- 優點:當回聲路徑很長且復雜時計算量小,並且在收斂速度方面有略微提升。
相對於時域,FDAF具有許多優勢。除了能夠通過在頻域中相乘來執行濾波器卷積之外,該變換還有效地減小了自適應濾波器的長度。因此,降低了自適應算法的計算復雜度。此外,為了降低計算復雜度,FDAF還可以提高收斂速度。這是由於濾波器更新中信號的自相關矩陣的特征值散布減小所導致的。
FDAF的這些優勢最終需要權衡。FDAF的主要成本是增加的延遲和增加的內存需求。延遲成本來自需要通過頻域濾波器延遲期望信號(或回聲消除中的麥克風信號)。這導致在時域方法上增加了存儲器存儲,因為需要同時存儲激勵信號和期望信號。FDAF的早期方法使FFT的階數與脈沖響應的大小大致相同。但是如前所述,回聲消除等應用回波路徑較長,會導致較大的延遲和存儲需求。該缺點可以通過諸如多延遲自適應濾波器之類的方法來克服。在這種方法中,塊大小可以小於所需的時域自適應濾波器,並且可以應用每個頻點中的自適應濾波器來代替單個系數。因此,可以減輕FDAF的缺點,同時保持降低的計算復雜性和提高的收斂速度。
綜上所述
《聲學回聲消除中子帶和塊稀疏自適應算法研究_魏丹丹》
遠端輸入語音信號的相關性較高,且聲學回聲信道的沖擊響應一般只有少量的非零系數,因此是一個稀疏信道。
針對用於聲學回聲消除的子帶和塊稀疏算法進行了研究和改進,以達到提高算法跟蹤性能和抗沖激魯棒性的目的。本文的主要貢獻如下:
首先,區別於傳統文獻中子帶歸一化自適應算法消除回聲的方法,
我提出一種用於聲學回聲消除的新型子帶歸一化自適應濾波切換算法(LMS-NSAF)。
該算法核心思想是根據語音信號的狀態不同,采用 VAD 快慢包絡技術切換算法,當輸入遠端信號的瞬時能量值較大時,使用收斂速度快的子帶 NLMS 算法,當輸入信號的瞬時能量值較小時,則使用計算復雜度低的權重矢量更新公式,從而使得改進的子帶 NLMS 算法在提高收斂性的同時又能降低算法的計算復雜度
基於多帶結構的改進型自適應濾波切換算法NLMS-NSAF
首先遠端語音信號利用包絡法判別有無語音段,
然后將信號狀態輸出到自適應多帶結構算法模塊當中。
若語音區輸入信號的短時能量較大,則使用收斂速度快的自適應濾波算法(NLMS);
若語音區輸入信號的短時能量較小,需考慮計算量低的算法(NSAF),
當然,語音在無語音區時算法迭代停止。
對輸入語音信號能量高低的判定是通過和閾值比較得到的。在充分考慮語音特性的情況下,切換算法實現了算法在收斂速度的優勢,同時完成了同算法復雜度的優化選擇。最后達到了提高濾波算法性能、降低運算量的目的。
回聲路徑是經典的稀疏路徑,且語音信號作為遠端輸入時相關性較強,
總結
回聲消除的挑戰在於能否快速跟蹤回聲路徑中的變化,同時又對大聲干擾(例如雙向通話)保持魯棒性。這兩個目標是矛盾的,因為為了快速適應回聲路徑的變化,系統需要具有快速收斂速度的自適應算法,這又意味着在出現雙向通話時很容易發散。
在大多數系統中,實現了雙向通話檢測器以凍結自適應並防止發散。雙向通話檢測器的決策閾值通常需要對信號處理環境進行一些調整。這是一個不良的特性,因此,大多數系統都被調整為過於保守。換句話說,由於雙向通話決策遺漏比雙向通話虛假警報更重要,因此要進行調整以確保不會發生任何丟失的決策。這可能會導致系統產生高頻率的錯誤警報,從而導致系統無法及時調整。
健壯的自適應算法在回聲消除系統中的應用使雙向通話檢測器的保守性降低。由於大多數雙向通話遺漏都發生在語音段的開始和偏移處,因此魯棒的自適應算法試圖使濾波器系數的自適應不受干擾,直到可以做出雙向通話決定為止。由過去誤差信號的電平調節的比例因子控制自適應算法的速率。因此,例如尚未收斂的系統將導致高比例因子。在雙向通話的情況下,由於使用了過去的誤差信號值,因此其開始會被延遲。
消除回聲的兩路徑方法(AEC)論文進一步討論了該主題。雙向通話檢測器的復雜性以及使用兩組濾波器系數作為緩解快速收斂和雙向通話問題的方法的目的變得更加清晰。雙路徑方法的問題是需要兩個FIR操作,這給系統增加了內存和計算復雜度。魯棒的自適應算法的應用可以幫助緩解過於保守的雙向通話檢測器的問題,而不會增加兩徑方法的負擔。
除了居於核心地位的自適應濾波技術外,實際回音抵消技術應用系統中還包括遠端信號檢測、近端信號檢測、舒適噪聲產生、殘留回波的非線性處理技術等,這些技術也有待改進。這樣整個回音抵消器才能實現一個較好的回音抵消效果。
參考
聲學回聲消除中子帶和塊稀疏自適應算法研究_魏丹丹
《車載免提系統降噪算法的研究以及硬件實現》__張雪
頻域塊LMS自適應濾波算法的研究__田超