張越,沈建明,王慶祥,陶冶博,王雷,羅必露
(嘉興職業(yè)技術(shù)學院,浙江嘉興,314036)
傳統(tǒng)的濾波器的頻率響應(yīng)是固定的,因而在濾波過程中只能對噪聲與有用信號滿足特定要求,即有用信號位于通帶而噪聲信號位于阻帶,且兩者在頻譜上沒有重疊時,才能取得最好的濾波效果。而在一些特定場景中,噪聲信號與有用信號在頻域上存在重疊部分,此時使用傳統(tǒng)濾波器就無法獲得良好的降噪效果。與傳統(tǒng)濾波器相比,自適應(yīng)濾波器的特殊之處在于其可以根據(jù)輸入信號的濾波結(jié)果與期望信號的差值,在不改變?yōu)V波器結(jié)構(gòu)的前提下,通過算法不斷地迭代,實時更新濾波器的抽頭系數(shù),直至期望信號與濾波結(jié)果的差值收斂到一定的范圍以內(nèi)時,濾波器的抽頭系數(shù)也趨于穩(wěn)定。正是由于自適應(yīng)濾波算法對噪聲的跟蹤特性,使得其為語音降噪領(lǐng)域的研究提供了新思路,即不再被動的通過物理隔離等手段降低語音信號中的噪聲,而是主動的制造與語音信號中噪聲等幅反相的噪聲并進行抵消,從而達到主動降噪的效果。
最小均方(Least Mean Square)LMS 算法是一種典型的自適應(yīng)濾波算法,由于其具有結(jié)構(gòu)簡單,計算量小的優(yōu)點,所以被廣泛地應(yīng)用于噪聲消除等領(lǐng)域[1~2]。為了解決傳統(tǒng)LMS 算法收斂速度與穩(wěn)態(tài)誤差難以同時達到理想狀態(tài)這一問題,本文提出了一種新的變步長LMS 算法,比較了其與經(jīng)典LMS 算法在收斂速度與穩(wěn)態(tài)誤差方面的表現(xiàn),并將其應(yīng)用到了語音降噪領(lǐng)域以驗證算法的性能。
經(jīng)典的LMS 算法在1959 年由Windrow 和Hoff 兩位學者提出的,其典型結(jié)構(gòu)如圖1 所示。
圖1 LMS 濾波器結(jié)構(gòu)示意圖
其中x(n)分為兩路,一路作為進入濾波器的參考噪聲,另一路經(jīng)過未知系統(tǒng)后,和與x(n)不相關(guān)的信號v(n)混合,成為待處理目標信號d(n)。y(n)為信號x(n)經(jīng)過自適應(yīng)濾波器濾波后的結(jié)果,e(n)為目標信號d(n)與y(n)之差。
從結(jié)構(gòu)上看,整個LMS 濾波器可以看作一個階數(shù)固定,系數(shù)可變的橫向濾波器,其系數(shù)由LMS 算法迭代產(chǎn)生,具體算法如下:
其中,n 為迭代次數(shù),w(n)為第n 次迭代后得到的橫向濾波器系數(shù),μ為迭代步長,μ的取值范圍為[0,1/λ],其中λ 是x(n)自相關(guān)矩陣的最大特征值。
經(jīng)過多次迭代后,自適應(yīng)濾波器的輸出y(n)與x(n)經(jīng)過未知系統(tǒng)后的輸出x1(n)之間的差值會逐漸減小,濾波器系數(shù)也會趨于收斂。
主動語音降噪的主要原理就是對參考噪聲進行自適應(yīng)濾波后與有用信號中混雜的噪聲進行對消。其算法示意圖如圖2 所示,在進行語音降噪實現(xiàn)時,在噪聲源與語音源附近各設(shè)置一音頻接收裝置,此時信號v(n)被所需語音信號s(n)取代,而未知系統(tǒng)即為由參考噪聲接收裝置至待降噪語音接收裝置的空間與電子設(shè)備所構(gòu)成的噪聲信道。噪聲源處采集到的信號x(n)作為參考噪聲輸入系統(tǒng),而在語音信號附近收集到的目標信號d(n)中,既包含有用信號s(n),也包含了經(jīng)過由噪聲源至語音信號處的空間信道濾波后的x1(n)。根據(jù)自適應(yīng)算法原理可知,當算法收斂時,濾波器輸出y(n)會與x1(n)近似相等,則d(n)與e(n)抵消后的結(jié)果e(n)即為降噪后語音信號s(n)。
圖2 LMS 語音降噪示意圖
經(jīng)典的LMS 算法雖然具有結(jié)構(gòu)簡單,計算量小,易于實現(xiàn)等優(yōu)點,但由其算法可知,其迭代步長μ為一固定值,當μ值取值較小時,算法收斂速度降低,但收斂后穩(wěn)態(tài)誤差較小;而當μ值取值較大時,可以提升算法的收斂速度,但會導(dǎo)致穩(wěn)態(tài)誤差增大,甚至引起震蕩現(xiàn)象。這一特性會導(dǎo)致該算法在實際應(yīng)用中面臨收斂速度與穩(wěn)態(tài)誤差不可兼得的問題。
為了解決以上問題,已經(jīng)有大量的研究者進行了研究并提出新的算法[3~9]。一種主流的方法是通過構(gòu)建迭代步長μ與誤差e之間的非線性關(guān)系,使得在算法的起始階段,迭代步長μ的取值較大,從而獲得較快的收斂速度;而在算法接近收斂時,迭代步長μ取值趨近于零,從而降低穩(wěn)態(tài)誤差。在已有研究中,文獻[3]基于S 函數(shù)構(gòu)造了變步長模型,文獻[4]基于指數(shù)函數(shù)構(gòu)造了變步長模型,文獻[5]、文獻[6]基于對數(shù)函數(shù)構(gòu)造了變步長模型,除此之外,還有學者提出了基于箕舌線,反正切和雙曲正切構(gòu)造的變步長模型[7~9]。這些算法都在某些方面取得了良好的效果,但也存在著一些不足,如文獻[3]中S 函數(shù)模型在曲線底部較為陡峭,導(dǎo)致穩(wěn)態(tài)誤差增大;文獻[5]中的算法模型在誤差e尚未達到零時步長μ已變?yōu)榱?,影響算法性能;文獻[9]中的算法模型過于復(fù)雜,導(dǎo)致計算量過大,缺少靈活性等。
由前文可知,在良好的變步長LMS 算法中,其步長誤差曲線應(yīng)該在誤差較大和接近零時具有更為分化的特性,即當誤差較大時,步長誤差曲線應(yīng)該較為陡峭,使得隨著誤差的增大,步長取值可以迅速增大以提高收斂速度;當誤差較小時,步長誤差曲線應(yīng)該趨于平緩,使得算法在接近收斂時,步長取值不會劇烈變化,避免導(dǎo)致穩(wěn)態(tài)誤差的提升乃至引起震蕩。對數(shù)函數(shù)由于其自身的特性,在進行適當?shù)淖儞Q后,可以較好的滿足這一要求。因此,本文以對數(shù)函數(shù)為原型,提出了一種改進的變步長LMS 算法,算法中步長μ和誤差e的對應(yīng)關(guān)系如式1 所示:
其中a,b 為參數(shù),參數(shù)a 用于控制算法的幅值,參數(shù)b 用于控制曲線的形狀。通過對該式進行分析可知,當誤差e趨近于零時,步長μ也趨近于零,由此避免了μ提前歸零導(dǎo)致的穩(wěn)態(tài)誤差增大的情況。同時,由于對數(shù)函數(shù)曲線具有良好的下降特性且其運算相對簡單,因而在保證了算法性能的同時降低了計算復(fù)雜度。
參數(shù)a,b 對步長μ與誤差e的關(guān)系曲線的影響情況如圖3、圖4 所示。
圖3 參數(shù)a 取不同值時本文算法步長誤差關(guān)系曲線
圖4 參數(shù)b 取不同值時本文算法步長誤差關(guān)系曲線
圖3 為參數(shù)b 取值為1,參數(shù)a 取值分別為0.8,1,1.2時的步長誤差關(guān)系曲線,對圖3 進行分析可知,參數(shù)a 對步長幅值的線性調(diào)整主要體現(xiàn)在誤差較大的階段,即函數(shù)尚未收斂時,增大a 值可提高算法的迭代步長,減小a 值可降低算法的迭代步長。
圖4 為參數(shù)a 取值為1,參數(shù)b 取值分別為0.5,1,1.5時的步長誤差關(guān)系曲線,對圖4 進行分析可知,參數(shù)b 主要影響誤差步長曲線的開口大小,參數(shù)b 取值越大,曲線在接近收斂時梯度越大,步長在誤差趨近于零時的下降幅度越大,算法曲線在尚未收斂和接近收斂時的特性差異越明顯。
本文通過仿真結(jié)果來進行最佳參數(shù)的選擇,仿真條件為:
(1)自適應(yīng)濾波器的階數(shù)為2;
(2)系統(tǒng)的初始濾波器系數(shù)為[0.8,0.5];
(3)x(n)選用均值為0,方差為1 的高斯白噪聲;
(4)v(n)選用均值為0,方差為0.04,且與x(n)不相關(guān)的高斯白噪聲;
(5)仿真點數(shù)為512,為了排除單次仿真極端值的干擾,獲得更為準確的收斂曲線,每組參數(shù)取值下均進行200次重復(fù)實驗,對每次實驗的迭代誤差的絕對值取算術(shù)平均值后,再繪制該組參數(shù)下的收斂曲線。
圖5 為參數(shù)b 取值為1,參數(shù)a 取值分別為0.2,0.5,0.8時本文變步長LMS 算法的收斂曲線,由圖可知當參數(shù)a 從0.2 上升到0.5 時,算法的收斂速度顯著提升;但當參數(shù)a繼續(xù)上升至0.8 時,算法的收斂速度無明顯上升,且在收斂起始階段產(chǎn)生了不穩(wěn)定的震蕩??紤]到其他因素的綜合影響,參數(shù)a 的最佳取值應(yīng)該選擇在0.2 到0.5 之間。
圖5 參數(shù)a 取不同值時本文算法收斂曲線
圖6 為參數(shù)a 取值為0.3,參數(shù)b 取值分別為1,30,50時本文變步長LMS 算法的收斂曲線,由圖可知當參數(shù)b 從1 上升到30 時,算法的收斂速度顯著提升;但當參數(shù)b 由30 繼續(xù)上升至50 時,算法的收斂速度已無明顯上升,且在收斂后穩(wěn)態(tài)誤差有所增加。綜合考慮,參數(shù)b 的最佳取值應(yīng)選擇為30 左右。
圖6 參數(shù)b 取不同值時本文算法收斂曲線
為了比較本文提出的變步長LMS 算法與已有算法的性能,本文將該算法與文獻[6]中算法在2.3 節(jié)所介紹的仿真條件下進行測試,并進行對比。在參數(shù)的選取上,本文算法中選擇當前仿真環(huán)境下的算法性能最優(yōu)時的參數(shù);參數(shù)a為0.3,參數(shù)b 為30;文獻[6]中算法同樣選擇當前仿真環(huán)境下算法性能最優(yōu)時的參數(shù):參數(shù)1 為0.15,參數(shù)2 為0.6。
算法性能對比結(jié)果如圖7 所示,從對比結(jié)果可以看出,不論是算法的收斂速度,還是算法收斂以后的穩(wěn)態(tài)誤差,本文算法均優(yōu)于文獻[6]提出的算法。
圖7 本文算法與文獻[6]算法性能對比
為了驗證本文提出的變步長LMS 算法在語音降噪領(lǐng)域的應(yīng)用,本文按照圖2 結(jié)構(gòu)設(shè)置了實驗進行測試。其中,參考噪聲x(n)采用均值為0,方差為0.01 的高斯白噪聲,待降噪信號為錄制人聲音頻與x(n)經(jīng)模擬信道后相加所得混合信號,自適應(yīng)濾波器階數(shù)為8。同時,根據(jù)第三節(jié)所分析的最佳參數(shù)范圍,根據(jù)實際降噪效果確定參數(shù)a 與參數(shù)b,通過在參考值附近進行多次測試確定最優(yōu)值,測試結(jié)果證明,參數(shù)a 為0.2,參數(shù)b 為20 時降噪效果最佳。
圖8 為參考噪聲信號和包含噪聲的音頻信號;圖9 為使用本文提出的變步長LMS 算法降噪后得到的音頻信號和降噪后音頻信號與原始音頻信號之間的誤差;圖10 為使用傳統(tǒng)的定步長LMS 算法降噪后得到的音頻信號和降噪后音頻信號與原始音頻信號之間的誤差。
圖8 參考噪聲與帶噪音頻信號
圖9 本文變步長LMS 算法降噪效果及與原信號誤差
圖10 傳統(tǒng)LMS 算法降噪效果及與原信號誤差
可以看到,本文提出的算法對寬帶白噪聲具有良好的濾除效果,同時相較于傳統(tǒng)的固定步長的LMS 算法,本文提出的算法收斂更快,并具有更小的穩(wěn)態(tài)誤差。經(jīng)測試,使用本文算法降噪前信噪比為8.5dB,降噪后性噪比為61.4dB,信噪比提升為52.9dB,降噪效果顯著。
本文提出了一種新的變步長LMS 算法,對算法進行了理論分析并討論了其最優(yōu)參數(shù)的取值。與相關(guān)文獻提出算法進行的對比測試表明,本文算法不論是在收斂速度還是在穩(wěn)態(tài)誤差上均有更好的表現(xiàn)。最后,將本文所提出算法應(yīng)用于語音降噪領(lǐng)域并取得了良好的效果。如何進一步優(yōu)化模型使其易于在單片機或FPGA 等平臺上實現(xiàn),將是下一步的研究方向。