郭翠娟,曹 磊,武志剛
(天津工業(yè)大學 電子與信息工程學院,天津300387)
語音通信是工業(yè)現(xiàn)場生產(chǎn)調(diào)度中廣泛采用的通信方式。但語音信號會受到工業(yè)現(xiàn)場環(huán)境噪聲的影響,這些噪聲具有功率大、難以估計的特點,嚴重降低了語音的可懂度,還會引起聽覺疲勞。針對現(xiàn)有通信系統(tǒng)存在的復雜噪聲環(huán)境下語音通信質量差的問題[1],可以采用語音降噪的方法提高通信質量。國內(nèi)外常用的語音降噪算法包括自適應濾波法、譜減法和維納濾波法[2]。相比譜減法和維納濾波法需要利用噪聲和純凈語音信號的先驗知識,自適應濾波法能夠在未知噪聲條件下,使用自適應算法動態(tài)調(diào)整濾波器參數(shù),保證抑制噪聲的性能達到最優(yōu)。因此,基于自適應濾波法的語音降噪算法得到了廣泛的應用。
在以往自適應濾波法的研究中,為了盡可能獲得純凈的語音信號,文獻[3-6]提出了改進的變步長LMS(least mean square)算法,文獻[7-8]提出了小波分解與自適應濾波法相結合的算法,文獻[9]提出了先經(jīng)過NLMS(normalized least mean square)算法再經(jīng)過RLS(recursive least square)算法的方法,文獻[10]提出了一種雙快速的NLMS算法。雖然這些方法處理后的語音信號質量得到了一定程度的提高,但是上述方法將語音信號模型和噪聲信號模型都假設為高斯分布模型,然而很多語音信號和噪聲信號用高斯分布描述并不合理。Levy提出的α穩(wěn)定分布能夠對具有顯著脈沖特性和重尾的非高斯性信號進行有效描述。針對α穩(wěn)定分布噪聲下的自適應濾波,文獻[11]提出了最小均方p范數(shù)(least mean pth power,LMP)算法,文獻[12]提出了歸一化最小均方p范數(shù)(normalized LMP,NLMP)算法。上述算法能夠對α穩(wěn)定分布噪聲進行有效抑制,但依然存在算法收斂速度慢的問題。為了提高算法的收斂速度,文獻[13]提出了加權平均最小p范數(shù)算法,文獻[14]提出了梯度范數(shù)VSS-NLMP算法,文獻[15]提出了具有改進的自適應聚合經(jīng)驗模態(tài)分解(ensemble empirical mode decomption,EEMD)的方法,文獻[16]提出了遞歸對數(shù)最小均方p范數(shù)(recursive logarithmic least mean pth power,RLLMP)算法。上述改進算法提高了收斂速度,但文獻[13]和[14]提出的算法收斂速度仍遠慢于文獻[16]的算法,文獻[15]的方法主要針對機械故障診斷中的脈沖信號干擾。
在復雜的工業(yè)現(xiàn)場,機器的周期性運轉會產(chǎn)生能量高的有色噪聲,對語音信號影響極大。有色噪聲是一種實際工程系統(tǒng)中常遇到的噪聲,其噪聲序列中每一時刻的噪聲與另一時刻的噪聲相關,協(xié)方差不為零[17]。常見有色噪聲包括:粉紅噪聲、紅噪聲、橙色噪聲等。為了進一步提高有色噪聲環(huán)境下自適應濾波在語音降噪中的性能,本文在文獻[16]基礎上提出了一種改進的遞歸對數(shù)最小均方p范數(shù)(Quasi-Newton RLLMP,QN-RLLMP)算法,利用擬牛頓的方法構建正定矩陣替代矩陣求逆引理,完成矩陣迭代進行語音降噪處理,進一步減小穩(wěn)態(tài)誤差。
研究表明,音頻信號的概率分布用α穩(wěn)定分布比高斯分布描述更為合理[18]。α穩(wěn)定分布的特征函數(shù)滿足如下表達式:
式中:
式中:α為特征參數(shù),取值范圍為(0,2],α值越小,整個函數(shù)表現(xiàn)的脈沖特性越明顯;a為位置參數(shù),其變化會引起整個函數(shù)的水平移動,其取值范圍為(-∞,+∞);γ為分散性參數(shù),γ值越大則數(shù)據(jù)以均值為中心的分散程度越大,其取值范圍為[0,+∞);β為傾斜度參數(shù),如果β為0,那么整個函數(shù)就滿足對稱α穩(wěn)定分布,如果β取值范圍為(0,1],函數(shù)曲線就會右傾斜,反之左傾斜。α、a、γ、β完全確定了α穩(wěn)定分布的特征函數(shù)。
基于自適應濾波的語音降噪系統(tǒng)以自適應噪聲消除方案為基礎,基本原理如圖1所示。
圖1 語音降噪系統(tǒng)的基本原理Fig.1 Basic principle of speech de-noise system
基于自適應濾波的語音降噪模型有2個輸入端,mic1作為主輸入通道,即含噪語音信號,將mic1的輸入信號作為自適應濾波器的期望信號d;mic2作為參考輸入通道,其輸入信號為背景噪聲信號,將mic2的輸入信號作為自適應濾波器的參考信號x。由于mic1和mic2中的噪聲信號是同一噪聲信號產(chǎn)生的,因此,mic1和mic2中的噪聲信號是相關的,且噪聲信號與語音信號不相關。使用自適應濾波算法調(diào)整濾波器參數(shù),使得濾波器輸出的信號接近于mic1中的噪聲信號,相減后得到純凈的語音信號。
2.2.1 RLLMP算法
定義一個基于p范數(shù)的代價函數(shù)[16]為:
式中:e(i)=d(i)-wT(n)x(i);d(i)為期望信號;x(i)為輸入信號;e(i)為后驗誤差信號;wT(n)為自適應濾波器抽頭系數(shù)向量;λ為遺忘因子,其取值范圍最好為[0.99,1]。
對Jw(n)進行梯度求導得
又sgn[e(i)]=e(i)/|e(i)|,式(5)可以改寫為
令
式中:R(n)和U(n)可以分別表示為
根據(jù)矩陣求逆引理[19-20],P(n)可以表示為
對式(12)進一步整理得
式中:
將式(11)、式(13)代入式(7),整理得到
式中:
綜上,RLLMP算法可以歸納為:
(1)初始化:選擇參數(shù)p,λ
兩組心力衰竭、心源性死亡、再發(fā)性心肌梗死、全因死亡等MACE發(fā)生率相比,差異無統(tǒng)計學意義(P>0.05)。與非fQRS組相比,fQRS組復發(fā)性心絞痛、總MACE發(fā)生率相對較高,且差異有統(tǒng)計學意義(P<0.05)。見表1。
(2)算法迭代:for n=1→end do
2.2.2 改進的RLLMP算法(QN-RLLMP)
為了在RLLMP算法的基礎上進一步改善算法性能,并保證算法穩(wěn)定,可通過擬牛頓法構造一個逼近R-1(n)的H(n)矩陣。H(n)為一個正定矩陣,構造的H(n)滿足條件如下:
式中:
由牛頓法梯度搜索,可得權向量的迭代公式為:
將式(10)、式(11)代入式(6)得
用H(n)代替R-1(n),式(20)可以改寫為
令B(n)=[R(n+1)w(n)-U(n+1)]代替式(18)中的B(n)得
H(n)更新公式為:
式中:
由于m(n)在迭代過程中會存在e(n)=0,導致算法不穩(wěn)定,m(n)可以修正為:
綜上,QN-RLLMP算法的實現(xiàn)過程可歸納為:
(1)初始化:選擇參數(shù)p,λ,θ
(2)算法迭代:for n=1→end do
語音降噪系統(tǒng)的硬件部分主要由STM32F429主控芯片、2個語音編解碼電路和SD卡電路等部分組成,其結構框圖如圖2所示。
圖2 語音降噪系統(tǒng)硬件設計Fig.2 Hardware design of speech de-noise system
STM32F429采用Cortex M4內(nèi)核,集成FPU與DSP指令,主頻為180 MHz,非常適合需要浮點運算和DSP處理的應用。芯片自帶1 024 kB的FLASH用于程序存儲與256 kB的SRAM用于數(shù)據(jù)存儲,外圍接口包括IIC、I2S和SDIO。語音編解碼電路采用的編解碼芯片為WM8978。WM8978為全功能音頻處理器,最高支持192 kHz、24 bit的音頻播放。SD卡容量為4 GB,用來存儲含噪語音信號和降噪語音信號的wav文件。STM32F429與WM8978的連接示意圖如圖3所示。
圖3 STM32F429與WM8978連接示意圖Fig.3 Connection diagram of STM32F429 and WM8978
STM32F429通過IIC協(xié)議對WM8978相關寄存器進行配置,通過I2S協(xié)議進行語音數(shù)據(jù)傳輸。STM32F429的IIC接口包括數(shù)據(jù)線SDA與時鐘線SCL。SDA與WM8978的SDIN相連,用于STM32F429向WM8978寫相關寄存器命令。SCL與WM8978的SCLK相連,用于向WM8978提供IIC時鐘信號。STM32F429的I2S接口包括字段選擇線(WS)、串行時鐘線(CK)、串行數(shù)據(jù)線(SD)以及擴展串行數(shù)據(jù)線(ext_SD)。WM8978的I2S接口包括數(shù)據(jù)左右對齊時鐘(LRC)、位時鐘(BCLK)、DAC數(shù)據(jù)輸入(DACAT)及ADC數(shù)據(jù)輸出(ADCAT)。WS與LRC相連,用于語音左右聲道切換,頻率設置為8 kHz。CK與BCLK相連,用于信號同步,頻率設置為256 kHz。SD與DACAT相連,用于STM32F429向WM8978發(fā)送語音數(shù)據(jù)。ext_SD與ADCAT相連,用于STM32F429接收來自WM8978的語音數(shù)據(jù)。STM32F429給WM8978一個主時鐘信號(MCLK),其頻率設置為2 048 kHz。
STM32F429與SD卡的連接示意圖如圖4所示。
STM32F429的SDIO接口包括:時鐘線(SDIOCK)、命令控制線(SDIO-CMD)和數(shù)據(jù)線(SDIO-D0、SDIO-D1、SDIO-D2、SDIO-D3)。SDIO-CK與SD卡的CLK相連,用于給SD卡提供時鐘信號。SDIO-CMD與SD卡的CMD相連,用于STM32F429發(fā)送控制命令給SD卡和SD卡提供響應信息。SDIO-D0、SDIO-D1、SDIO-D2、SDIO-D3分別與DATA0、DATA1、DATA2、DATA3相連,用于STM32F429與SD卡之間的數(shù)據(jù)傳輸。
圖4 STM32F429與SD卡連接示意圖Fig.4 Connection diagram of STM32F429 and SD card
一個麥克風用于采集含噪語音信號,另一個麥克風在聲源直線距離3 m處用于采集噪聲信號。2路信號分別傳送至2個WM8978進行編碼,并輸出至STM32F429,寫含噪wav文件存于SD卡的同時進行語音降噪處理。處理完的數(shù)字語音信號傳送至WM8978解碼輸出,同時寫降噪wav文件存于SD卡,以便后期評估。
系統(tǒng)主程序流程圖如圖5所示。
圖5 系統(tǒng)主程序流程圖Fig.5 Flow chart of system main program
首先對各個部分進行初始化。STM32F429通過IIC對WM8978內(nèi)部寄存器進行初始化操作,包括設置其工作方式、傳輸位數(shù)和采樣率等。開辟一定的數(shù)據(jù)緩沖區(qū),防止數(shù)據(jù)來不及處理時,未處理的數(shù)據(jù)出現(xiàn)丟失。在DMA中斷服務程序中設置一個數(shù)據(jù)到達標志位,用來判斷是否接收到了數(shù)據(jù)。如果標志位置位則將數(shù)據(jù)讀入,如果標志位未置位則返回繼續(xù)讀取。讀入數(shù)據(jù)并寫含噪wav文件存于SD卡。算法處理后采用雙緩沖循環(huán)模式將處理完的數(shù)據(jù)輸出至WM8978解碼,同時寫降噪wav文件存于SD卡。
為驗證QN-RLLMP算法的語音降噪效果,在室內(nèi)進行圖6所示的信號采集試驗,一個麥克風在聲源附近采集含噪語音信號,另一個麥克風在噪聲源附近采集參考噪聲信號,兩個麥克風的直線距離為3 m。分析比較本文QN-RLLMP算法與RLLMP算法以及經(jīng)典的RLS算法對語音中加性噪聲的降噪效果,評價指標包括:時域圖,語譜圖,信噪比,短時客觀可懂度(short-time objective intelligibility,STOI)[22]。
圖6 信號采集示意圖Fig.6 Signal acquisition diagram
設定p=1.2,θ=0.75,λ=0.995。一個均值為0、方差為1的高斯白噪聲信號,通過橫向濾波器并在輸出端與noisex-92噪聲庫中的pink噪聲混合得到一個模擬含噪信號。將高斯噪聲信號作為參考信號,模擬含噪信號作為期望信號,通過自適應濾波算法進行仿真,分析5 000個采樣點、200次重復實驗時的平均均方誤差。仿真結果如圖7所示。
圖7 算法收斂性能分析Fig.7 Analysis of convergence performance of algorithms
由圖7可以看出,本文算法優(yōu)于RLS算法,且與RLLMP算法相比具有更小的穩(wěn)態(tài)誤差。
為了驗證算法在語音降噪方面的性能,在如圖6所示的位置分別置兩個錄音設備同時錄音,在噪聲源位置播放pink噪聲,在聲源位置播放事先錄制的聲音。將兩段錄音文件通過Matlab提取,并通過算法仿真分析,得到純凈語音信號和降噪語音信號語譜圖如圖8所示。不同信噪比情況下,經(jīng)QN-RLLMP算法降噪處理后的信噪比和短時客觀可懂度(STOI)如表1所示。
圖8 純凈語音和不同算法處理后的語音信號語譜圖Fig.8 Speech spectrogram of pure speech and speech signal processed by different algorithms
由圖8可以看出,與RLLMP算法和RLS算法相比,本文提出的QN-RLLMP算法降噪效果較為理想,與純凈的語音信號更為接近。由此可見,在有色噪聲情況下,本文算法性能優(yōu)于RLLMP算法和RLS算法。由表1可以看出,本文算法處理后的信號信噪比平均提升了10 dB,短時客觀可懂度平均提升了0.3,均得到了一定程度的改善。
表1 QN-RLLMP算法處理后的信噪比與STOITab.1 Signal to noise ratio and STOI after QN-RLLMP algorithm processing
本文設計的語音降噪系統(tǒng)的硬件平臺如圖9所示。
圖9 自適應語音降噪系統(tǒng)的硬件平臺Fig.9 Hardware platform of adaptive speech de-noise system
設置采樣率為8 kHz。從聲源處采集含噪語音信號作為期望信號,從噪聲源處采集噪聲信號作為參考信號,經(jīng)WM8978分別編碼后傳入STM32F429進行算法處理,將算法處理完的信號輸出,生成2個wav文件保存于SD卡中。利用MATLAB分析含噪語音信號和降噪語音信號的時域波形,如圖10所示。
圖10 含噪語音信號和降噪語音信號的時域圖Fig.10 Time domain diagram of noisy speech signal and de-noise speech signal
由圖10可以看出,本文提出的算法運用于語音降噪系統(tǒng)能夠顯著降低語音信號中的有色噪聲。在主觀聽覺測試方面,讓人佩戴耳機聽含噪語音信號和降噪語音信號,可以明顯感受到降噪后的語音信號變得更加清晰,可懂度也得到了提高。
本文提出了一種基于自適應濾波的語音降噪算法,對遞歸對數(shù)最小均方p范數(shù)算法進行改進。通過擬牛頓法構建正定矩陣進行語音降噪處理,并以STM32F429為控制核心設計了雙通道語音降噪系統(tǒng)。通過仿真和實驗對比發(fā)現(xiàn):
(1)相比于RLLMP和RLS算法,本文QN-RLLMP算法處理有色噪聲時收斂速度更快,穩(wěn)態(tài)誤差更低。
(2)本文算法得到的降噪語音信號比未處理的信號平均信噪比提升了10 dB,語音可懂度平均提升了0.3。由此表明,本文提出的自適應濾波語音降噪算法能夠有效地進行語音降噪,改善了語音通信質量,具有一定的參考和實用價值。