樊良輝 韓俊剛 王怡斐
(西安郵電大學(xué)計(jì)算機(jī)學(xué)院 西安 710121)
關(guān)于語音技術(shù)的研究主要分為兩個(gè)方面:語音識(shí)別和語音去噪。語音去噪也叫語音增強(qiáng),它是在嘈雜的環(huán)境中對(duì)語音進(jìn)行過濾,有效地獲取語音中的信息[1]。語音去噪在實(shí)際中具有很廣泛的應(yīng)用,比如在移動(dòng)通信、語音識(shí)別、安全監(jiān)聽、人機(jī)對(duì)話、人工電子耳蝸等領(lǐng)域均有應(yīng)用的場(chǎng)景[1~3]。
目前,語音增強(qiáng)技術(shù)研究?jī)?nèi)容主要分為無監(jiān)督的傳統(tǒng)的方法和有監(jiān)督的深層神經(jīng)網(wǎng)絡(luò)的方法。傳統(tǒng)的方法主要包括譜減法[4~5]、基于統(tǒng)計(jì)模型的方法[6]和信號(hào)子空間法[7~10]。經(jīng)典譜減法通過對(duì)噪聲信號(hào)的平穩(wěn)性做出假設(shè),利用無語音段估計(jì)得出平均噪聲譜,接著用帶噪語音譜減去估計(jì)出的噪聲譜,得到干凈語音信號(hào)譜的估計(jì)。基于統(tǒng)計(jì)模型的降噪算法,需要對(duì)語音信號(hào)和噪聲信號(hào)的分布做出假設(shè)。以維納濾波[11]為代表的一類算法。基于信號(hào)子空間的語音增強(qiáng)方法是利用線性代數(shù)和矩陣分析進(jìn)行降噪的技術(shù),該方法在干凈的語音子空間和噪聲信號(hào)的子空間上進(jìn)行運(yùn)算,將帶噪語音信號(hào)映射到兩個(gè)子空間中,得到純凈語音信號(hào)。由于噪聲與干凈語音具有非線性關(guān)系,使用神經(jīng)網(wǎng)絡(luò)建模的方法被提出,文獻(xiàn)[12~13]使用淺層神經(jīng)網(wǎng)絡(luò)作為非線性濾波器,但模型在小數(shù)據(jù)集上效果較差。文獻(xiàn)[14~15]開始使用深層神經(jīng)網(wǎng)絡(luò)進(jìn)行語音增強(qiáng)任務(wù),但是它們的算法復(fù)雜,且效果并不很理想。文獻(xiàn)[16]提出使用最小二乘生成對(duì)抗網(wǎng)絡(luò)到語音增強(qiáng)任務(wù)中,增強(qiáng)效果比較理想。卻存在模型復(fù)雜、訓(xùn)練緩慢的問題。
在實(shí)際的語音增強(qiáng)算法研究中,對(duì)加性噪聲的增強(qiáng)是主要的內(nèi)容。因?yàn)榧有栽肼暸c其他類型的噪聲相比更能夠反映現(xiàn)實(shí)情況,具有更廣泛的應(yīng)用場(chǎng)景。本文也是對(duì)加性噪聲語音進(jìn)行的增強(qiáng)。
本研究中數(shù)據(jù)集是由干凈語音集和噪聲集融合而成的,融合完成之后再對(duì)數(shù)據(jù)進(jìn)行截取、標(biāo)準(zhǔn)化以及劃分。
2.1.1 數(shù)據(jù)準(zhǔn)備
本實(shí)驗(yàn)干凈語音使用的時(shí)TIMIT 數(shù)據(jù)集[17],該數(shù)據(jù)集一共包含6300 條語音,語音頻率為16kHz,一共有630 個(gè)說話人。 噪聲集采用的是NOISEX-92 數(shù)據(jù)集以及俄亥俄州立大學(xué)認(rèn)知神經(jīng)動(dòng)力學(xué)實(shí)驗(yàn)室提供的100 種噪音數(shù)據(jù)[18~19],本研究中使用的帶噪語音數(shù)據(jù)集是由干凈語音和噪聲隨機(jī)疊加而成的,疊加過程中的信噪比有-5db、0db、5db、10db、15db、20db 六種。最終帶噪語音一共724500條。
2.1.2 數(shù)據(jù)劃分及數(shù)據(jù)預(yù)處理
在生成帶噪語音之后,我們按照7∶3 的比例隨機(jī)將數(shù)據(jù)劃分為訓(xùn)練集和測(cè)試集。訓(xùn)練集和測(cè)試集中沒有一樣的說話內(nèi)容。由于每一條干凈語音的長(zhǎng)度不一致,無法輸入到深度網(wǎng)絡(luò)中,我們對(duì)訓(xùn)練集和測(cè)試集的語音分別進(jìn)行重疊加窗處理,處理之后每一條數(shù)據(jù)的長(zhǎng)度一致。采用的窗寬為8192,大約為0.5s,窗重疊200ms。這樣處理不僅能夠符合網(wǎng)絡(luò)輸入的要求,也能夠達(dá)到增加數(shù)據(jù)量的作用。

表1 實(shí)驗(yàn)環(huán)境
條件生成式對(duì)抗網(wǎng)絡(luò)(CGAN)是對(duì)生成式對(duì)抗網(wǎng)絡(luò)的一種有效改進(jìn),能夠指導(dǎo)對(duì)抗網(wǎng)絡(luò)的訓(xùn)練,加快訓(xùn)練速度并提高模型的性能。本文使用了條件生成對(duì)抗網(wǎng)絡(luò)來做語音增強(qiáng)任務(wù),與使用原始的對(duì)抗網(wǎng)絡(luò)相比,能夠解決模型訓(xùn)練不穩(wěn)定的問題,加快語音增強(qiáng)模型的訓(xùn)練。
生成式對(duì)抗網(wǎng)絡(luò)是受到博弈論中零和博弈的啟發(fā)發(fā)展來的,包含生成模型和判別模型。生成網(wǎng)絡(luò)采用隨機(jī)輸入并輸出樣本。判別網(wǎng)絡(luò)則是用來判斷生成樣本和真實(shí)樣本的。雙方不斷競(jìng)爭(zhēng)優(yōu)化,最終達(dá)到“納什平衡”,此時(shí)生成模型能夠達(dá)到制造真實(shí)樣本的能力。對(duì)于原始的對(duì)抗網(wǎng)絡(luò),由于其生成模型輸出的隨機(jī)性,用于語音增強(qiáng)任務(wù)中效果并不理想。而在原始的生成式對(duì)抗網(wǎng)絡(luò)中加入生成樣本的附件條件,即條件生成式對(duì)抗網(wǎng)絡(luò),生成模型就可以按照指定的方向工作。
條件生成式對(duì)抗網(wǎng)絡(luò),通過對(duì)抗訓(xùn)練網(wǎng)絡(luò)將帶噪語音映射到干凈語音。在噪聲z 輸入到生成模型前,我們將帶噪語音的作為條件,與噪聲結(jié)合在一起輸入到生成模型,產(chǎn)生可控的增強(qiáng)語音。判別模型用來分辨增強(qiáng)語音和干凈語音。與原始的生成對(duì)抗網(wǎng)絡(luò)相比,CGAN 為模型引入了條件變量,可指導(dǎo)性的生成增強(qiáng)后的語音。在本文的研究中,我們?cè)黾拥臈l件變量是帶噪語音。我們研究還發(fā)現(xiàn),選擇何種方法作為優(yōu)化模型的目標(biāo),對(duì)增強(qiáng)效果有明顯的影響。在本文中,我們針對(duì)語音增強(qiáng)的任務(wù),對(duì)原始的CGAN 的目標(biāo)函數(shù)進(jìn)行了改進(jìn),在目標(biāo)函數(shù)中增加了一項(xiàng),增加項(xiàng)用來平衡原始CGAN 中的損失函數(shù)。本文算法參考文獻(xiàn)[1]并在網(wǎng)絡(luò)結(jié)構(gòu)上進(jìn)行了優(yōu)化。并經(jīng)過多次實(shí)驗(yàn),調(diào)整出最優(yōu)的網(wǎng)絡(luò)參數(shù)。CGAN模型滿足如下關(guān)系:

在文中,z 為隨機(jī)噪聲,服從正態(tài)分布;x 為干凈語音,服從分布pdata(x),y為帶噪語音。對(duì)抗的過程可描述為:生成模型最大化D(G(z|y)),從而使判別模型分辨不出生成語音和干凈語音。而判別模型的最小化(1),盡力分辨生成語音和干凈語音,以此開展網(wǎng)絡(luò)對(duì)抗訓(xùn)練,達(dá)到增強(qiáng)語音的目的。
2.3.1 生成模型
生成模型的網(wǎng)絡(luò)結(jié)構(gòu)分為卷積和反卷積兩個(gè)過程。它輸入的是隨機(jī)噪聲和帶噪語音,生成對(duì)應(yīng)的增強(qiáng)語音。實(shí)際的研究中,假設(shè)噪音與干凈語音呈現(xiàn)線性關(guān)系,如式(2)所示。

本文采用卷積神經(jīng)網(wǎng)絡(luò)提取噪聲特征,以達(dá)到去除噪聲的目的,在反卷積階段,對(duì)語音進(jìn)行恢復(fù)。在網(wǎng)絡(luò)中加入ReLU激活函數(shù)增加網(wǎng)絡(luò)的非線性,同時(shí)也可以解決因網(wǎng)絡(luò)層數(shù)增加,導(dǎo)致的梯度消失,訓(xùn)練無法繼續(xù)的問題。網(wǎng)絡(luò)采用全卷積結(jié)構(gòu),無全連接層。為了提高訓(xùn)練模型的速度,降低初始化參數(shù)對(duì)訓(xùn)練結(jié)果的影響,在每一層卷積后中加入BN 層(Batch Normalization),同時(shí)加入池化層對(duì)特征進(jìn)行稀疏處理,減小模型的規(guī)模。在卷積階段,根據(jù)以往研究經(jīng)驗(yàn),設(shè)置濾波器個(gè)數(shù)分別為64,128,256,512,1024,1024,1024,1024,1024。卷積核大小為32,步長(zhǎng)為1。為了能夠恢復(fù)輸入的語音信號(hào),反卷積過程采用的是與卷積階段相似的設(shè)置,反卷積核數(shù)量對(duì)稱。
在本文中,生成模型的目標(biāo)函數(shù)如式(3)所示:

其中e 為經(jīng)驗(yàn)值,實(shí)驗(yàn)發(fā)現(xiàn),在目標(biāo)函數(shù)中增加一項(xiàng)經(jīng)驗(yàn)值能夠數(shù)值下溢,有利于增強(qiáng)網(wǎng)絡(luò)性能。并且在目標(biāo)函數(shù)中增加一項(xiàng)損失函數(shù),能夠平衡生成模型誤差,增加網(wǎng)絡(luò)的增強(qiáng)性能。最終生成模型的目標(biāo)函數(shù)如式(4)所示:
2.3.2 判別模型
本文判別模型網(wǎng)絡(luò)結(jié)構(gòu)采用與生成模型卷積階段類似的結(jié)構(gòu)。它的目的是輸入語音,判別出輸入的語音是生成模型生成的語音還是干凈的語音。由于采用與生成模型類似的結(jié)構(gòu),判別模型在一開始區(qū)分生成的增強(qiáng)語音和干凈語音具有很好的性能,但是隨著生成模型根據(jù)目標(biāo)函數(shù)不斷優(yōu)化時(shí),判別模型的性能就逐漸下降,最終達(dá)到判別模型無法正確區(qū)分生成的增強(qiáng)語音和干凈語音。此時(shí),生成模型就達(dá)到了對(duì)語音進(jìn)行去噪的目的。在判別模型中,首先對(duì)輸入的語音進(jìn)行卷積,提取特征,由于干凈語音提取出的特征與生成的增強(qiáng)語音提取出的存在區(qū)別,判別模型根據(jù)此來區(qū)分干凈語音和生成語音。設(shè)置卷積濾波器個(gè)數(shù)分別為64,128,256,512,1024,1024,1024,1024,1024。卷積核大小為32,步長(zhǎng)為1。同樣在卷積之后加入BN層,激活函數(shù)使用Leaky ReLU,最后的卷積層后使用全連接層輸出判別結(jié)果。在本文中,判別模型使用的目標(biāo)函數(shù)如公式所示:

2.3.3 模型訓(xùn)練
語音增強(qiáng)條件生成式對(duì)抗網(wǎng)絡(luò)的框架如圖1所示。在訓(xùn)練一開始,將數(shù)據(jù)輸入到語音增強(qiáng)網(wǎng)絡(luò)中進(jìn)行訓(xùn)練。生成模式由輸入的帶噪語音和隨機(jī)噪聲產(chǎn)生增強(qiáng)語音。判別模型輸入的語音分為兩個(gè)過程。第一個(gè)過程為干凈語音和帶噪語音,第二個(gè)過程是生成的增強(qiáng)語音和帶噪語音。兩個(gè)過程的損失聯(lián)合起來作為最終判別模型的損失。由于在訓(xùn)練初期判別模型和生成模型的性能均較差,同時(shí)進(jìn)行訓(xùn)練過程緩慢。本文采取的訓(xùn)練方式是先對(duì)判別模型進(jìn)行預(yù)訓(xùn)練,當(dāng)判別模型性能達(dá)到要求時(shí),再同時(shí)對(duì)生成模型和判別模型進(jìn)行交替訓(xùn)練,這樣能夠加快訓(xùn)練速度。
實(shí)驗(yàn)中使用的優(yōu)化算法是Adam 優(yōu)化算法,β1為0.8,β2 為0.999。實(shí)驗(yàn)中迭代500 次,學(xué)習(xí)率為設(shè)置為0.001,batch 大小為200。設(shè)置生成模型中λ 1和λ2 分別為1和200。

圖1 條件生成式對(duì)抗網(wǎng)絡(luò)框架
為了驗(yàn)證本文提出方法的有效性,本文對(duì)比了不同實(shí)驗(yàn)設(shè)置下模型性能,采用的語音質(zhì)量評(píng)價(jià)指標(biāo)為PESQ。
為了證明在生成模型中增加一項(xiàng)絕對(duì)誤差項(xiàng)能夠提高模型的性能,我們進(jìn)行了兩組實(shí)驗(yàn)。一組實(shí)驗(yàn)中生成模型目標(biāo)函數(shù)不含絕對(duì)誤差項(xiàng),另一組中包含絕對(duì)誤差項(xiàng)。兩組實(shí)驗(yàn)中訓(xùn)練集和測(cè)試集數(shù)據(jù)均一致。在測(cè)試集上按照信噪比計(jì)算每組語音的平均質(zhì)量,如表1所示。

表1 不同目標(biāo)函數(shù)的性能對(duì)比
從表中可以看出,在生成模型中增加一項(xiàng)絕對(duì)損失項(xiàng)后在各個(gè)信噪比下的平均語音質(zhì)量均有提高。說明增加絕對(duì)損失項(xiàng)是有效的,能夠提升模型的性能。
我們還將本文方法與DNN 算法以及降噪自編碼(DA)進(jìn)行了對(duì)比,結(jié)果如表2所示。

表2 CGAN與其他網(wǎng)絡(luò)在加性噪聲上性能對(duì)比
本組實(shí)驗(yàn)中,三種方法使用的數(shù)據(jù)均相同。條件生成式對(duì)抗網(wǎng)絡(luò)使用的是含有絕對(duì)損失的目標(biāo)函數(shù)。從實(shí)驗(yàn)結(jié)果可以看出,自編碼和條件生成式對(duì)抗網(wǎng)絡(luò)的方法整體優(yōu)于深度神經(jīng)網(wǎng)絡(luò)方法。而條件生成式對(duì)抗網(wǎng)絡(luò)在信噪比較低時(shí)表現(xiàn)比自編碼網(wǎng)絡(luò)好,在信噪比高時(shí)性能不如自編碼網(wǎng)絡(luò)。如圖2 所示,在測(cè)試集隨機(jī)選擇四種語音,使用三種方法在頻譜上的對(duì)比結(jié)果。

圖2 CGAN與其他網(wǎng)絡(luò)對(duì)比展示
我們分析原因可能是信噪比較低時(shí),該結(jié)構(gòu)的條件生成式對(duì)抗網(wǎng)絡(luò)依然能夠分析出噪聲的特性,能夠從帶噪語音中去除一定的噪聲,但是增強(qiáng)后的語音存在一定的失真現(xiàn)象。這也是我們下一步研究的重點(diǎn)。
為了對(duì)帶噪語音進(jìn)行去噪,本文提出了一種使用條件生成式對(duì)抗網(wǎng)絡(luò)的方法。針對(duì)語音增強(qiáng)這個(gè)具體的問題,提出使用絕對(duì)損失的方法提升模型的性能,并與其他的方法進(jìn)行對(duì)比,發(fā)現(xiàn)該方法具有一定的有效性。在研究過程中,對(duì)準(zhǔn)備數(shù)據(jù)并對(duì)數(shù)據(jù)進(jìn)行劃分、預(yù)處理,增加實(shí)驗(yàn)中的數(shù)據(jù)量,這也有利于提高模型的性能。對(duì)于實(shí)驗(yàn)結(jié)果,使用權(quán)威的PESQ 評(píng)價(jià)指標(biāo)進(jìn)行評(píng)價(jià),平均PESQ 值比深度神經(jīng)網(wǎng)絡(luò)和自編碼網(wǎng)絡(luò)都高。部分?jǐn)?shù)據(jù)可視化,直觀感受增強(qiáng)后語音的質(zhì)量。實(shí)驗(yàn)證明條件生成式對(duì)抗網(wǎng)絡(luò)能夠有效的對(duì)語音進(jìn)行去噪增強(qiáng),并且在信噪比較高時(shí)性能好。