司永鳳,高云龍,王永娟
(南京理工大學(xué) 機械工程學(xué)院, 南京 210094)
近些年恐怖襲擊事件日益增多,面對暴虐的恐怖分子,需要謹(jǐn)慎安排救險工作才能將人質(zhì)平安的解救出來。當(dāng)內(nèi)部劫持情況不明時,救險人員直接進入可能會對人質(zhì)的生命安全造成威脅且自身也會有危險,這時就需要小型偵查類設(shè)備代替救險人員進入事故現(xiàn)場監(jiān)聽內(nèi)部語音信息,方便采取行動??紤]到偵查工作的隱蔽性,設(shè)備只能遠(yuǎn)距離(通常1~10 m)采集聲音信號,但由于真實環(huán)境中存在墻壁、障礙物等反射的干擾,導(dǎo)致拾取到的信號質(zhì)量下降[1-2],進而影響系統(tǒng)識別率。為解決這一問題,引入了回聲消除技術(shù)。
現(xiàn)有的回聲消除技術(shù)中,以自適應(yīng)濾波[3]處理回聲為主的方案較為常用,其中最小均方[4](least mean square,LMS)算法與歸一化最小均方[5-6](NLMS)算法因其易于實現(xiàn)且復(fù)雜度低成為算法實現(xiàn)中采用最多的算法。NLMS算法是在LMS算法的基礎(chǔ)上,通過將固定步長改為可變步長,解決了輸入信號相關(guān)情況下LMS算法收斂速度慢的問題,但它受噪聲影響較大,穩(wěn)態(tài)性能有待提高。為了解決這一問題,人們相繼提出了很多改進的變步長LMS算法,意圖通過變步長平衡收斂速度與穩(wěn)態(tài)誤差之間的關(guān)系。覃景繁等[7]提出了一種新變步長LMS算法(sigmoid variable step least mean square,SVSLMS),其原理是利用步長與誤差之間的非線性函數(shù)關(guān)系實現(xiàn)收斂速度與穩(wěn)態(tài)誤差之間的平衡,但算法收斂完成后,步長受誤差影響較大,這種平衡不再維持。為了提升算法性能,程建民等[8]基于雙曲正弦函數(shù)提出了變步長LMS改進算法,通過將瞬時誤差與步長值相關(guān)聯(lián),在滿足步長調(diào)整原則的基礎(chǔ)上,實現(xiàn)了對步長值的動態(tài)調(diào)整。之后,劉憲爽等[9]基于Sigmoid函數(shù)對算法提出了改進,使其穩(wěn)定性與準(zhǔn)確度得到了有效提升。
實際應(yīng)用中,如何在收斂速度、穩(wěn)態(tài)誤差、計算量等各方面做到兼顧是自適應(yīng)濾波算法設(shè)計中的關(guān)鍵?;谏鲜龇治觯疚闹袑LMS算法與步長調(diào)整原則相結(jié)合,通過對語音識別原理及遠(yuǎn)場回聲的分析,提出了一種基于雙曲正弦函數(shù)的變步長NLMS改進算法,搭建相應(yīng)的遠(yuǎn)場語音識別試驗平臺,結(jié)合嵌入式設(shè)備樹莓派Zero WH對該算法測試,以驗證改進算法降低系統(tǒng)詞錯誤率的有效性。
聲學(xué)回聲的產(chǎn)生與周圍復(fù)雜多變的環(huán)境有關(guān),在遠(yuǎn)端環(huán)境中,根據(jù)室內(nèi)物品的擺放,遠(yuǎn)端揚聲器播放的近端語音信號可能被環(huán)境內(nèi)多個物體反射后形成回聲信號被麥克風(fēng)采集或不經(jīng)過物體反射直接被麥克風(fēng)采集?;芈暜a(chǎn)生原理如圖1所示,空曠房間內(nèi),遠(yuǎn)端說話人聲音通過多種路徑反射形成了回聲語音信號,因此麥克風(fēng)除遠(yuǎn)端說話人聲外還采集到了回聲信號,影響了輸入端語音信號的質(zhì)量[10]。
圖1 回聲產(chǎn)生原理示意圖
到目前為止,多種自適應(yīng)濾波算法被提出并得到推廣應(yīng)用。原理主要是:自適應(yīng)濾波器模擬和追蹤真實的 “回聲路徑”,并由收斂出的“回聲路徑”(濾波器系數(shù))對回聲做出估計,再從近端純凈語音與回聲疊加后的信號中減去估計的回聲,從而到達(dá)消除回聲目的[11]。
圖2為回聲消除技術(shù)基本原理示意圖。其中,回聲y′(n)是遠(yuǎn)端輸入信號x(n)與回聲路徑W′(n)線性卷積的結(jié)果,y(n)是對回聲y′(n)的估計,W(n)是對真實回聲路徑W′(n) 的模擬,e(n)為自適應(yīng)濾波器輸出的殘差信號,表示估計的回聲與真實回聲之間的誤差值,可用式(1)表示:
e(n)=d(n)-y(n)
(1)
其中:
d(n)=y′(n)+ν(n)=W′T(n)x(n)+ν(n)
y(n)=WT(n)x(n)
為防止回聲路徑發(fā)生緩變或突變時抑制回聲能量的問題,濾波器必須及時調(diào)整自身系數(shù)以“跟蹤”回聲路徑的變化,因此必須用自適應(yīng)算法實時更新濾波器W(n),NLMS算法迭代公式為[12-13]
(2)
式(1)中:μ/xT(n)x(n)+δ為可變的步長因子,與遠(yuǎn)端輸入信號x(n)的自相關(guān)矩陣xT(n)x(n)有關(guān),能夠加快收斂速度。δ為一取值較小的正常數(shù),以防止當(dāng)輸入信號過小時而帶來的算法性能的不穩(wěn)定性。
圖2 回聲消除技術(shù)基本原理圖
NLMS算法相比于經(jīng)典的LMS算法優(yōu)勢在于不增加計算復(fù)雜度的前提下,具有更快的收斂速度,但其本身也存在一些性能上的缺陷,即收斂速度雖快,但隨著迭代的進行,收斂速度一直在下降,影響回聲消除的效果。因此,文中對NLMS算法提出改進,嘗試分析步長因子隨迭代次數(shù)變化的有關(guān)規(guī)律。
變步長NLMS改進算法的設(shè)計思想是使步長和誤差之間滿足一種函數(shù)關(guān)系,以誤差為可調(diào)節(jié)的自變量來控制步長,使其始終在滿足使用要求的某一范圍值內(nèi)。雙曲正弦函數(shù)[14]是雙曲函數(shù)的一種,該函數(shù)關(guān)于原點對稱,具有嚴(yán)格單調(diào)性,通過引入幅度因子a、b和指數(shù)c對其作簡單線性變換,可以得到步長調(diào)整函數(shù)表達(dá)式為
μ(n)=a*|sinh[b*e(n)c]|
(3)
其中,參數(shù)a用于控制取值范圍,參數(shù)b、c用于控制圖形形狀。
圖3所示為步長調(diào)整函數(shù)曲線,可以看出,NLMS改進算法在初始收斂過程中誤差值e(n)較大,此時函數(shù)也提供了較大的步長值μ(n),使得改進算法具有較快的收斂速度;而在算法收斂完成后,自適應(yīng)濾波器W(n) 已接近回聲路徑W′(n),誤差值e(n)接近于零,此時回聲信號得到了有效抑制,函數(shù)對應(yīng)的步長值μ(n)維持在一個較小的范圍值內(nèi),有利于算法在該過程中保持更好的穩(wěn)定性,證實了該函數(shù)滿足步長調(diào)整原則。
圖3 步長調(diào)整函數(shù)曲線
本文改進算法的迭代步驟:
算法:NLMS改進算法
參數(shù):μ:步長因子L:自適應(yīng)濾波器的長度
初始條件:ω(0)=0
輸入:x(n)=[x(n),x(n-1),…,x(n-L+1)]T
ω(n)=[ω1(n),ω2(n),…,ωL(n)]T
濾波:y(n)=WT(n)x(n)
誤差估計:e(n)=d(n)-y(n)
步長函數(shù):μ(n)=a*|sinh[b*e(n)c]|
為了直觀分析步長調(diào)整函數(shù)中參數(shù)a、b、c對算法收斂速度的影響,在滿足步長穩(wěn)定條件下,通過試錯法[15-16]分別對各參數(shù)的取值原則和范圍進行討論以獲得最優(yōu)取值。其中,圖4(a)條件設(shè)為b、c值保持不變,a分別取0.01、0.02、0.05;圖4(b)條件設(shè)為a、c值保持不變,b分別取1、1.5、2;圖4(c)設(shè)為a、b值保持不變,c分別取值1、2、4。
圖4 誤差e(n)與步長μ(n)之間的關(guān)系曲線
分析圖4(a)、圖(b)所對應(yīng)的步長調(diào)整曲線可知,參數(shù)a、b主要作用是調(diào)節(jié)函數(shù)曲線的幅值。a、b取值越小步長因子在誤差接近零處變化越小,但在算法收斂初期不能夠為算法提供較大的步長取值,算法收斂速度較慢;當(dāng)a、b取值較大時,能夠提供較大的步長取值使算法有較快的收斂速度,但同時步長因子在誤差接近零點處變化較快,可能錯過最佳步長值影響算法的穩(wěn)定性。因此,在本仿真環(huán)境下,為獲得更快的收斂速度和更優(yōu)的穩(wěn)定性,參數(shù)a、b分別取值為0.02、1.5時,算法性能相對更優(yōu)。
分析圖4(c)所對應(yīng)的步長調(diào)整曲線可知,參數(shù)c主要作用是調(diào)節(jié)函數(shù)誤差接近零點處的曲線平滑程度。c取值越大,函數(shù)誤差接近零點處的曲線越平滑,算法在收斂完成階段越穩(wěn)定,但考慮到c對應(yīng)指數(shù)函數(shù),增大后將大大增加計算量,因此參數(shù)c取適中值2時,算法性能相對更優(yōu)。
基于Matlab平臺對算法模擬仿真,分析NLMS算法[13]、文獻[8]算法、SVSLMS算法[7]與文中基于雙曲正弦函數(shù)提出的變步長NLMS改進算法之間的差異性??紤]到實際遠(yuǎn)場識別環(huán)境中混響以及回聲影響比較強,仿真條件設(shè)置為信干比SIR分別為5 dB和10 dB時,自適應(yīng)濾波器階數(shù)為8,音頻采樣點數(shù)為1 000的獨立仿真試驗。最終得到以均方誤差(mean square error,MSE)為評價標(biāo)準(zhǔn)的算法收斂對比曲線,分別如圖5(a)、圖5(b)所示。
圖5(a)可以看出:在信干比為5 dB的情況下,NLMS算法的穩(wěn)態(tài)誤差較大,文獻[8]算法以及SVSLMS算法的收斂速度相比于本文中NLMS改進算法較慢;增加干擾信號的強度后,改進算法的優(yōu)勢更加明顯,由圖5(b)可知,文中基于雙曲正弦函數(shù)的變步長NLMS改進算法收斂速度最快,并且在收斂完成后,算法仍能穩(wěn)定地保持在一個較小的均方誤差下。在仿真驗證理論分析正確的同時,也表明文中提出的變步長NLMS改進算法性能更優(yōu)。
圖5 算法收斂曲線
回聲消除技術(shù)是語音識別系統(tǒng)中的關(guān)鍵步驟,有效的回聲抑制可以提高音頻信號的整體識別效果。為測試改進算法實際應(yīng)用時的有效性,現(xiàn)基于Python語言搭建了遠(yuǎn)場語音識別系統(tǒng),并將其移植到嵌入式硬件平臺上做進一步驗證。
本文中基于Linux操作系統(tǒng)完成了語音識別嵌入式軟件程序設(shè)計,主要包括信號采集程序和語音識別主程序兩部分。
準(zhǔn)確地捕捉到聲音信號是語音識別系統(tǒng)流程中關(guān)鍵的一步,程序設(shè)計思路是設(shè)定一個聲音閾值,通過不斷將采集到的信號與閾值進行比較,實現(xiàn)語音信號的采集。語音識別主程序主要包括特征提取與模型解碼,首先利用標(biāo)準(zhǔn)數(shù)據(jù)庫語音對搭建好的模型進行訓(xùn)練,從而得出該模型的參數(shù),當(dāng)未知語音輸入時,提取待識別語音的梅爾頻率倒譜系數(shù)(mel frequency cepstrum coefficient,MFCC)特征值,通過模型解碼即可得到識別結(jié)果。具體算法流程如圖6所示。
圖6 軟件流程框圖
語音識別系統(tǒng)硬件平臺結(jié)構(gòu)體系如圖7所示,采用樹莓派Zero WH作為系統(tǒng)移動端,搭配ReSpeaker 2-Mics Pi HAT雙麥克風(fēng)陣列板采集語音信號。工作時,樹莓派Zero WH與宿主機通過網(wǎng)絡(luò)連接,在宿主機上遠(yuǎn)程登錄樹莓派操作系統(tǒng)作為虛擬終端執(zhí)行語音采集命令,再將采集到的語音信號傳到上位機(宿主機)端進行語音識別操作,最終輸出識別結(jié)果。
圖7 硬件平臺結(jié)構(gòu)體系框圖
1) 測試數(shù)據(jù)。測試所用數(shù)據(jù)集包括標(biāo)準(zhǔn)數(shù)據(jù)集以及本人錄制的音頻樣本。其中,標(biāo)準(zhǔn)數(shù)據(jù)集為開源的THCHS30、ST-CMDS中文數(shù)據(jù)庫,另一部分音頻樣本是在信噪比 40 dB的安靜環(huán)境下采用雙麥克風(fēng)陣列板錄制的采樣頻率為16 kHz、采樣大小為16 bits的純凈音頻文件。此外為了增強語音識別模型的適應(yīng)性及抗干擾性,將純凈音頻與回聲模型2[17]做卷積運算得到含噪語音,將其引入數(shù)據(jù)庫中實現(xiàn)數(shù)據(jù)集的擴充。采用詞錯誤率(word error rate,WER)對系統(tǒng)識別率做評估,其計算公式為
(4)
式中:T是識別結(jié)果總詞數(shù),S、D、I分別是替代錯誤、刪除錯誤、插入錯誤的詞數(shù),WER值越小說明系統(tǒng)識別效果越好。
2) 模型構(gòu)建。語音識別網(wǎng)絡(luò)結(jié)構(gòu)體系如圖8所示,語音文件轉(zhuǎn)化為頻譜圖作為模型輸入,首先經(jīng)過5次卷積-Dropout-卷積-最大池化-Dropout的循環(huán),其中Dropout層目的是降低方差,防止模型過擬合;在最后一次循環(huán)的Dropout層之前加入一個Reshape層改變輸入數(shù)據(jù)的維數(shù),實現(xiàn)對不同層的連接;之后再連接2個帶有Dropout層的全連接層網(wǎng)絡(luò),對提取到的特征進行整合分類,最后通過Softmax層連接CTC(connectionist temporal classification)模型,使用CTC的loss作為損失函數(shù),實現(xiàn)連接性時序多輸出。
圖8 CNN-CTC網(wǎng)絡(luò)結(jié)構(gòu)體系框圖
CTC[18-21]作為一種端到端的語音識別方式,不需要在幀級別上對其標(biāo)簽,它可以根據(jù)輸入的每幀預(yù)測信息,尋找具有最高概率的標(biāo)簽序列進行輸出,大大簡化了聲學(xué)模型的訓(xùn)練過程。網(wǎng)絡(luò)模型參數(shù)設(shè)置如表2所示。
表2 網(wǎng)絡(luò)模型參數(shù)
3) 試驗結(jié)果與分析。語音信號是一種短時平穩(wěn)信號,不同幀內(nèi)語音的信噪比不同,為了更好地表征語音信號的性能,采用頻率加權(quán)分段信噪比(frequency-weightedsegmented speech signal-to-noise ratio,FWSSSNR)作為語音質(zhì)量評價指標(biāo),且FWSSSNR數(shù)值越高,表示該段語音信號質(zhì)量越好。
從驗證集和錄制的純凈音頻樣本中隨機選取10句音頻文件,分別與回聲模型2做卷積運算得到最終語音信號。通過改進算法對合成后的語音信號做回聲消除,進一步地,采用FWSSSNR指標(biāo)分別對NLMS算法(算法Ⅰ)和NLMS改進算法(算法Ⅱ)處理后的語音信號質(zhì)量進行評價。
由圖9可知,采用算法Ⅱ?qū)旌险Z音信號做回聲消除后,回聲部分波形幾乎被完全消除,且圖10所示不同算法對應(yīng)的FWSSSNR結(jié)果進一步證明,加入回聲后的語音經(jīng)2種算法處理后,F(xiàn)WSSSNR數(shù)值均有所提升,但算法Ⅱ相比算法Ⅰ性能更優(yōu)、增強效果更明顯。
圖9 基于算法Ⅱ的語音波形曲線Fig.9 Speech waveform based on algorithm Ⅱ
圖10 不同算法FWSSSNR直方圖
表3所示為系統(tǒng)識別率測試結(jié)果,其中Δ為算法Ⅱ與算法Ⅰ之間的錯誤率差值??梢钥闯觯尤牖芈暫蟮恼Z音詞錯誤率高達(dá)60%以上,通過2種算法做語音增強后,系統(tǒng)詞錯誤率明顯降低,且采用算法Ⅱ比采用算法Ⅰ的詞錯誤率降低了約10%,系統(tǒng)平均識別率在80%左右,驗證了基于雙曲正弦函數(shù)的NLMS改進算法在實際應(yīng)用中的有效性。
表3 語音識別系統(tǒng)回聲消除前后的詞錯誤率
在現(xiàn)有語音識別技術(shù)的基礎(chǔ)上,針對復(fù)雜背景中回聲影響系統(tǒng)識別率的問題,提出了基于雙曲正弦函數(shù)的變步長NLMS改進算法,經(jīng)仿真驗證,改進算法具有實時調(diào)整步長、不增大收斂誤差的條件下具有更快收斂速度的優(yōu)勢。
通過搭建嵌入式硬件平臺對算法實際性能進行測試,結(jié)果表明,應(yīng)用改進算法做回聲消除后系統(tǒng)詞錯誤率降低了約10%,平均識別率得到了明顯提升,在遠(yuǎn)場語音識別中具有實際應(yīng)用價值。