劉 鵬
(山西工程技術(shù)學(xué)院信息工程與大數(shù)據(jù)科學(xué)系 陽泉 045000)
傳統(tǒng)的語音增強算法(如子空間法、譜減法和維納濾波法),作為一種非監(jiān)督方法大都基于語音和噪聲信號復(fù)雜的統(tǒng)計特性來實現(xiàn)降噪,但在降噪過程中不可避免地會產(chǎn)生“音樂噪音”,導(dǎo)致語音失真[1]??紤]到噪聲對清晰語音產(chǎn)生影響的復(fù)雜過程,在帶噪語音與清晰語音信號間基于神經(jīng)網(wǎng)絡(luò)建立非線性映射模型來實現(xiàn)語音增強已成為當(dāng)前研究的一個熱點。
Xugang Lu,Yu Tsao等學(xué)者采用逐層預(yù)訓(xùn)練(layer-wise pre-training)堆疊自編碼器(Stacked AutoEncoder)后微調(diào)(fine tuning)整個學(xué)習(xí)網(wǎng)絡(luò)的方法,建立了深度降噪自編碼器(Deep Denoising AutoEncoder,DDAE),完成了帶噪語音的降噪,并驗證了增加降噪自編碼器的深度,有助于提高語音增強的效果[2]。但是,由于深度降噪自編碼器是對訓(xùn)練集中帶噪語音與清晰語音對的一種統(tǒng)計平均,在缺乏足夠樣本量的數(shù)據(jù)集上進(jìn)行訓(xùn)練,極易產(chǎn)生神經(jīng)元的聯(lián)合適應(yīng)性(co-adaptations),進(jìn)而導(dǎo)致過擬合。為此,文獻(xiàn)[3]提出了DDAE的集成模型(Ensemble Model),將訓(xùn)練數(shù)據(jù)聚類后分別訓(xùn)練多個DDAE模型,然后在訓(xùn)練數(shù)據(jù)集上通過回歸擬合來建立多個DDAE的組合函數(shù)。但是,集成模型需要訓(xùn)練和評估多個DDAE模型,這將花費大量的運行時間和內(nèi)存空間。研究表明,集成模型通常只能集成5~10個神經(jīng)網(wǎng)絡(luò),超過這個數(shù)量將很快變得難以處理[4]。Yong Xu,Jun Du等學(xué)者選用Dropout訓(xùn)練的深度神經(jīng)網(wǎng)絡(luò)(DNN)模型實現(xiàn)了帶噪語音增強。選用Dropout訓(xùn)練所得的深度網(wǎng)絡(luò)可以看作是每輪訓(xùn)練所得網(wǎng)絡(luò)的集成,但由于Dropout所引入的噪聲擾動(perturbations)在一定程度上破壞了帶噪語音中噪聲的特性關(guān)系,因此完全采用Drop?out訓(xùn)練對于測試數(shù)據(jù)集噪聲類型與訓(xùn)練集相同的情形,增強效果不佳[5]。研究表明[6~7],帶噪語音中不同類型語音分段(segment)對語音整體的可懂度影響不同,中均方根分段(短時信噪比小于整體均方根但不小于-10dB整體均方根的分段)影響了帶噪語音整體的可懂度。因此,我們提出了基于語音分段類型來分類訓(xùn)練DDAE模型的語音增強算法。
本文算法首先將訓(xùn)練數(shù)據(jù)集的帶噪語音與清晰語音對進(jìn)行短時分段處理后,劃分為中均方根分段訓(xùn)練子集和非中均方根分段訓(xùn)練子集。然后,中均方根分段訓(xùn)練子集選用Dropout方法訓(xùn)練DDAE(即隨機選出部分神經(jīng)元參加訓(xùn)練),非中均方根分段訓(xùn)練子集選用非Dropout方法訓(xùn)練DDAE(即所有神經(jīng)元均參加訓(xùn)練)。這樣,使得訓(xùn)練好的DDAE模型既可以減少Dropout所引入的擾動對帶噪語音噪聲特性的破壞又可以增強對帶噪語音可懂度關(guān)鍵分段(中均方根分段)語音特性學(xué)習(xí)的魯棒性,避免陷入過擬合,提高了語音可懂度增強的效果。
自編碼器(AutoEncoder,AE)是一種以無監(jiān)督的方式來學(xué)習(xí)數(shù)據(jù)編碼的人工神經(jīng)網(wǎng)絡(luò)。如圖1所示,自編碼器的網(wǎng)絡(luò)結(jié)構(gòu)特點是輸入層神經(jīng)元數(shù)目和輸出層相等,隱藏層神經(jīng)元數(shù)目小于輸入層和輸出層,網(wǎng)絡(luò)學(xué)習(xí)是以重構(gòu)自身輸入為目的(而不是預(yù)測目標(biāo)值),通常用于數(shù)據(jù)降維和特征提取。自動編碼器總是由兩部分組成:編碼器和解碼器。它們可以被定義為式(1)所示的轉(zhuǎn)換,其中X是輸入數(shù)據(jù)集,Z是壓縮編碼,X′為輸出數(shù)據(jù)集,?是編碼轉(zhuǎn)換,ψ是解碼轉(zhuǎn)換。
圖1 自編碼器的網(wǎng)絡(luò)結(jié)構(gòu)
降噪自編碼器(Denoising AutoEncoder,DAE)是針對部分輸入數(shù)據(jù)中含有噪聲的情形,訓(xùn)練的目的是盡量輸出不含噪的輸入數(shù)據(jù),以增強自編碼器所提取的數(shù)據(jù)特征對所加入噪聲的魯棒性。因此,DAE的模型訓(xùn)練可分為四步。
1)加入噪聲:將原有輸入數(shù)據(jù)x加入某種形式的噪聲后得到帶噪數(shù)據(jù)x?。
2)編碼:將帶噪數(shù)據(jù)x?作為輸入層數(shù)據(jù)經(jīng)過式(2)轉(zhuǎn)換到隱藏層。其中,z是編碼數(shù)據(jù),W是編碼權(quán)重矩陣,b是編碼偏置向量,σ是編碼激活函數(shù)(這里選取為sigmoid函數(shù))。
3)解碼:將隱藏層數(shù)據(jù)經(jīng)過式(3)轉(zhuǎn)換到輸出層。其中,′是輸出數(shù)據(jù)(降噪后數(shù)據(jù)),W′是解碼權(quán)重矩陣,b′是解碼偏置向量,σ′是解碼激活函數(shù)(這里選取為sigmoid函數(shù))。
4)確定并最小化損失函數(shù):降噪自編碼器經(jīng)過訓(xùn)練以盡量減少輸出數(shù)據(jù)(降噪后數(shù)據(jù))與原有輸入數(shù)據(jù)的差別,訓(xùn)練目標(biāo)同樣是使損失函數(shù)最小化。降噪自編碼器的損失函數(shù)可參照式(4)和式(5)確定。
Xugang Lu,Yu Tsao等學(xué)者在DAE模型的基礎(chǔ)上采用逐層預(yù)訓(xùn)練的方式,將多個自編碼器堆疊后微調(diào)整個學(xué)習(xí)網(wǎng)絡(luò),建立了深度降噪自編碼器(DDAE)模型。實際上,DDAE模型在本質(zhì)上也是一種深度神經(jīng)網(wǎng)絡(luò)(DNN),已有學(xué)者基于DNN模型開展了語音增強研究[8~10],因此,同樣可以選用Dropout訓(xùn)練方式來快速訓(xùn)練DDAE模型。
Dropout訓(xùn)練是在DNN訓(xùn)練開始前固定一組超參數(shù)來隨機決定網(wǎng)絡(luò)中的神經(jīng)單元(輸出單元除外)是否包括在本輪訓(xùn)練的網(wǎng)絡(luò)中,通常一個輸入神經(jīng)元被包含在本輪訓(xùn)練網(wǎng)絡(luò)的概率為0.8,一個隱藏神經(jīng)元其相應(yīng)的概率為0.5[4]。因此,Dropout訓(xùn)練的結(jié)果是原有DNN子網(wǎng)絡(luò)的集成,而且,在訓(xùn)練過程中共享了模型參數(shù)。Dropout訓(xùn)練可以降低神經(jīng)元的聯(lián)合適應(yīng)性(co-adaptations),在某種程度上,它避免了模型產(chǎn)生過擬合。Dropout訓(xùn)練之所以有效在很大程度上得益于它給隱藏單元所帶來的掩碼噪聲(masking noise),這在一定程度上相當(dāng)于增加了訓(xùn)練數(shù)據(jù)集的規(guī)模[4]。
本文所提出的基于語音段分類訓(xùn)練DDAE模型的語音增強算法框架如圖2所示,這一系統(tǒng)由訓(xùn)練和增強兩個階段構(gòu)成。
圖2 基于語音段分類訓(xùn)練DDAE增強算法框架
在訓(xùn)練階段,采用DDAE作為從帶噪語音特征到清晰語音特征的映射函數(shù)。訓(xùn)練階段的具體工作如下。
1)將訓(xùn)練集中的帶噪語音與清晰語音樣本對進(jìn)行短時分段處理后,按照語音分段短時信噪比與整體均方根的關(guān)系,將原有訓(xùn)練數(shù)據(jù)集重新劃分為中均方根分段訓(xùn)練子集和非中均方根分段訓(xùn)練子集。
2)將訓(xùn)練子集中帶噪語音分段與清晰語音分段進(jìn)行快速傅里葉變換后,提取其頻譜的對數(shù)幅度特征,分別作為DDAE模型的輸入與輸出。
3)在依據(jù)語音分段的不同類型所構(gòu)建的兩種訓(xùn)練子集上開展DDAE模型訓(xùn)練。中均方根分段訓(xùn)練子集選用Dropout方法訓(xùn)練,非中均方根分段訓(xùn)練子集選用非Dropout方法訓(xùn)練。
在增強階段,利用訓(xùn)練好的DDAE模型對帶噪語音特征進(jìn)行處理,預(yù)測出清晰的語音特征,進(jìn)而波形恢復(fù)出清晰語音,實現(xiàn)語音增強。增強階段的具體工作如下:
1)將測試集中的帶噪語音進(jìn)行短時分段處理后,提取帶噪語音分段的頻譜對數(shù)幅度特征。
2)將所提取的帶噪語音分段的頻譜對數(shù)幅度特征,作為已訓(xùn)練好的DDAE模型的輸入值,通過DDAE模型獲得相應(yīng)的輸出值,即增強后語音分段的頻譜對數(shù)幅度特征。
3)將增強后語音分段的頻譜對數(shù)幅度,結(jié)合帶噪語音的相位信息,依據(jù)文獻(xiàn)[5]中的方法完成增強語音的波形重建。
將訓(xùn)練集中的帶噪語音與清晰語音樣本對加窗進(jìn)行短時分段處理(本文中窗長16ms,重疊50%)。假設(shè)帶噪語音中的語音信號穩(wěn)定,噪聲信號與語音信號無關(guān),按照式(6)計算帶噪語音分段m的先驗信噪比ξ(m)。
其中Y(m)為帶噪語音的功率,X(m)為與之對應(yīng)的清晰語音的功率,D()m為噪聲信號的功率。帶噪語音分段先驗信噪比的相對均方根依據(jù)式(7)計算得出,M為帶噪語音的分段個數(shù)。
最后,依據(jù)式(8)確定出帶噪語音短時分段中的中均方根分段,進(jìn)而將訓(xùn)練集劃分為中均方根分段訓(xùn)練子集和非中均方根分段訓(xùn)練子集。
本文中的DDAE模型由1個輸入層,5個隱藏層(每層500個神經(jīng)元)和1個輸出層構(gòu)成。DDAE模型的輸入向量和輸出向量分別如式(9)和式(10)所示。其中,和分別表示輸入和輸出的第m幀第k個頻帶的譜幅度。
為了將兩種訓(xùn)練方式在同一個DDAE模型上實現(xiàn),模型基于Inverted Dropout進(jìn)行了改進(jìn)訓(xùn)練,在訓(xùn)練階段其正向傳播的過程如式(11)所示。
其中,p為Dropout訓(xùn)練中神經(jīng)元的舍棄概率,當(dāng)選用Dropout方式訓(xùn)練時p=0.5,當(dāng)選用非Dropout方式訓(xùn)練時p=0。Bm是如式(12)所示的m維向量。
當(dāng)選用Dropout方式訓(xùn)練時Bm中的各元素bi是伯努利(Bernoulli)隨機變量,其取值為0的概率是p,其取值為1的為概率是1-p;當(dāng)選用非Drop?out方式訓(xùn)練時bi的值均為1。式(11)中σ(.)為Logistic sigmoid激活函數(shù)。DDAE模型的損失函數(shù)按照式(13)定義。
在語音增強階段,已經(jīng)完成參數(shù)訓(xùn)練的DDAE模型的正向傳播過程如式(14)所示。
其中,為測試集中帶噪語句m分段頻譜的對數(shù)幅度,為使用分類訓(xùn)練好的DDAE模型增強后的語音頻譜對數(shù)幅度。
為研究所提出算法對帶噪語音可懂度的增強效果,基于TensorFlow深度學(xué)習(xí)框架開展了仿真實驗。清晰語音材料來源于IEEE句子庫[13],背景噪聲選用NOISEX-92標(biāo)準(zhǔn)庫中的babble,car,street和train四種噪聲類型,實驗中分別以-15dB、-10dB和-5dB三種信噪比加入噪聲。實驗中信號的采樣頻率統(tǒng)一在8Kz,量化精度為16bit。
實驗中訓(xùn)練集由IEEE句子庫的60組句子(共600個句子),按照12種加噪條件(4種噪聲類型×3種信噪比)產(chǎn)生的帶噪語音和對應(yīng)的清晰語音構(gòu)成。因此,訓(xùn)練數(shù)據(jù)集共有12個加噪條件子集,每個加噪條件子集有600個樣本對,共計7200個樣本對。
實驗中測試集由IEEE句子庫的剩余12組句子(共120個句子),按照12種加噪條件(4種噪聲類型×3種信噪比)產(chǎn)生的帶噪語音組成。因此,測試數(shù)據(jù)集共有12個加噪條件子集,每個加噪條件子集有120個樣本,共計1440個樣本。
語音可懂度評價選用歸一化協(xié)方差(Normal?ized Covariance Metric,NCM)評價法[14]。實驗中把測試階段樣本處理后的歸一化協(xié)方差NCM平均值作為其相應(yīng)條件下語音可懂度評價值。為了進(jìn)行實驗效果的對比,選取了子空間法和原有DDAE方法(每輪訓(xùn)練中所有神經(jīng)元均參加訓(xùn)練)對測試集中的樣本數(shù)據(jù)進(jìn)行了語音增強,并將其增強語音與本文算法增強語音的可懂度進(jìn)行了對比。表1~表3給出了實驗中語音可懂度的NCM評價結(jié)果。
表1 信噪比SNR=-15dB,不同條件下語音的NCM值
表2 信噪比SNR=-10dB,不同條件下語音的NCM值
表3 信噪比SNR=-5dB,不同條件下語音的NCM值
帶噪語音的NCM數(shù)值越大說明其主觀可懂度越高[15],從表1~表3語音NCM測試值的對比可以看出:本文算法處理相較于其他三種對帶噪語音的處理(加噪未增強,子空間法增強和原有DDAE法增強)提高了增強后帶噪語音的可懂度。
由于中均方根分段影響了帶噪語音整體的可懂度,中均方根分段訓(xùn)練子集選用Dropout方法訓(xùn)練DDAE,這相當(dāng)于增加了此種訓(xùn)練數(shù)據(jù)集的規(guī)模,降低了神經(jīng)元的聯(lián)合適應(yīng)性,在一定程度上防止了DDAE模型陷入過度擬合,使得語音可懂度的增強效果得以提高。
本文提出了一種基于語音分段來分類訓(xùn)練DDAE模型的語音增強算法。該算法首先將訓(xùn)練數(shù)據(jù)集的帶噪語音與清晰語音對進(jìn)行短時分段處理后,劃分為中均方根分段訓(xùn)練子集和非中均方根分段訓(xùn)練子集。然后,中均方根分段訓(xùn)練子集選用Dropout方法訓(xùn)練DDAE(即隨機選出部分神經(jīng)元參加訓(xùn)練),非中均方根分段訓(xùn)練子集選用非Dropout方法訓(xùn)練DDAE(即所有神經(jīng)元均參加訓(xùn)練)。使得DDAE模型在盡可能減少Dropout所引入的擾動對帶噪語音噪聲特性破壞的同時,提高了對帶噪語音可懂度關(guān)鍵分段(中均方根分段)語音特性學(xué)習(xí)的魯棒性,提高了增強語音的可懂度。在模型實驗中,選取了NCM評價法將本文算法在語音可懂度性能上開展了實驗驗證。結(jié)果表明,本文算法有效提高了增強語音的可懂度。
值得注意的是,雖然選用Dropout訓(xùn)練在一定程度上相當(dāng)于增加了訓(xùn)練數(shù)據(jù)集的規(guī)模,但是,當(dāng)訓(xùn)練集的樣本數(shù)量極少時,同樣有可能會導(dǎo)致Dropout失效[4]。我們將在后期對本文算法訓(xùn)練集的最小規(guī)模進(jìn)行實驗探究。