司永鳳,高云龍,王永娟
(南京理工大學 機械工程學院, 南京 210094)
近些年恐怖襲擊事件日益增多,面對暴虐的恐怖分子,需要謹慎安排救險工作才能將人質平安的解救出來。當內部劫持情況不明時,救險人員直接進入可能會對人質的生命安全造成威脅且自身也會有危險,這時就需要小型偵查類設備代替救險人員進入事故現場監聽內部語音信息,方便采取行動。考慮到偵查工作的隱蔽性,設備只能遠距離(通常1~10 m)采集聲音信號,但由于真實環境中存在墻壁、障礙物等反射的干擾,導致拾取到的信號質量下降[1-2],進而影響系統識別率。為解決這一問題,引入了回聲消除技術。
現有的回聲消除技術中,以自適應濾波[3]處理回聲為主的方案較為常用,其中最小均方[4](least mean square,LMS)算法與歸一化最小均方[5-6](NLMS)算法因其易于實現且復雜度低成為算法實現中采用最多的算法。NLMS算法是在LMS算法的基礎上,通過將固定步長改為可變步長,解決了輸入信號相關情況下LMS算法收斂速度慢的問題,但它受噪聲影響較大,穩態性能有待提高。為了解決這一問題,人們相繼提出了很多改進的變步長LMS算法,意圖通過變步長平衡收斂速度與穩態誤差之間的關系。覃景繁等[7]提出了一種新變步長LMS算法(sigmoid variable step least mean square,SVSLMS),其原理是利用步長與誤差之間的非線性函數關系實現收斂速度與穩態誤差之間的平衡,但算法收斂完成后,步長受誤差影響較大,這種平衡不再維持。為了提升算法性能,程建民等[8]基于雙曲正弦函數提出了變步長LMS改進算法,通過將瞬時誤差與步長值相關聯,在滿足步長調整原則的基礎上,實現了對步長值的動態調整。之后,劉憲爽等[9]基于Sigmoid函數對算法提出了改進,使其穩定性與準確度得到了有效提升。
實際應用中,如何在收斂速度、穩態誤差、計算量等各方面做到兼顧是自適應濾波算法設計中的關鍵。基于上述分析,本文中將NLMS算法與步長調整原則相結合,通過對語音識別原理及遠場回聲的分析,提出了一種基于雙曲正弦函數的變步長NLMS改進算法,搭建相應的遠場語音識別試驗平臺,結合嵌入式設備樹莓派Zero WH對該算法測試,以驗證改進算法降低系統詞錯誤率的有效性。
聲學回聲的產生與周圍復雜多變的環境有關,在遠端環境中,根據室內物品的擺放,遠端揚聲器播放的近端語音信號可能被環境內多個物體反射后形成回聲信號被麥克風采集或不經過物體反射直接被麥克風采集。回聲產生原理如圖1所示,空曠房間內,遠端說話人聲音通過多種路徑反射形成了回聲語音信號,因此麥克風除遠端說話人聲外還采集到了回聲信號,影響了輸入端語音信號的質量[10]。

圖1 回聲產生原理示意圖
到目前為止,多種自適應濾波算法被提出并得到推廣應用。原理主要是:自適應濾波器模擬和追蹤真實的 “回聲路徑”,并由收斂出的“回聲路徑”(濾波器系數)對回聲做出估計,再從近端純凈語音與回聲疊加后的信號中減去估計的回聲,從而到達消除回聲目的[11]。
圖2為回聲消除技術基本原理示意圖。其中,回聲y′(n)是遠端輸入信號x(n)與回聲路徑W′(n)線性卷積的結果,y(n)是對回聲y′(n)的估計,W(n)是對真實回聲路徑W′(n) 的模擬,e(n)為自適應濾波器輸出的殘差信號,表示估計的回聲與真實回聲之間的誤差值,可用式(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)
為防止回聲路徑發生緩變或突變時抑制回聲能量的問題,濾波器必須及時調整自身系數以“跟蹤”回聲路徑的變化,因此必須用自適應算法實時更新濾波器W(n),NLMS算法迭代公式為[12-13]
(2)
式(1)中:μ/xT(n)x(n)+δ為可變的步長因子,與遠端輸入信號x(n)的自相關矩陣xT(n)x(n)有關,能夠加快收斂速度。δ為一取值較小的正常數,以防止當輸入信號過小時而帶來的算法性能的不穩定性。

圖2 回聲消除技術基本原理圖
NLMS算法相比于經典的LMS算法優勢在于不增加計算復雜度的前提下,具有更快的收斂速度,但其本身也存在一些性能上的缺陷,即收斂速度雖快,但隨著迭代的進行,收斂速度一直在下降,影響回聲消除的效果。因此,文中對NLMS算法提出改進,嘗試分析步長因子隨迭代次數變化的有關規律。
變步長NLMS改進算法的設計思想是使步長和誤差之間滿足一種函數關系,以誤差為可調節的自變量來控制步長,使其始終在滿足使用要求的某一范圍值內。雙曲正弦函數[14]是雙曲函數的一種,該函數關于原點對稱,具有嚴格單調性,通過引入幅度因子a、b和指數c對其作簡單線性變換,可以得到步長調整函數表達式為
μ(n)=a*|sinh[b*e(n)c]|
(3)
其中,參數a用于控制取值范圍,參數b、c用于控制圖形形狀。
圖3所示為步長調整函數曲線,可以看出,NLMS改進算法在初始收斂過程中誤差值e(n)較大,此時函數也提供了較大的步長值μ(n),使得改進算法具有較快的收斂速度;而在算法收斂完成后,自適應濾波器W(n) 已接近回聲路徑W′(n),誤差值e(n)接近于零,此時回聲信號得到了有效抑制,函數對應的步長值μ(n)維持在一個較小的范圍值內,有利于算法在該過程中保持更好的穩定性,證實了該函數滿足步長調整原則。

圖3 步長調整函數曲線
本文改進算法的迭代步驟:
算法:NLMS改進算法
參數:μ:步長因子L:自適應濾波器的長度
初始條件:ω(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)
步長函數:μ(n)=a*|sinh[b*e(n)c]|
為了直觀分析步長調整函數中參數a、b、c對算法收斂速度的影響,在滿足步長穩定條件下,通過試錯法[15-16]分別對各參數的取值原則和范圍進行討論以獲得最優取值。其中,圖4(a)條件設為b、c值保持不變,a分別取0.01、0.02、0.05;圖4(b)條件設為a、c值保持不變,b分別取1、1.5、2;圖4(c)設為a、b值保持不變,c分別取值1、2、4。

圖4 誤差e(n)與步長μ(n)之間的關系曲線
分析圖4(a)、圖(b)所對應的步長調整曲線可知,參數a、b主要作用是調節函數曲線的幅值。a、b取值越小步長因子在誤差接近零處變化越小,但在算法收斂初期不能夠為算法提供較大的步長取值,算法收斂速度較慢;當a、b取值較大時,能夠提供較大的步長取值使算法有較快的收斂速度,但同時步長因子在誤差接近零點處變化較快,可能錯過最佳步長值影響算法的穩定性。因此,在本仿真環境下,為獲得更快的收斂速度和更優的穩定性,參數a、b分別取值為0.02、1.5時,算法性能相對更優。
分析圖4(c)所對應的步長調整曲線可知,參數c主要作用是調節函數誤差接近零點處的曲線平滑程度。c取值越大,函數誤差接近零點處的曲線越平滑,算法在收斂完成階段越穩定,但考慮到c對應指數函數,增大后將大大增加計算量,因此參數c取適中值2時,算法性能相對更優。
基于Matlab平臺對算法模擬仿真,分析NLMS算法[13]、文獻[8]算法、SVSLMS算法[7]與文中基于雙曲正弦函數提出的變步長NLMS改進算法之間的差異性。考慮到實際遠場識別環境中混響以及回聲影響比較強,仿真條件設置為信干比SIR分別為5 dB和10 dB時,自適應濾波器階數為8,音頻采樣點數為1 000的獨立仿真試驗。最終得到以均方誤差(mean square error,MSE)為評價標準的算法收斂對比曲線,分別如圖5(a)、圖5(b)所示。
圖5(a)可以看出:在信干比為5 dB的情況下,NLMS算法的穩態誤差較大,文獻[8]算法以及SVSLMS算法的收斂速度相比于本文中NLMS改進算法較慢;增加干擾信號的強度后,改進算法的優勢更加明顯,由圖5(b)可知,文中基于雙曲正弦函數的變步長NLMS改進算法收斂速度最快,并且在收斂完成后,算法仍能穩定地保持在一個較小的均方誤差下。在仿真驗證理論分析正確的同時,也表明文中提出的變步長NLMS改進算法性能更優。

圖5 算法收斂曲線
回聲消除技術是語音識別系統中的關鍵步驟,有效的回聲抑制可以提高音頻信號的整體識別效果。為測試改進算法實際應用時的有效性,現基于Python語言搭建了遠場語音識別系統,并將其移植到嵌入式硬件平臺上做進一步驗證。
本文中基于Linux操作系統完成了語音識別嵌入式軟件程序設計,主要包括信號采集程序和語音識別主程序兩部分。
準確地捕捉到聲音信號是語音識別系統流程中關鍵的一步,程序設計思路是設定一個聲音閾值,通過不斷將采集到的信號與閾值進行比較,實現語音信號的采集。語音識別主程序主要包括特征提取與模型解碼,首先利用標準數據庫語音對搭建好的模型進行訓練,從而得出該模型的參數,當未知語音輸入時,提取待識別語音的梅爾頻率倒譜系數(mel frequency cepstrum coefficient,MFCC)特征值,通過模型解碼即可得到識別結果。具體算法流程如圖6所示。

圖6 軟件流程框圖
語音識別系統硬件平臺結構體系如圖7所示,采用樹莓派Zero WH作為系統移動端,搭配ReSpeaker 2-Mics Pi HAT雙麥克風陣列板采集語音信號。工作時,樹莓派Zero WH與宿主機通過網絡連接,在宿主機上遠程登錄樹莓派操作系統作為虛擬終端執行語音采集命令,再將采集到的語音信號傳到上位機(宿主機)端進行語音識別操作,最終輸出識別結果。

圖7 硬件平臺結構體系框圖
1) 測試數據。測試所用數據集包括標準數據集以及本人錄制的音頻樣本。其中,標準數據集為開源的THCHS30、ST-CMDS中文數據庫,另一部分音頻樣本是在信噪比 40 dB的安靜環境下采用雙麥克風陣列板錄制的采樣頻率為16 kHz、采樣大小為16 bits的純凈音頻文件。此外為了增強語音識別模型的適應性及抗干擾性,將純凈音頻與回聲模型2[17]做卷積運算得到含噪語音,將其引入數據庫中實現數據集的擴充。采用詞錯誤率(word error rate,WER)對系統識別率做評估,其計算公式為
(4)
式中:T是識別結果總詞數,S、D、I分別是替代錯誤、刪除錯誤、插入錯誤的詞數,WER值越小說明系統識別效果越好。
2) 模型構建。語音識別網絡結構體系如圖8所示,語音文件轉化為頻譜圖作為模型輸入,首先經過5次卷積-Dropout-卷積-最大池化-Dropout的循環,其中Dropout層目的是降低方差,防止模型過擬合;在最后一次循環的Dropout層之前加入一個Reshape層改變輸入數據的維數,實現對不同層的連接;之后再連接2個帶有Dropout層的全連接層網絡,對提取到的特征進行整合分類,最后通過Softmax層連接CTC(connectionist temporal classification)模型,使用CTC的loss作為損失函數,實現連接性時序多輸出。

圖8 CNN-CTC網絡結構體系框圖
CTC[18-21]作為一種端到端的語音識別方式,不需要在幀級別上對其標簽,它可以根據輸入的每幀預測信息,尋找具有最高概率的標簽序列進行輸出,大大簡化了聲學模型的訓練過程。網絡模型參數設置如表2所示。

表2 網絡模型參數
3) 試驗結果與分析。語音信號是一種短時平穩信號,不同幀內語音的信噪比不同,為了更好地表征語音信號的性能,采用頻率加權分段信噪比(frequency-weightedsegmented speech signal-to-noise ratio,FWSSSNR)作為語音質量評價指標,且FWSSSNR數值越高,表示該段語音信號質量越好。
從驗證集和錄制的純凈音頻樣本中隨機選取10句音頻文件,分別與回聲模型2做卷積運算得到最終語音信號。通過改進算法對合成后的語音信號做回聲消除,進一步地,采用FWSSSNR指標分別對NLMS算法(算法Ⅰ)和NLMS改進算法(算法Ⅱ)處理后的語音信號質量進行評價。
由圖9可知,采用算法Ⅱ對混合語音信號做回聲消除后,回聲部分波形幾乎被完全消除,且圖10所示不同算法對應的FWSSSNR結果進一步證明,加入回聲后的語音經2種算法處理后,FWSSSNR數值均有所提升,但算法Ⅱ相比算法Ⅰ性能更優、增強效果更明顯。

圖9 基于算法Ⅱ的語音波形曲線Fig.9 Speech waveform based on algorithm Ⅱ

圖10 不同算法FWSSSNR直方圖
表3所示為系統識別率測試結果,其中Δ為算法Ⅱ與算法Ⅰ之間的錯誤率差值。可以看出,加入回聲后的語音詞錯誤率高達60%以上,通過2種算法做語音增強后,系統詞錯誤率明顯降低,且采用算法Ⅱ比采用算法Ⅰ的詞錯誤率降低了約10%,系統平均識別率在80%左右,驗證了基于雙曲正弦函數的NLMS改進算法在實際應用中的有效性。

表3 語音識別系統回聲消除前后的詞錯誤率
在現有語音識別技術的基礎上,針對復雜背景中回聲影響系統識別率的問題,提出了基于雙曲正弦函數的變步長NLMS改進算法,經仿真驗證,改進算法具有實時調整步長、不增大收斂誤差的條件下具有更快收斂速度的優勢。
通過搭建嵌入式硬件平臺對算法實際性能進行測試,結果表明,應用改進算法做回聲消除后系統詞錯誤率降低了約10%,平均識別率得到了明顯提升,在遠場語音識別中具有實際應用價值。