陳建明,梁志成
(陸軍裝甲兵學(xué)院 信息通信系, 北京 100072)
語音增強(qiáng)是語音信號處理領(lǐng)域的一個(gè)重要分支,主要目標(biāo)是從帶噪聲的語音信號中提取盡可能純凈的原始語音信號,提高語音信號的質(zhì)量、清晰度和可懂度。語音增強(qiáng)算法主要分為兩大類:有監(jiān)督算法和無監(jiān)督算法。比較典型的無監(jiān)督算法有:譜減法、自適應(yīng)濾波法、小波變換法、EEMD(Ensemble Empirical Mode Decomposition)法等[1],基本原理是通過先估計(jì)噪聲的譜信息,然后從帶噪語譜中將估計(jì)的噪聲譜減去以獲得干凈的語音譜。其優(yōu)點(diǎn)是運(yùn)算量比較小,可實(shí)現(xiàn)實(shí)時(shí)語音增強(qiáng),便于實(shí)際應(yīng)用。缺點(diǎn)是各個(gè)無監(jiān)督算法都會不同程度的產(chǎn)生“音樂噪聲”[2]。其中譜減法中的“音樂噪聲”最明顯;自適應(yīng)濾波法主要是利用濾波器估計(jì)發(fā)音器官的聲道參數(shù)和激勵(lì)源的參數(shù),但在信噪比較低的情況下,難以估計(jì)出正確的參數(shù),會產(chǎn)生嚴(yán)重的語音失真;小波法可以靈活選擇小波基,由于語音信號的時(shí)變性,如何有效地選擇小波基是一大難點(diǎn)[3]。EEMD法是由于剔除不同頻率分量造成高頻語音損失,語音失真的問題在低信噪比下更加嚴(yán)重。再者,傳統(tǒng)無監(jiān)督算法都基于平穩(wěn)噪聲的假設(shè),對于非平穩(wěn)噪聲,尤其是極端非平穩(wěn)噪聲(比如機(jī)關(guān)槍射擊聲)難以起到有效的增強(qiáng)作用。最后,傳統(tǒng)的無監(jiān)督算法中,存在一些為了計(jì)算而采取的假設(shè),例如噪聲是加性的、噪聲和語音互相獨(dú)立,這些假設(shè)和近似,對傳統(tǒng)語音增強(qiáng)算法性能的進(jìn)一步提高形成制約[4]。就目前有關(guān)語音增強(qiáng)算法的研究來說,無監(jiān)督算法的研究已趨于成熟,由于算法原理本身的局限性,無法滿足非線性、非平穩(wěn)語音信號的去噪要求,也不可能有通用的去噪算法。有監(jiān)督算法主要分為:淺層模型和深層模型。淺層模型有淺層神經(jīng)網(wǎng)絡(luò)、隱馬爾科夫模型 HMM(Hidden Markov Model)和非負(fù)矩陣分解NMF(Nonnegative Matrix Factorization)等?;贖MM和NMF的語音增強(qiáng)算法,都是基于噪聲和語音之間是獨(dú)立的假設(shè),限制了語音增強(qiáng)性能的上限;對于淺層神經(jīng)網(wǎng)絡(luò)來說,網(wǎng)絡(luò)層數(shù)少,隱含層節(jié)點(diǎn)數(shù)少,無法精確地學(xué)習(xí)到帶噪語音和純凈語音間復(fù)雜的非線性關(guān)系,而且淺層神經(jīng)網(wǎng)絡(luò)缺乏有效的初始化方法,隨機(jī)初始化造成每次訓(xùn)練結(jié)果不穩(wěn)定,容易陷入局部最優(yōu)解[5]。深層模型起于2006年Hinton等人提出深度信念網(wǎng)絡(luò)[6](DBN),使用受限玻爾茲曼機(jī)(RBM)逐層訓(xùn)練神經(jīng)網(wǎng)絡(luò)的初始化權(quán)值[7],使得深度神經(jīng)網(wǎng)絡(luò)(DNN)開始受到國內(nèi)外研究者的廣泛關(guān)注,并在圖像、語音、視頻和自然語言處理等領(lǐng)域取得巨大進(jìn)步。DNN應(yīng)用于語音增強(qiáng)是近幾年研究的熱點(diǎn),通過網(wǎng)絡(luò)學(xué)習(xí)帶噪語音和純凈語音之間復(fù)雜的非線性映射關(guān)系,并不斷調(diào)整網(wǎng)絡(luò)參數(shù)以找到最優(yōu)的函數(shù)關(guān)系,從而去除噪聲。文獻(xiàn)[7]提出了一種基于理想二元時(shí)頻掩蔽估計(jì)的語音增強(qiáng)方法,該方法把語音增強(qiáng)問題轉(zhuǎn)化成用DNN估計(jì)理想二元時(shí)頻掩蔽估計(jì)的分類問題,該方法對于低信噪比非平穩(wěn)語音增強(qiáng)可得到高可懂度的增強(qiáng)語音,語音音質(zhì)損失嚴(yán)重。文獻(xiàn)[8]提出了一種基于DNN的最小均方誤差回歸擬合語音增強(qiáng)方案,該方法基于對數(shù)功率譜最小均方誤差準(zhǔn)則,通過DNN對帶噪語音和干凈語音間的復(fù)雜關(guān)系進(jìn)行回歸擬合建模。文獻(xiàn)[9]提出了采用一種堆疊式去噪自編碼器來進(jìn)行語音增強(qiáng)的方法。目前,監(jiān)督性語音分離的框架基本成熟,即利用深度模型學(xué)習(xí)一個(gè)從帶噪特征到分離目標(biāo)的映射函數(shù),很難在框架層面進(jìn)行重大的改進(jìn)。DNN用于語音增強(qiáng)處理研究主要集中在如何進(jìn)一步提升對不包含在訓(xùn)練集噪聲環(huán)境下的語音增強(qiáng)性能,即提升系統(tǒng)的泛化能力;研究語音增強(qiáng) DNN模型在噪聲環(huán)境的自適應(yīng)問題和進(jìn)一步將深度學(xué)習(xí)方法應(yīng)用到多通道語音增強(qiáng)中等[5]。本文針對典型裝甲車輛運(yùn)動噪聲背景下語音傳輸質(zhì)量差問題,采用基于EEMD預(yù)處理和DNN結(jié)合的方法,研究DNN模型在該噪聲環(huán)境下的自適應(yīng)性,達(dá)到提高語音質(zhì)量和可懂度的目的。
本算法分三部分:數(shù)據(jù)預(yù)處理階段、模型訓(xùn)練階段和增強(qiáng)處理階段。算法整體框圖如圖1。
圖1 算法整體框圖
① 數(shù)據(jù)預(yù)處理階段。包括兩個(gè)部分:EEMD分解和特征提取。首先將帶噪語音信號和純凈語音信號進(jìn)行EEMD分解,獲得一組頻率從高到低的本征模態(tài)函數(shù)IMF(Intrinsic Mode Function)分量,原一維時(shí)域信號分解成多維時(shí)域信號,更便于DNN學(xué)習(xí)帶噪語音與純凈語音間的關(guān)系。提取時(shí)域的信號特征,組成特征向量,輸入神經(jīng)網(wǎng)絡(luò)中進(jìn)行訓(xùn)練,網(wǎng)絡(luò)的訓(xùn)練目標(biāo)為純凈語音信號的特征。
② 模型訓(xùn)練階段。經(jīng)過預(yù)處理后,帶噪語音和純凈語音分別被分為相對應(yīng)的特征樣本,在訓(xùn)練階段,將特征樣本和對應(yīng)的訓(xùn)練目標(biāo)按批次輸入到DNN中進(jìn)行訓(xùn)練,經(jīng)過信號的正向傳播和誤差的反向傳播,得到最優(yōu)的網(wǎng)絡(luò)模型并進(jìn)行保存。DNN訓(xùn)練模型如圖2所示。
圖2 DNN訓(xùn)練模型
③ 增強(qiáng)階段。增強(qiáng)階段是對真實(shí)帶噪語音進(jìn)行處理。首先將待測語音按照①中步驟完成預(yù)處理,得到特征向量。然后輸入到②中獲得的最優(yōu)網(wǎng)絡(luò)模型中進(jìn)行增強(qiáng)處理,最后將輸出的特征向量結(jié)合帶噪語音的相位一起合成可主觀測聽的語音波形文件。
EEMD分解[10]的實(shí)質(zhì)是對信號進(jìn)行平穩(wěn)化處理,不借助任何基函數(shù),只需根據(jù)信號自身的時(shí)間尺度特征進(jìn)行分解,使整個(gè)“篩分”過程具有直接性和自適應(yīng)性,突出了信號的局部特征,能更直觀地觀察分析信號,對于非線性、非平穩(wěn)信號的處理有很大幫助[11]。
選取含有-5 dB裝甲車運(yùn)動噪聲的帶噪語音“四百米障礙”y(t)進(jìn)行EEMD分解,波形圖如圖3所示,分解后各IMF分量如圖4所示。從圖4可以直觀的看到每個(gè)IMF分量的時(shí)域波形,不同級數(shù)的IMF,其包含的信號頻率、能量等均不相同。各IMF占原信號的能量比如表1所示,由表1可知信號的能量主要集中在級數(shù)較低的IMF中,前7個(gè)IMF大約占總能量的85%,其余的只占總能量的15%。能量較低的低頻虛假分量對語音分析沒有意義,因此在EEMD分解后,本文只保留信號的前7個(gè)分量進(jìn)行分析。
圖3 帶噪語音“四百米障礙”波形
圖4 EEMD分解后IMF(1-12)的波形
IMF1IMF2IMF3IMF4IMF5IMF6IMF7IMF8IMF9IMF10IMF11IMF120.090.220.240.100.090.070.050.030.020.020.010.06
步驟如下:
① 經(jīng)EEMD分解后獲得IMF分量。語音信號經(jīng)EEMD分解后,能初步區(qū)分噪聲分量和語音分量,這對于DNN來說是非常重要的信息,可以排除許多干擾因素。
② 選擇有效的IMF分量,并對各IMF分量分幀。
③ 短時(shí)傅立葉變換。對各IMF每一幀信號進(jìn)行FFT變換,從時(shí)域數(shù)據(jù)變?yōu)轭l域數(shù)據(jù)。
④ 計(jì)算各IMF的譜線能量。
⑤ 計(jì)算對數(shù)功率譜。對各頻點(diǎn)能量取對數(shù)。
⑥ 組成子帶特征向量。每一幀N個(gè)頻點(diǎn)的短時(shí)能量組成一個(gè)子帶的特征向量:Pi=[Ei(1),Ei(2),…,Ei(N)]
對所有特征數(shù)據(jù)進(jìn)行高斯歸一化處理,即所有訓(xùn)練數(shù)據(jù)的均值歸一化為0,方差規(guī)整為1。
深度神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程由信號的正向傳播與誤差的反向傳播兩個(gè)部分組成,模型框架如圖2所示。信號正向傳播與誤差反向傳播的過程,是循環(huán)往復(fù)且權(quán)值不斷修改的過程,也就是網(wǎng)絡(luò)的訓(xùn)練過程,這個(gè)過程一直進(jìn)行到輸出層的輸出誤差逐步減小到可以接受的范圍或者達(dá)到預(yù)先設(shè)定的學(xué)習(xí)次數(shù)為止。
正向傳播時(shí),樣本特征作用于輸入層,經(jīng)隱含層逐層處理之后,傳到輸出層,具體過程分以下。
DNN訓(xùn)練之前首先要進(jìn)行初始化。據(jù)早期研究[6]可知,DNN的網(wǎng)絡(luò)初始化對于找到全局最優(yōu)的結(jié)果非常重要,DNN大部分利用受限玻爾茲曼機(jī)RBM組成的DBN,通過對比散度算法進(jìn)行無監(jiān)督的預(yù)訓(xùn)練來對網(wǎng)絡(luò)進(jìn)行初始化。最近的研究顯示,數(shù)據(jù)量的增加和Dropout技術(shù)[12]的使用,同樣能使網(wǎng)絡(luò)獲得較好的性能,因此本文采用隨機(jī)初始化并利用Dropout來獲得全局最優(yōu)解。
第l個(gè)隱含層輸出為:
(1)
輸出層輸出為:
(2)
O=[O1,O2,…,On]
(3)
如果輸出層未能夠得到期望的輸出,則轉(zhuǎn)入到誤差的反向傳播階段,將輸出誤差按照某種方式,通過隱含層向輸入層返回,并把它“分?jǐn)偂苯o各層的所有單元,從而獲得各層單元的參考誤差,用來修改各單元權(quán)值的依據(jù)。采用純凈語音和增強(qiáng)后語音對應(yīng)特征之間的最小均方誤差作為損失函數(shù),反向傳播算法允許來自損失函數(shù)的信息通過網(wǎng)絡(luò)向后流動,被用于計(jì)算梯度,利用小批量隨機(jī)梯度下降法(Mini-batch gradient descent algorithm)進(jìn)行學(xué)習(xí),從而更新整個(gè)DNN的參數(shù)。
將網(wǎng)絡(luò)的實(shí)際輸出O與期望輸出T帶入損失函數(shù),計(jì)算網(wǎng)絡(luò)誤差e。由于語音增強(qiáng)是一個(gè)回歸問題,因此選用均方誤差MSE(Mean-Square Error)作為損失函數(shù)[1]。為了避免模型出現(xiàn)過擬合問題,在損失函數(shù)中加入了L2正則化,限制模型的復(fù)雜程度。
(4)
(5)
(6)
式(4)-(6)中,N為樣本數(shù);T為期望輸出;R(W)為體現(xiàn)模型復(fù)雜度的函數(shù);W為網(wǎng)絡(luò)中所有權(quán)重參數(shù);E(W)為網(wǎng)絡(luò)優(yōu)化目標(biāo)函數(shù);λ為模型復(fù)雜度損失在總損失中的比例。
首先調(diào)整第l隱含層與輸出層之間的權(quán)重,沿著梯度最快下降的方向調(diào)整。然后誤差向前傳播,對前面各層權(quán)重進(jìn)行調(diào)整。
第l個(gè)隱含層權(quán)重調(diào)整為:
(7)
至此,一輪權(quán)重調(diào)整結(jié)束。調(diào)整規(guī)則歸納為:權(quán)重調(diào)整量=學(xué)習(xí)率×局部梯度×上一層輸出信號。
為了檢驗(yàn)本算法的有效性,通過DNN模型訓(xùn)練后與語音增強(qiáng)經(jīng)典算法中的譜減法(算法1)、自適應(yīng)濾波法(算法2)以及深度神經(jīng)網(wǎng)絡(luò)中的基于短時(shí)FFT變換的對數(shù)功率譜特征提取方法(算法3)進(jìn)行比較。選擇一段語音“四百米障礙”進(jìn)行分析對比研究,純凈語音波形及語譜圖如圖5所示,噪聲為裝甲車運(yùn)動噪聲如圖6所示。
特征位數(shù):896維(7×128),即IMF分量有效個(gè)數(shù)為7,每幀為128個(gè)點(diǎn)。因而輸入輸出節(jié)點(diǎn)數(shù)分別為896。
特殊函數(shù):隱含層激活函數(shù)選擇ReLU,輸出層激活函數(shù)選擇Sigmoid,損失函數(shù)選擇MSE,采用隨機(jī)初始化,訓(xùn)練算法采用小批量隨機(jī)梯度下降法,采用Dropout對模型進(jìn)行優(yōu)化,損失比例設(shè)置為0.2,學(xué)習(xí)率設(shè)置為0.01,并按照0.004的差值逐漸減小。
數(shù)據(jù)源:本文實(shí)驗(yàn)純凈語音全部來自于清華大學(xué)語音與語言技術(shù)中心(CSLT)出版的開放式中文語音數(shù)據(jù)庫,抽取500條純凈語音被用來與裝甲車運(yùn)動噪聲相加在一起,相加的信噪比為15 dB、10 dB、5 dB、0 dB和-5 dB,來構(gòu)建一個(gè)多種情況的平行訓(xùn)練數(shù)據(jù)。另外,從語音數(shù)據(jù)庫里抽取另外100條語音與上述裝甲車運(yùn)動噪聲相加構(gòu)成測試數(shù)據(jù)集。
圖5 純凈語音
圖6 裝甲車運(yùn)動噪聲
一般來說,深度神經(jīng)網(wǎng)絡(luò)要求隱含層大于3層、每層節(jié)點(diǎn)數(shù)大于1 000。首先假定隱含層數(shù)為4,實(shí)驗(yàn)結(jié)果如表2所示,每個(gè)隱含層的節(jié)點(diǎn)數(shù)為1 024時(shí)效果較好,隱含層數(shù)為5時(shí)亦如此,確定隱含層節(jié)點(diǎn)數(shù)為1 024。然后節(jié)點(diǎn)數(shù)為1 024時(shí)實(shí)驗(yàn)數(shù)據(jù)如表3所示,確定隱含層為4層。
表2 隱含層不同節(jié)點(diǎn)數(shù)的DNN增強(qiáng)后PESQ
表3 不同隱含層數(shù)的DNN增強(qiáng)后PESQ
4.3.1模擬帶噪語音下各算法比較結(jié)果及分析
選取純凈語音“四百米障礙”和裝甲車運(yùn)動噪聲在-5 dB、0 dB和5 dB下混合構(gòu)成帶噪語音信號,檢驗(yàn)指標(biāo)為信噪比SNR、感知語音質(zhì)量評估PESQ和短時(shí)客觀可懂度STOI,數(shù)據(jù)如表4、表5、表6所示。-5 dB(限于篇幅只以-5 dB為例)帶噪語音(如圖7所示)經(jīng)各算法增強(qiáng)后得到的波形與語譜圖如圖8、圖9、圖10和圖11所示。
表4 不同算法在-5 dB裝甲運(yùn)動噪增強(qiáng)后的信噪比
表5 不同算法在0 dB裝甲運(yùn)動噪增強(qiáng)后的信噪比
表6 不同算法在5 dB裝甲運(yùn)動噪增強(qiáng)后的信噪比
由表4、表5和表6可看出:算法3和本文算法在語音增強(qiáng)處理后信噪比均提高2倍以上,PESQ和STOI與經(jīng)典算法比均顯著提高,本文算法優(yōu)勢更明顯。
比較各算法增強(qiáng)后的語音與純凈語音的波形圖可知,在-5 dB噪聲環(huán)境下,譜減法去除的噪聲最多,語音波形幅度較純凈語音有所減小,甚至有的語音波形已經(jīng)消失不見,且在語音間隙期,新產(chǎn)生了幾個(gè)小的波形凸起;自適應(yīng)濾波法去除了大部分噪聲,但還有小部分殘留噪聲,語音波形的幅度沒有明顯減小;算法3和本文算法很好地濾除了背景噪聲,波形更接近于原始純凈語音,去噪效果都強(qiáng)于經(jīng)典算法。本文算法較算法3的PESQ和STOI值分別提高0.228 1和0.013 8,說明本文算法在可懂度和語音質(zhì)量方面均有所提高,這是因?yàn)樾盘柦?jīng)EEMD分解后,首先能初步區(qū)分噪聲分量和語音分量,更能反映信號的時(shí)頻特性。
圖7 -5 dB合成帶噪語音
圖8 算法1結(jié)果
圖9 算法2結(jié)果
圖10 算法3結(jié)果
圖11 本文算法結(jié)果
比較各算法增強(qiáng)后的語譜圖,譜減法處理后不僅噪點(diǎn)消失不見,語音的譜線也幾乎被消除,沒有明顯的語音變化趨勢。自適應(yīng)濾波法處理后的語譜圖較清晰,高頻噪聲分量幾乎完全去除,語音趨勢清晰可見;算法3和本文算法處理后語譜圖清晰,與原始純凈語音的語譜圖一致,語音趨勢清晰,本文算法較算法3比,能保留有效的低頻信息。
4.3.2真實(shí)帶噪語音下各算法比較結(jié)果及分析
對實(shí)際采集的帶噪語音“刀光槍影”進(jìn)行語音增強(qiáng)實(shí)驗(yàn),原始帶噪語音及語譜圖如圖12所示,圖13、圖14、圖15和圖16分別是算法1、算法2、算法3和本文算法增強(qiáng)后語音的波形圖和語譜圖。
圖12是從59D裝甲車運(yùn)動現(xiàn)場采集的語音信號,語音“刀光槍影”淹沒在噪聲中。從圖13可看出,經(jīng)譜減法處理后,噪聲波形幾乎消失不見,但是語譜圖中只有幾個(gè)高能量的點(diǎn)隨機(jī)分布,觀察不到語音的趨勢,說明譜減法對語音造成了嚴(yán)重失真。從圖14看出,經(jīng)自適應(yīng)濾波法處理后的增強(qiáng)語音語譜圖雖然有噪點(diǎn),但是能基本看清語音分量的趨勢。從圖15看出,算法3處理后,噪聲幾乎被完全去除,語譜圖比較干凈且語音趨勢清晰明顯,但是低頻信號去除太多,會造成部分語音失真。觀察圖16,本文算法處理后,波形十分清晰,從語譜圖中可以發(fā)現(xiàn),背景幾乎沒有噪點(diǎn),語音趨勢清晰明顯,低頻部分的噪聲被去除,而有效的低頻成分保留,由經(jīng)驗(yàn)可知,這去除的恰是裝甲車的運(yùn)動噪聲。
圖12 實(shí)際采集帶噪語音
圖13 算法1結(jié)果
圖14 算法2結(jié)果
圖15 算法3結(jié)果
圖16 本文算法結(jié)果
由于實(shí)驗(yàn)采集的是真實(shí)帶噪語音,沒有純凈語音做參考源,無法直接得到PESQ和STOI的分值,因此以各算法增強(qiáng)后的語音做參考源與原始帶噪語音計(jì)算,獲得相對分值進(jìn)行分析,分值越低,表示效果越好,結(jié)果如表7所示。
表7 不同算法增強(qiáng)后相對PESQ和STOI分值
從表7可看出:本文算法處理后的增強(qiáng)語音質(zhì)量和可懂度都比較高,算法2處理后的音頻能夠聽懂,但質(zhì)量稍差,算法1音頻更多的是“音樂噪聲”。結(jié)合表中分值可知,基于深度神經(jīng)網(wǎng)絡(luò)的語音增強(qiáng)算法對裝甲車運(yùn)動時(shí)的聲場環(huán)境有很好的增強(qiáng)作用,與算法3相比,本文算法的預(yù)處理對增強(qiáng)效果有更進(jìn)一步的改善。
本文算法提出在深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練之前,先對數(shù)據(jù)進(jìn)行預(yù)處理,包括EEMD分解和特征提取兩步。本文預(yù)處理方法能有助于語音增強(qiáng)性能的提高,并在實(shí)際語音環(huán)境中進(jìn)行檢驗(yàn)。
本文算法主要針對裝甲車運(yùn)動噪聲背景的語音增強(qiáng),對其他噪聲(如:餐廳噪聲、極端噪聲等)還需進(jìn)一步研究,以充分發(fā)揮深度神經(jīng)網(wǎng)絡(luò)的獨(dú)特作用。