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