王怡斐,韓俊剛,樊良輝
(西安郵電大學(xué),西安 710121)
語音增強(qiáng)是信號處理領(lǐng)域一個(gè)重要的研究問題。在實(shí)際聲學(xué)場景中,語音信號都會受到不同程度的噪音污染,在嚴(yán)重情況下,語音會完全淹沒到噪聲中,導(dǎo)致無法辨別原始語義。語音增強(qiáng)是指從帶噪語音中盡可能提取純凈的語音信號,以提高語音質(zhì)量和語音可懂度[1]。目前,語音增強(qiáng)在移動通信、語音識別、安全監(jiān)聽、人機(jī)對話、人工電子耳蝸等領(lǐng)域有著廣泛的應(yīng)用[1-4]。
近年來,語音增強(qiáng)方法得到快速發(fā)展。譜減法[5]通過減去估計(jì)的短時(shí)噪聲譜,得到估計(jì)的干凈語音。在文獻(xiàn)[5]中,提出了用基于全極點(diǎn)模型的迭代維納濾波方法進(jìn)行增強(qiáng),然而通過這些傳統(tǒng)方法[5-6]增強(qiáng)后的語音有“音樂噪聲”殘留問題[7]。噪聲與干凈語音呈非線性關(guān)系,使用神經(jīng)網(wǎng)絡(luò)建模的方法被提出,使用降噪自編碼進(jìn)行語音增強(qiáng)被廣泛采納[8]。文獻(xiàn)[7-9]提出用淺層神經(jīng)網(wǎng)絡(luò)作為非線性濾波器,但訓(xùn)練出的模型在數(shù)據(jù)量較小、網(wǎng)絡(luò)規(guī)模小的情況下性能較差。此外,淺層神經(jīng)網(wǎng)絡(luò)的隨機(jī)初始化經(jīng)常出現(xiàn)陷入局部極小值或停滯問題[10],特別是包含多隱藏層的架構(gòu)。Hinton在文獻(xiàn)[11]中開始深層網(wǎng)絡(luò)的訓(xùn)練,提出了一種基于貪婪的分層無監(jiān)督學(xué)習(xí)算法,每一層都經(jīng)過無監(jiān)督的預(yù)訓(xùn)練來學(xué)習(xí)輸入的抽象特征,該算法被成功應(yīng)用于自動語音識別(automatic speech recognition, ASR)和語音增強(qiáng)任務(wù)[11]中。文獻(xiàn)[12]提出了一種基于回歸深層神經(jīng)網(wǎng)絡(luò)(deep neural networks, DNN) 模型的語音增強(qiáng)框架,利用多條件訓(xùn)練數(shù)據(jù)對關(guān)鍵特征進(jìn)行分析,可以去除音樂噪聲殘留。但基于DNN的語音增強(qiáng)系統(tǒng)存在需要預(yù)訓(xùn)練、需要手工提取語音信號特征值,且存在無法處理看不見的噪聲等缺陷。文獻(xiàn)[13]提出使用最小二乘生成對抗網(wǎng)絡(luò)到語音增強(qiáng)任務(wù)中,成功為語音去噪。卻依然存在原始生成對抗網(wǎng)絡(luò)模式崩潰、訓(xùn)練緩慢等問題。
生成對抗網(wǎng)絡(luò)[14](generative adversarial nets, GAN)理論上具有“無限”的生成能力,被廣泛應(yīng)用到圖像、視頻以及語音領(lǐng)域[15-16]。本研究使用了生成對抗網(wǎng)絡(luò)來做加性噪聲的語音增強(qiáng)任務(wù),應(yīng)用WGAN[17]來學(xué)習(xí)帶噪語音與干凈語音信號之間的復(fù)雜映射,基本解決了 GAN訓(xùn)練不穩(wěn)定、生成模型和判別模型難以平衡、GAN模式崩潰等問題[17],確保了生成語音信號的質(zhì)量。進(jìn)一步探索了生成對抗網(wǎng)絡(luò)在語音和語言處理方面的應(yīng)用。
在語音增強(qiáng)過程中,要預(yù)估出帶噪語音中噪聲的分布特性,再結(jié)合加性噪聲的特點(diǎn)進(jìn)行去噪還原。為模擬出噪聲信號和語音信號之間復(fù)雜的非線性關(guān)系,構(gòu)建基于WGAN的語音增強(qiáng)生成對抗網(wǎng)絡(luò)模型,實(shí)現(xiàn)帶噪語音到干凈語音信號的映射。
WGAN算法是一種改進(jìn)的生成模型架構(gòu),通過深層神經(jīng)網(wǎng)絡(luò)映射得到噪聲分布特性。WGAN用對抗的過程來估計(jì)生成模型,它由生成模型G(generative model)和判別模型D(discriminative model)2部分組成。生成模型用來捕獲噪聲數(shù)據(jù)的真實(shí)分布,學(xué)習(xí)帶噪語音到干凈語音的映射。判別模型用來區(qū)分干凈語音和生成模型生成的增強(qiáng)語音。與原始的生成對抗網(wǎng)絡(luò)相比,WGAN理論上給出了GAN訓(xùn)練不穩(wěn)定的原因,即交叉熵[17](Jensen-Shannon divergence,JS散度)不合適用來衡量生成數(shù)據(jù)分布和真實(shí)數(shù)據(jù)分布的距離,故使用Wasserstein[16]距離替代JS散度。在語音增強(qiáng)任務(wù)中,能否準(zhǔn)確衡量真實(shí)語音數(shù)據(jù)分布和生成語音數(shù)據(jù)分布之間的的距離,決定了增強(qiáng)效果的好壞。Wasserstein距離能夠更好地衡量語音信號之間的差異,指導(dǎo)網(wǎng)絡(luò)的訓(xùn)練過程,故本文使用WGAN代替原始的GAN。同時(shí),相比GAN,WGAN可以生成更多樣的語音,避免了模式崩潰造成的增強(qiáng)語音信號失真的問題。文獻(xiàn)[1]使用最小二乘生成對抗網(wǎng)絡(luò)(least squares GAN, LSGAN)進(jìn)行語音增強(qiáng),同樣存在原始生成對抗網(wǎng)絡(luò)的缺點(diǎn),本文方法應(yīng)用WGAN,在網(wǎng)絡(luò)結(jié)構(gòu)上進(jìn)行優(yōu)化。結(jié)合語音增強(qiáng)這個(gè)具體任務(wù)設(shè)計(jì)網(wǎng)絡(luò),配置網(wǎng)絡(luò)參數(shù),并使用Wasserstein距離作為優(yōu)化方式訓(xùn)練GAN,下節(jié)詳細(xì)介紹網(wǎng)絡(luò)配置。語音增強(qiáng)模型中,生成模型和判別模型滿足以下關(guān)系
(1)
(1)式中:G=gθD=fw;z為帶噪語音與語音信號之間的關(guān)系,服從分布p(z);x為干凈語音特性,服從分布Pr。生成模型的目標(biāo)是最大化D(G(z)),令判別模型無法正確判別生成語音。而判別模型的目的是最大化式L,以此開展網(wǎng)絡(luò)對抗訓(xùn)練,達(dá)到增強(qiáng)語音的目的。
生成模型的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,分為編碼和解碼2個(gè)過程。它的功能是輸入帶噪語音,生成增強(qiáng)語音。實(shí)際聲學(xué)場景中,噪音大多數(shù)來自隨機(jī)的噪音源,與干凈語音呈現(xiàn)非線性關(guān)系,故采用卷積網(wǎng)絡(luò)提取它們的關(guān)系特征,并利用激活函數(shù)線性整流函數(shù)(rectified linear unit, ReLU)對關(guān)系特征進(jìn)行融合,得到抽象的噪音分布特征。該激活函數(shù)也解決了因網(wǎng)絡(luò)層數(shù)增加,訓(xùn)練過程中出現(xiàn)梯度彌散,導(dǎo)致訓(xùn)練無法繼續(xù)的問題。根據(jù)提取出的特征就可以進(jìn)行對語音去噪還原。為了提高增強(qiáng)效果,將生成模型設(shè)計(jì)成全卷積U-Net結(jié)構(gòu)[18],無全連接層。當(dāng)編碼/解碼部分沒有被使用時(shí),網(wǎng)絡(luò)將通過跳過連接方式,即直接連接編碼層和對應(yīng)的解碼層跳過該部分。此外,跳過連接減少了訓(xùn)練的參數(shù)數(shù)量和訓(xùn)練時(shí)間。同時(shí)在生成模型中加入批標(biāo)準(zhǔn)化層(batch normalization, BN)加快收斂速度并提高模型去噪泛化能力、加入池化層對提取出的特征進(jìn)行選擇和稀疏處理,以保證模型性能。編碼層的濾波器個(gè)數(shù)分別為1,16,32,32,64,64,128,128,256,256,512。卷積核大小為30,步長為1。在編碼過程,數(shù)據(jù)分別流經(jīng)卷積層、批標(biāo)準(zhǔn)化層、池化層,共十一次迭代。解碼過程是編碼階段的鏡像過程,即與編碼過程參數(shù)配置保持一致的反卷積過程。
圖1 生成模型網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Network structure of generative model
圖2 判別模型網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Network structure of discriminative model
判別模型網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。它的功能是判別輸入語音,得到判別概率。不同噪音的分布特征不同,由帶噪語音獲得的增強(qiáng)語音和干凈語音分布存在偏差,無法準(zhǔn)確模擬干凈語音。通過卷積神經(jīng)網(wǎng)絡(luò)提取該特征上的差異作為判別依據(jù),區(qū)分干凈語音和生成語音。判別模型與生成模型的卷積設(shè)計(jì)類似,濾波器個(gè)數(shù)分別為16,32,32,64,64,128,128,256,256,512。卷積核大小為30,步長為1。在網(wǎng)絡(luò)中加入批標(biāo)準(zhǔn)化層,降低初始化參數(shù)對訓(xùn)練結(jié)果的影響、加快訓(xùn)練速度,使用Leaky ReLU作為激活函數(shù),其數(shù)學(xué)表達(dá)式為(2)式,最后加入全連接層輸出判別結(jié)果。在判別模型中,數(shù)據(jù)首先經(jīng)過合并層,然后依次流經(jīng)卷積層、批標(biāo)準(zhǔn)化層,共10次迭代。最后經(jīng)過全連接層輸出結(jié)果。
(2)
(2)式中,α是一個(gè)很小的常數(shù),可以修正數(shù)據(jù)分布。
首先輸入帶噪語音來訓(xùn)練生成模型,帶噪語音經(jīng)過生成模型編碼和解碼,產(chǎn)生增強(qiáng)語音,然后將它和帶噪語音一起輸入到判別模型,并和干凈語音進(jìn)行比較,應(yīng)用WGAN定義的損失函數(shù)更新網(wǎng)絡(luò)參數(shù)。生成模型與判別模型競爭對抗,不斷迭代,使生成語音逐步接近干凈語音,從而實(shí)現(xiàn)語音增強(qiáng)。
實(shí)驗(yàn)中,生成模型G直接處理采樣率為16 kHz的帶噪語音信號,輸出是增強(qiáng)語音信號。數(shù)據(jù)首先經(jīng)過卷積操作,輸入到批標(biāo)準(zhǔn)化層中進(jìn)行歸一化操作,之后經(jīng)過ReLU激活函數(shù)進(jìn)入下一層網(wǎng)絡(luò)。在解碼時(shí),輸入反卷積層和批標(biāo)準(zhǔn)化層,同樣使用ReLU作為激活函數(shù)。生成模型的優(yōu)化過程如圖3所示。根據(jù)判別模型的輸出以及生成語音和干凈語音的差距,調(diào)整權(quán)重參數(shù)。
判別模型D的輸入來源于2部分:①帶噪語音信號;②生成模型的輸出或干凈語音信號,對數(shù)據(jù)合并后,進(jìn)行一系列卷積操作和歸一化操作,使用Leaky ReLU非線性激活函數(shù),最后經(jīng)過全連接層輸出判別結(jié)果。
圖3 生成模型的優(yōu)化過程Fig.3 Tuning process of generative model
判決模型的優(yōu)化過程如圖4所示。生成模型生成增強(qiáng)信號,判別模型對帶噪語音/干凈語音和帶噪語音/生成語音進(jìn)行對比并做出分類,在迭代過程中不斷調(diào)整權(quán)重參數(shù)。
實(shí)驗(yàn)中網(wǎng)絡(luò)使用RMSprop (root mean square prop)算法[19]更新參數(shù),迭代次數(shù)為200次。學(xué)習(xí)率為0.001,batch大小為100。在訓(xùn)練時(shí),采用生成模型和判別網(wǎng)絡(luò)模型交替訓(xùn)練的策略。在語音增強(qiáng)生成對抗網(wǎng)絡(luò)的訓(xùn)練中,每訓(xùn)練完一次生成模型之后,就去訓(xùn)練判別模型非常耗時(shí),而且容易造成過擬合的問題。因此,在實(shí)際訓(xùn)練中,每更新一次生成網(wǎng)絡(luò),更新5次判別網(wǎng)絡(luò)。
圖4 判決模型的優(yōu)化過程Fig.4 Tuning process of discriminative model
實(shí)驗(yàn)中語音信號處理為二進(jìn)制格式。為了增加數(shù)據(jù)量,使網(wǎng)絡(luò)能學(xué)習(xí)到更多語音信號的細(xì)節(jié),對信號加重疊矩形窗。同時(shí)因?yàn)檎Z音信號的短時(shí)平穩(wěn)性,加窗處理之后數(shù)據(jù)會呈現(xiàn)一定的周期性,有利于網(wǎng)絡(luò)的學(xué)習(xí)。一條語音長度為58 720,大約3 s。窗寬為8 192,大約為0.5 s,重疊200 ms。測試數(shù)據(jù)采用相同的處理,網(wǎng)絡(luò)輸出之后對波形進(jìn)行重構(gòu)。
本文使用的語音增強(qiáng)生成對抗網(wǎng)絡(luò)具有以下優(yōu)點(diǎn):當(dāng)前大多數(shù)生成模型都要使用馬爾科夫鏈,該網(wǎng)絡(luò)只用到了反向傳播,不需要馬爾科夫鏈。而且從實(shí)際結(jié)果看,GAN能產(chǎn)生更好的語音信號。同時(shí)在訓(xùn)練過程中無需手工提取語音信號特征值,可以直接使用原始音頻進(jìn)行端對端的語音增強(qiáng)。也無需對噪聲信號和干凈語音之間的獨(dú)立性做不精確假設(shè),不必對噪聲頻譜進(jìn)行估計(jì)。該網(wǎng)絡(luò)學(xué)習(xí)了多說話人、多種噪音類型、多類型信噪比的語音信號,能夠模擬出噪聲和語音復(fù)雜的非線性關(guān)系。訓(xùn)練好的網(wǎng)絡(luò)具有泛化能力,可以對常見的多種噪聲進(jìn)行增強(qiáng)。
本次實(shí)驗(yàn)的配置如表1所示。
表1 實(shí)驗(yàn)環(huán)境
本實(shí)驗(yàn)干凈語音采用的是TIMIT數(shù)據(jù)集[20],該數(shù)據(jù)集的語音采樣頻率是16 kHz,來自美國630個(gè)說話人,每人說出10個(gè)給定的句子,一共包含6 300個(gè)句子。將每個(gè)句子分段處理,段長為3 s。噪聲集采用NOISEX-92數(shù)據(jù)集[20]的15種噪音和俄亥俄州立大學(xué)認(rèn)知神經(jīng)動力學(xué)實(shí)驗(yàn)室提供的100種噪音數(shù)據(jù)[22]。為了包含實(shí)際聲學(xué)場景中常見的信噪比種類,用-5,0,5,10,15,20 dB 6種信噪比來構(gòu)建加性噪聲集。本實(shí)驗(yàn)中使用的噪聲隨機(jī)在115種噪聲中選取100種作為匹配噪聲集,剩余作為不匹配噪聲。將分段后的句子隨機(jī)與600種不同信噪比的噪音進(jìn)行疊加,構(gòu)成300 h數(shù)據(jù)集。將數(shù)據(jù)集按照9∶1隨機(jī)分為訓(xùn)練集和測試集,測試集則與訓(xùn)練集不重疊。
語音增強(qiáng)的衡量指標(biāo):感知語音質(zhì)量評價(jià)PESQ(-0.5 到4.5),PESQ是國際電信聯(lián)盟推薦的P.862標(biāo)準(zhǔn),它是被認(rèn)為和人主觀測聽的打分(mean opinion score, MOS)一致度較高的客觀指標(biāo)。首先經(jīng)過電壓時(shí)間的規(guī)整,再進(jìn)行聽覺轉(zhuǎn)換,然后轉(zhuǎn)換到頻譜上,接著認(rèn)知建模和最終的距離度量,對語音質(zhì)量進(jìn)行衡量。它也是語音增強(qiáng)的一個(gè)最重要的目標(biāo)之一。
當(dāng)網(wǎng)絡(luò)收斂后,G網(wǎng)絡(luò)模型就可以實(shí)現(xiàn)增強(qiáng)任務(wù)。實(shí)驗(yàn)中網(wǎng)絡(luò)結(jié)構(gòu)由tensorflow框架實(shí)現(xiàn),使用4塊GTX1080并行計(jì)算,訓(xùn)練時(shí)間為36 h 23 min。平均一次迭代用時(shí)10.9 min。本文使用的網(wǎng)絡(luò)包含97 473 130個(gè)可訓(xùn)練變量。網(wǎng)絡(luò)中可訓(xùn)練的變量、參數(shù)配置以及輸入到網(wǎng)絡(luò)中的數(shù)據(jù)量都與網(wǎng)絡(luò)的時(shí)間復(fù)雜性相關(guān),與深度學(xué)習(xí)大規(guī)模網(wǎng)絡(luò)相比,如深度殘差網(wǎng)絡(luò),本文網(wǎng)絡(luò)的時(shí)間復(fù)雜性較低。實(shí)驗(yàn)結(jié)果表明,帶噪語音使用該網(wǎng)絡(luò)模型,PESQ平均提升23.97%。匹配噪聲集是訓(xùn)練集包含的噪聲類型,否則為不匹配噪聲集。圖5展示了在匹配噪聲集上的增強(qiáng)頻譜圖,不同強(qiáng)度的餐廳內(nèi)嘈雜噪聲和車內(nèi)噪聲被用來構(gòu)建加性噪聲,相加信噪比為-5,0,5,10,15,20 dB。圖5中分別給出了干凈語音、增加了2種噪音后的語音以及對應(yīng)增強(qiáng)后語音的頻譜圖。在餐廳噪聲中,低信噪比下基本淹沒了干凈語音信號,本文方法增強(qiáng)后的語音頻譜并沒有失真,并且增強(qiáng)效果明顯。2種匹配噪聲,在5種不同信噪比情況下,2種噪音增強(qiáng)后的語音頻譜與干凈語音頻譜均有很高的相似度。圖6展示了在不匹配噪聲集上的增強(qiáng)效果。和匹配噪聲集增強(qiáng)相似,用不同強(qiáng)度的高斯白噪聲構(gòu)建加性噪聲。在不匹配噪聲下,各種不同信噪比的語音增強(qiáng)后的頻譜和干凈語音頻譜也具有很高的相似度。在匹配噪聲和不匹配噪聲中,本文方法均可以達(dá)到增強(qiáng)的目的。
圖5 含有不同強(qiáng)度的餐廳噪聲和車內(nèi)噪聲的帶噪語音增強(qiáng)結(jié)果Fig.5 Speech enhancement result with different intensity of babble and volvo noise
圖6 含有不同強(qiáng)度高斯白噪聲的帶噪語音增強(qiáng)結(jié)果Fig.6 Speech enhancement result with differentintensity of Gaussian white noise
為了驗(yàn)證本文方法的有效性,從測試語音中隨機(jī)抽取一條語音與人群嘈雜聲、餐廳噪聲、街道噪聲以及展廳噪聲4種噪音類型進(jìn)行疊加測試,表2將本文所使用算法與徐勇等提出的深層神經(jīng)網(wǎng)絡(luò)DNN[12]在不同信噪比下的增強(qiáng)效果進(jìn)行了對比,DNN3指3層神經(jīng)網(wǎng)絡(luò)。表2中數(shù)據(jù)為平均結(jié)果。在信噪比分別為20,15,5 dB時(shí),本文算法對語音質(zhì)量的提升百分比高于文獻(xiàn)[12],表明語音增強(qiáng)生成對抗網(wǎng)絡(luò)在信噪比較高的情況下,語音增強(qiáng)任務(wù)中性能較好。此外,在多種信噪比下PESQ平均提升23.97%,高于文獻(xiàn)[12]的21.97%。本文測試語音與DNN中測試使用的語音和噪音不同,所以,表2中DNN和GAN使用Noisy的PESQ不同,但是可以根據(jù)提升的百分比驗(yàn)證本文方法的有效性。
表2 GAN與DNN在加性噪聲上性能對比
表3將本文方法與降噪自編碼進(jìn)行對比,使用測試數(shù)據(jù)與表2相同,表3中數(shù)據(jù)為平均結(jié)果。在信噪比較高時(shí),降噪自編碼與生成對抗網(wǎng)絡(luò)具有基本一致的增強(qiáng)效果,但是當(dāng)信噪比低時(shí),生成對抗網(wǎng)絡(luò)具有更好的增強(qiáng)效果。平均PESQ也高于降噪自編碼。
本研究使用GAN來完成端到端的語音增強(qiáng)任務(wù),對生成模型和判別模型進(jìn)行對抗訓(xùn)練,學(xué)習(xí)噪音與干凈語音間復(fù)雜的作用關(guān)系。該網(wǎng)絡(luò)對生成的噪聲不斷調(diào)整,以學(xué)習(xí)到真實(shí)的數(shù)據(jù)分布。在TIMIT和NOISEX-92、俄亥俄州立大學(xué)認(rèn)知神經(jīng)動力學(xué)實(shí)驗(yàn)室提供的100種噪音數(shù)據(jù)構(gòu)建的數(shù)據(jù)上的實(shí)驗(yàn)表明,該方法在高信噪比下相對于DNN具有更好的增強(qiáng)效果。與降噪自編碼相比,低信噪比表現(xiàn)更好。我們將進(jìn)一步研究多噪音條件下如何利用對抗網(wǎng)絡(luò)進(jìn)行語音增強(qiáng)。