劉 鵬
(山西工程技術學院信息工程與大數據科學系 陽泉 045000)
傳統的語音增強算法(如子空間法、譜減法和維納濾波法),作為一種非監督方法大都基于語音和噪聲信號復雜的統計特性來實現降噪,但在降噪過程中不可避免地會產生“音樂噪音”,導致語音失真[1]。考慮到噪聲對清晰語音產生影響的復雜過程,在帶噪語音與清晰語音信號間基于神經網絡建立非線性映射模型來實現語音增強已成為當前研究的一個熱點。
Xugang Lu,Yu Tsao等學者采用逐層預訓練(layer-wise pre-training)堆疊自編碼器(Stacked AutoEncoder)后微調(fine tuning)整個學習網絡的方法,建立了深度降噪自編碼器(Deep Denoising AutoEncoder,DDAE),完成了帶噪語音的降噪,并驗證了增加降噪自編碼器的深度,有助于提高語音增強的效果[2]。但是,由于深度降噪自編碼器是對訓練集中帶噪語音與清晰語音對的一種統計平均,在缺乏足夠樣本量的數據集上進行訓練,極易產生神經元的聯合適應性(co-adaptations),進而導致過擬合。為此,文獻[3]提出了DDAE的集成模型(Ensemble Model),將訓練數據聚類后分別訓練多個DDAE模型,然后在訓練數據集上通過回歸擬合來建立多個DDAE的組合函數。但是,集成模型需要訓練和評估多個DDAE模型,這將花費大量的運行時間和內存空間。研究表明,集成模型通常只能集成5~10個神經網絡,超過這個數量將很快變得難以處理[4]。Yong Xu,Jun Du等學者選用Dropout訓練的深度神經網絡(DNN)模型實現了帶噪語音增強。選用Dropout訓練所得的深度網絡可以看作是每輪訓練所得網絡的集成,但由于Dropout所引入的噪聲擾動(perturbations)在一定程度上破壞了帶噪語音中噪聲的特性關系,因此完全采用Drop?out訓練對于測試數據集噪聲類型與訓練集相同的情形,增強效果不佳[5]。研究表明[6~7],帶噪語音中不同類型語音分段(segment)對語音整體的可懂度影響不同,中均方根分段(短時信噪比小于整體均方根但不小于-10dB整體均方根的分段)影響了帶噪語音整體的可懂度。因此,我們提出了基于語音分段類型來分類訓練DDAE模型的語音增強算法。
本文算法首先將訓練數據集的帶噪語音與清晰語音對進行短時分段處理后,劃分為中均方根分段訓練子集和非中均方根分段訓練子集。然后,中均方根分段訓練子集選用Dropout方法訓練DDAE(即隨機選出部分神經元參加訓練),非中均方根分段訓練子集選用非Dropout方法訓練DDAE(即所有神經元均參加訓練)。這樣,使得訓練好的DDAE模型既可以減少Dropout所引入的擾動對帶噪語音噪聲特性的破壞又可以增強對帶噪語音可懂度關鍵分段(中均方根分段)語音特性學習的魯棒性,避免陷入過擬合,提高了語音可懂度增強的效果。
自編碼器(AutoEncoder,AE)是一種以無監督的方式來學習數據編碼的人工神經網絡。如圖1所示,自編碼器的網絡結構特點是輸入層神經元數目和輸出層相等,隱藏層神經元數目小于輸入層和輸出層,網絡學習是以重構自身輸入為目的(而不是預測目標值),通常用于數據降維和特征提取。自動編碼器總是由兩部分組成:編碼器和解碼器。它們可以被定義為式(1)所示的轉換,其中X是輸入數據集,Z是壓縮編碼,X′為輸出數據集,?是編碼轉換,ψ是解碼轉換。

圖1 自編碼器的網絡結構

降噪自編碼器(Denoising AutoEncoder,DAE)是針對部分輸入數據中含有噪聲的情形,訓練的目的是盡量輸出不含噪的輸入數據,以增強自編碼器所提取的數據特征對所加入噪聲的魯棒性。因此,DAE的模型訓練可分為四步。
1)加入噪聲:將原有輸入數據x加入某種形式的噪聲后得到帶噪數據x?。
2)編碼:將帶噪數據x?作為輸入層數據經過式(2)轉換到隱藏層。其中,z是編碼數據,W是編碼權重矩陣,b是編碼偏置向量,σ是編碼激活函數(這里選取為sigmoid函數)。

3)解碼:將隱藏層數據經過式(3)轉換到輸出層。其中,′是輸出數據(降噪后數據),W′是解碼權重矩陣,b′是解碼偏置向量,σ′是解碼激活函數(這里選取為sigmoid函數)。

4)確定并最小化損失函數:降噪自編碼器經過訓練以盡量減少輸出數據(降噪后數據)與原有輸入數據的差別,訓練目標同樣是使損失函數最小化。降噪自編碼器的損失函數可參照式(4)和式(5)確定。

Xugang Lu,Yu Tsao等學者在DAE模型的基礎上采用逐層預訓練的方式,將多個自編碼器堆疊后微調整個學習網絡,建立了深度降噪自編碼器(DDAE)模型。實際上,DDAE模型在本質上也是一種深度神經網絡(DNN),已有學者基于DNN模型開展了語音增強研究[8~10],因此,同樣可以選用Dropout訓練方式來快速訓練DDAE模型。
Dropout訓練是在DNN訓練開始前固定一組超參數來隨機決定網絡中的神經單元(輸出單元除外)是否包括在本輪訓練的網絡中,通常一個輸入神經元被包含在本輪訓練網絡的概率為0.8,一個隱藏神經元其相應的概率為0.5[4]。因此,Dropout訓練的結果是原有DNN子網絡的集成,而且,在訓練過程中共享了模型參數。Dropout訓練可以降低神經元的聯合適應性(co-adaptations),在某種程度上,它避免了模型產生過擬合。Dropout訓練之所以有效在很大程度上得益于它給隱藏單元所帶來的掩碼噪聲(masking noise),這在一定程度上相當于增加了訓練數據集的規模[4]。
本文所提出的基于語音段分類訓練DDAE模型的語音增強算法框架如圖2所示,這一系統由訓練和增強兩個階段構成。

圖2 基于語音段分類訓練DDAE增強算法框架
在訓練階段,采用DDAE作為從帶噪語音特征到清晰語音特征的映射函數。訓練階段的具體工作如下。
1)將訓練集中的帶噪語音與清晰語音樣本對進行短時分段處理后,按照語音分段短時信噪比與整體均方根的關系,將原有訓練數據集重新劃分為中均方根分段訓練子集和非中均方根分段訓練子集。
2)將訓練子集中帶噪語音分段與清晰語音分段進行快速傅里葉變換后,提取其頻譜的對數幅度特征,分別作為DDAE模型的輸入與輸出。
3)在依據語音分段的不同類型所構建的兩種訓練子集上開展DDAE模型訓練。中均方根分段訓練子集選用Dropout方法訓練,非中均方根分段訓練子集選用非Dropout方法訓練。
在增強階段,利用訓練好的DDAE模型對帶噪語音特征進行處理,預測出清晰的語音特征,進而波形恢復出清晰語音,實現語音增強。增強階段的具體工作如下:
1)將測試集中的帶噪語音進行短時分段處理后,提取帶噪語音分段的頻譜對數幅度特征。
2)將所提取的帶噪語音分段的頻譜對數幅度特征,作為已訓練好的DDAE模型的輸入值,通過DDAE模型獲得相應的輸出值,即增強后語音分段的頻譜對數幅度特征。
3)將增強后語音分段的頻譜對數幅度,結合帶噪語音的相位信息,依據文獻[5]中的方法完成增強語音的波形重建。
將訓練集中的帶噪語音與清晰語音樣本對加窗進行短時分段處理(本文中窗長16ms,重疊50%)。假設帶噪語音中的語音信號穩定,噪聲信號與語音信號無關,按照式(6)計算帶噪語音分段m的先驗信噪比ξ(m)。

其中Y(m)為帶噪語音的功率,X(m)為與之對應的清晰語音的功率,D()m為噪聲信號的功率。帶噪語音分段先驗信噪比的相對均方根依據式(7)計算得出,M為帶噪語音的分段個數。

最后,依據式(8)確定出帶噪語音短時分段中的中均方根分段,進而將訓練集劃分為中均方根分段訓練子集和非中均方根分段訓練子集。

本文中的DDAE模型由1個輸入層,5個隱藏層(每層500個神經元)和1個輸出層構成。DDAE模型的輸入向量和輸出向量分別如式(9)和式(10)所示。其中,和分別表示輸入和輸出的第m幀第k個頻帶的譜幅度。

為了將兩種訓練方式在同一個DDAE模型上實現,模型基于Inverted Dropout進行了改進訓練,在訓練階段其正向傳播的過程如式(11)所示。

其中,p為Dropout訓練中神經元的舍棄概率,當選用Dropout方式訓練時p=0.5,當選用非Dropout方式訓練時p=0。Bm是如式(12)所示的m維向量。

當選用Dropout方式訓練時Bm中的各元素bi是伯努利(Bernoulli)隨機變量,其取值為0的概率是p,其取值為1的為概率是1-p;當選用非Drop?out方式訓練時bi的值均為1。式(11)中σ(.)為Logistic sigmoid激活函數。DDAE模型的損失函數按照式(13)定義。

在語音增強階段,已經完成參數訓練的DDAE模型的正向傳播過程如式(14)所示。

其中,為測試集中帶噪語句m分段頻譜的對數幅度,為使用分類訓練好的DDAE模型增強后的語音頻譜對數幅度。
為研究所提出算法對帶噪語音可懂度的增強效果,基于TensorFlow深度學習框架開展了仿真實驗。清晰語音材料來源于IEEE句子庫[13],背景噪聲選用NOISEX-92標準庫中的babble,car,street和train四種噪聲類型,實驗中分別以-15dB、-10dB和-5dB三種信噪比加入噪聲。實驗中信號的采樣頻率統一在8Kz,量化精度為16bit。
實驗中訓練集由IEEE句子庫的60組句子(共600個句子),按照12種加噪條件(4種噪聲類型×3種信噪比)產生的帶噪語音和對應的清晰語音構成。因此,訓練數據集共有12個加噪條件子集,每個加噪條件子集有600個樣本對,共計7200個樣本對。
實驗中測試集由IEEE句子庫的剩余12組句子(共120個句子),按照12種加噪條件(4種噪聲類型×3種信噪比)產生的帶噪語音組成。因此,測試數據集共有12個加噪條件子集,每個加噪條件子集有120個樣本,共計1440個樣本。
語音可懂度評價選用歸一化協方差(Normal?ized Covariance Metric,NCM)評價法[14]。實驗中把測試階段樣本處理后的歸一化協方差NCM平均值作為其相應條件下語音可懂度評價值。為了進行實驗效果的對比,選取了子空間法和原有DDAE方法(每輪訓練中所有神經元均參加訓練)對測試集中的樣本數據進行了語音增強,并將其增強語音與本文算法增強語音的可懂度進行了對比。表1~表3給出了實驗中語音可懂度的NCM評價結果。

表1 信噪比SNR=-15dB,不同條件下語音的NCM值

表2 信噪比SNR=-10dB,不同條件下語音的NCM值

表3 信噪比SNR=-5dB,不同條件下語音的NCM值
帶噪語音的NCM數值越大說明其主觀可懂度越高[15],從表1~表3語音NCM測試值的對比可以看出:本文算法處理相較于其他三種對帶噪語音的處理(加噪未增強,子空間法增強和原有DDAE法增強)提高了增強后帶噪語音的可懂度。
由于中均方根分段影響了帶噪語音整體的可懂度,中均方根分段訓練子集選用Dropout方法訓練DDAE,這相當于增加了此種訓練數據集的規模,降低了神經元的聯合適應性,在一定程度上防止了DDAE模型陷入過度擬合,使得語音可懂度的增強效果得以提高。
本文提出了一種基于語音分段來分類訓練DDAE模型的語音增強算法。該算法首先將訓練數據集的帶噪語音與清晰語音對進行短時分段處理后,劃分為中均方根分段訓練子集和非中均方根分段訓練子集。然后,中均方根分段訓練子集選用Dropout方法訓練DDAE(即隨機選出部分神經元參加訓練),非中均方根分段訓練子集選用非Dropout方法訓練DDAE(即所有神經元均參加訓練)。使得DDAE模型在盡可能減少Dropout所引入的擾動對帶噪語音噪聲特性破壞的同時,提高了對帶噪語音可懂度關鍵分段(中均方根分段)語音特性學習的魯棒性,提高了增強語音的可懂度。在模型實驗中,選取了NCM評價法將本文算法在語音可懂度性能上開展了實驗驗證。結果表明,本文算法有效提高了增強語音的可懂度。
值得注意的是,雖然選用Dropout訓練在一定程度上相當于增加了訓練數據集的規模,但是,當訓練集的樣本數量極少時,同樣有可能會導致Dropout失效[4]。我們將在后期對本文算法訓練集的最小規模進行實驗探究。