陳 宇,尹文兵,高 戈,王 霄,曾 邦,陳 怡
1(公安部第一研究所,北京 100048)
2(武漢大學 國家多媒體軟件工程技術(shù)研究中心,武漢 430072)
3(華中師范大學 計算機學院,武漢 430077)
在現(xiàn)實環(huán)境中錄制的語音信號常常會受到背景噪聲的干擾. 語音增強可以通過去除帶噪語音中的噪聲獲得干凈的語音信號,從而提高語音質(zhì)量與可懂度. 它在聽覺輔助設(shè)備、語音通信、語音識別前端等應用中發(fā)揮著重要作用.
傳統(tǒng)語音增強算法以譜減法[1]、二值掩碼[2]、維納濾波法[3]以及最小均方差法[4]為主. 這些方法假設(shè)語音信號是平穩(wěn)的,只能在高信噪比環(huán)境下對穩(wěn)態(tài)的加性噪聲發(fā)揮作用. 然而現(xiàn)實中大部分帶噪語音的信噪比較低,并且?guī)в谢祉懪c非平穩(wěn)的噪聲,傳統(tǒng)語音增強方法無法處理該類低信噪比的帶噪語音.
過去幾年里,深度神經(jīng)網(wǎng)絡(luò)(deep neural networks,DNNs)逐漸應用到語音增強任務中來[5]. 憑借對復雜映射的強大建模能力,DNNs 可以從數(shù)據(jù)中學習到語音或噪聲的深層特征,例如使用卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)[6]或循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)[7]學習帶噪語音到干凈語音的頻譜映射過程,從而達到去噪的目的. 為了引入語音的上下文信息,長短時記憶網(wǎng)絡(luò)(long short-term memory,LSTM)[8]也被應用到語音增強中. 這些方法通常使用短時傅里葉變換(short-time Fourier transform,STFT)所得的頻域幅度譜作為網(wǎng)絡(luò)映射目標,同時使用帶噪相位進行語音重構(gòu),這會導致幅度譜與相位譜不匹配的情況出現(xiàn). 為了解決該問題,時域語音增強方法[9–11]逐漸受到人們重視. 該類方法通過直接增強語音的時域波形,避免了逆短時傅里葉變換(ISTFT)過程,使其性能不依賴相位估計的準確性[12].
生成對抗網(wǎng)絡(luò)(generative adversarial network,GAN)[13]通過學習底層數(shù)據(jù)分布來生成類似于真實數(shù)據(jù)的樣本. GAN 作為最先進的深度生成模型被迅速應用到語音相關(guān)的任務中來,如語音轉(zhuǎn)換[14]、語音合成[15]等. Pascual 等人提出了一種基于生成對抗網(wǎng)絡(luò)的語音增強方法(speech enhancement generative adversarial network,SEGAN)[16],該方法使用生成器將帶噪語音的時域波形直接映射生成干凈語音波形,保留了大量原始語音的底層信息. 同時使用鑒別器區(qū)分干凈語音信號與增強語音信號,將鑒別結(jié)果反饋給生成器,指導生成器學習類似于真實干凈語音的信號分布. 盡管已有實驗證明GAN 在語音增強任務上的應用是成功的,但增強語音失真與缺乏對各種語音特征的考慮[12]等問題依然存在. 在圖像處理任務中,許多人通過修改損失函數(shù)[17]或改進生成器和鑒別器結(jié)構(gòu)[18,19],以改善GAN 的效果. 但在語音增強任務中該問題還未得到廣泛研究,SEGAN 仍存在語音失真與低信噪比條件下表現(xiàn)不佳的問題.
為了解決該問題,Phan 等人[20]提出了SEGAN 的改進算法,即基于迭代生成對抗網(wǎng)絡(luò)的語音增強算法(ISEGAN)和基于深度生成對抗網(wǎng)絡(luò)的語音增強算法(DSEGAN),通過對增強語音進行多重映射,達到進一步細化語音和噪聲差別的目的. 同時,文獻[21]提出了一種基于時頻域生成對抗網(wǎng)絡(luò)的語音增強算法(timefrequency domain SEGAN,TFSEGAN),該方法采用了時頻雙鑒別器的模型結(jié)構(gòu)和時頻域L1 損失函數(shù),提升了低信噪比下SEGAN 增強語音的語音質(zhì)量和語音可懂度,但該方法仍存在增強語音失真的現(xiàn)象.
受文獻[20,21]啟發(fā),本文提出一種新的生成對抗網(wǎng)絡(luò)語音增強框架,該框架包含多個生成器與多個鑒別器. 其中串聯(lián)的多生成器可以對語音信號進行多階段映射,通過不斷對增強語音進行優(yōu)化,取得更優(yōu)的生成結(jié)果. 并聯(lián)的多鑒別器分別將增強語音的時域特征與頻域特征作為輸入,指導生成器間接地學習語音頻域特征分布. 相應的本文使用時頻域聯(lián)合損失函數(shù),通過在生成器的損失函數(shù)中引入頻域損失,提高生成器對頻域細節(jié)信息的捕獲能力. 實驗結(jié)果表明,本文所提出的方法在PESQ[22]與STOI[23]評價指標上比SEGAN基線表現(xiàn)更優(yōu),并且在低信噪比條件下相較DSEGAN[20]與TFSEGAN[21]方法具有更好的去噪效果與更少的語音失真.
SEGAN 與CGAN[24]的結(jié)構(gòu)類似,由一個生成器G與一個鑒別器D組成. 在訓練過程中,生成器將隨機采樣的帶噪語音x?作為輸入,通過映射的方式產(chǎn)生相應的增強語音信號x?. 干凈語音x與 增強語音x?分別與帶噪語言x?成對送入鑒別器. 鑒別器接收到輸入信號,需要鑒別該信號是否為真實的干凈語音,并將結(jié)果反饋給生成器. 為了生成一個真實的樣本,生成器被訓練來欺騙鑒別器,而鑒別器被訓練來區(qū)分真實樣本x和x?. SEGAN通過最小最大化博弈的對抗性訓練來模擬真實數(shù)據(jù)的復雜分布,以此促進模型學習語音的樣本分布信息,結(jié)構(gòu)如圖1 所示,其中 ⊕為特征拼接(contact)操作.
圖1 SEGAN 模型框架
SEGAN 生成器是一個編碼器-解碼器結(jié)構(gòu),負責實現(xiàn)語音增強的功能,其結(jié)構(gòu)如圖2 所示. 編碼器的輸入為帶噪語音原始波形,經(jīng)過多層卷積與PReLU 壓縮得到高維的中間向量c. 該中間向量c與隨機噪聲z一起送往解碼器. 解碼器結(jié)構(gòu)與編碼器網(wǎng)絡(luò)結(jié)構(gòu)鏡像對稱,通過反卷積與PReLU 激活函數(shù)將編碼器結(jié)果還原為語音時域特征,即增強后的語音波形x?. 由于使用的語音時域波形特征是直接對語音進行分幀、采樣得到的,沒有其他特征提取操作,模型的輸出無需進行語音波形重構(gòu)等操作來得到增強語音,避免了傳統(tǒng)譜映射方法中估計幅度譜與帶噪相位譜不匹配的問題.
圖2 SEGAN 的生成器
SEGAN 鑒別器的主要作用是監(jiān)督生成器進行訓練,只工作于模型的訓練階段,并不參與模型測試等階段. 鑒別器由12 個1 維卷積層與1 個全連接層組成,其結(jié)構(gòu)如圖3 所示. 鑒別器對輸入信號進行分類,判斷其真假,并將判別打分反饋給生成器. 在訓練過程中,鑒別器學會將這對信號(x,)分類為真,(x,)分類為假,而生成器試圖欺騙鑒別器,使鑒別器將(x,)分類為真.
圖3 SEGAN 的鑒別器
受最小二乘法GAN[25]的啟發(fā),SEGAN 采用最小二乘法損失來提高鑒別器的穩(wěn)定性. 鑒別器D和生成器G的最小二乘目標函數(shù)被明確寫為:
其中,D表示鑒別器,G表示生成器,x表示干凈語音,表示帶噪語音,z表示隨機噪聲,≡G(z,)為生成器輸出的增強語音.
在式(2)中,干凈語音x和增強語音x?時域幅值之間的L1 距離被計算在內(nèi),以鼓勵生成器G生成更精細和真實的結(jié)果[16]. L1-norm 項的影響由超參數(shù) λ調(diào)節(jié),λ在文獻[16]中被設(shè)定為100.
為了提升SEGAN 在低信噪比條件下的增強性能,同時減少增強語音失真對語音識別后端的影響,本文提出了一種多階段生成器與時頻鑒別器的生成對抗網(wǎng)絡(luò)(MS-TFSEGAN),其結(jié)構(gòu)如圖4 所示.
圖4 MS-TFSEGAN 模型框架
文獻[26]在GAN 的基礎(chǔ)上使用了額外的生成器組成串聯(lián)生成器的結(jié)構(gòu),取得了更好的圖像重構(gòu)性能.以此為鑒,Phan 等人在文獻[20]中探索了SEGAN 多重映射的方法,證實了該方法在語音增強中同樣有效.本文采用文獻[20]中的DSEGAN 的生成器框架,采用兩個生成器進行串聯(lián),實現(xiàn)多階段的增強,取代SEGAN中單生成器單階段增強的方法,其結(jié)構(gòu)如圖5.
圖5 MS-TFSEGAN 的生成器
生成器G1與G2與SEGAN 的生成器結(jié)構(gòu)相同,但參數(shù)相互獨立.G1的輸入為帶噪語音信號與隨機噪聲z1,生成增強語音信號. 生成器G2接收到前一級G1的輸出以及隨機噪聲z2,再次進行增強映射,輸出一個更好的增強信號,即:
傳統(tǒng)SEGAN 的生成器與鑒別器輸入均為語音時域特征,完全忽略了語音信號在頻域上的特征分布情況. 而低信噪比條件下,語音信號會淹沒在噪聲中,使帶噪語音的時域分布信息難以捕獲. 鑒于此,本文采用雙路鑒別器結(jié)構(gòu),使生成器能夠同時學習語音的時域與頻域中的特征分布,如圖6 所示,其中鑒別器D1為時域鑒別器,鑒別器D2為頻域鑒別器.
圖6 MS-TFSEGAN 的鑒別器框架
鑒別器D1與D2與SEGAN 的鑒別器結(jié)構(gòu)相同,如圖3 所示,D1輸入為時域波形特征,D2輸入為語音信號經(jīng)過FFT 變換之后的頻域特征. 鑒別器D1和D2都是由12 層卷積層和1 層Softmax 全連接層組成,并在LeakyReLU 激活前使用虛擬批歸一化(virtual batch-norm)[27],α=0.3. 在訓練時,兩個鑒別器都將接收到生成器G1與G2輸出的增強語音,并對兩路增強語音進行鑒別打分,打分結(jié)果通過損失函數(shù)分別送回生成器G1與G2.
MS-TFSEGAN 在訓練時,鑒別器D1與D2將生成器G1、G2輸出的數(shù)據(jù)對都鑒別為假,只有(x,)鑒別為真. MS-TFSEGAN 時域鑒別器D1的損失函數(shù)與SEGAN 鑒別器的損失函數(shù)相似,但要對生成器G1和G2的輸出都進行鑒別打分,其損失函數(shù)如式(5)所示:
其中,D1表示時域鑒別器,G表示生成器,x表示干凈語音,表示帶噪語音,z表示隨機噪聲,≡Gn(zn,)為第n個生成器輸出的增強語音,當n為0 時,
MS-TFSEGAN 頻域鑒別器D2的輸入為傅里葉頻譜特征. L1 損失可以直接最小化估計頻譜和干凈頻譜之間的距離[16],可以帶來比L2 損失更好的語音增強性能[28],所以MS-TFSEGAN 的損失函數(shù)采用L1 范式計算頻域損失,其計算方式如式(6)所示:
其中,D2表示頻域鑒別器,FFT[·]指快速傅里葉變換操作.
另外,文獻[21]表明,頻域鑒別器雖然能監(jiān)督生成器捕獲部分頻域特征,但該部分特征較為模糊與粗糙,其細膩程度嚴重不足并缺乏現(xiàn)實意義. 為了解決該問題,本文采用文獻[21]中的時頻聯(lián)合損失函數(shù),向生成器損失函數(shù)中引入頻域L1 損失項. 故整個生成器的損失函數(shù)如式(7)所示:
為了在多個階段規(guī)范損失大小,式(7)中的權(quán)值λn和 μn的值大小分別被設(shè)置為和[20]. 通過上述設(shè)置,一個生成器的增強后輸出的L1 損失項是其前一個生成器的兩倍.
本文的實驗環(huán)境為64 位操作系統(tǒng)Ubuntu 16.04,主要使用的開源工具為SOX、TensorFlow 和Kaldi. 本文使用的數(shù)據(jù)集為開源中文語音數(shù)據(jù)集Aishell-1,噪聲數(shù)據(jù)集則為MUSAN[29].
訓練集設(shè)置: 增強模塊網(wǎng)絡(luò)的帶噪語音訓練集由包含340 個說話人、共150 小時的Aishell-1 干凈中文語音數(shù)據(jù)集和噪聲數(shù)據(jù)集MUSAN 仿真而成. 通過SOX工具給Aishell-1 數(shù)據(jù)集加上了?15 dB、?10 dB、?5 dB、0 dB、5 dB 和10 dB 這6 組不同信噪比的隨機種類噪聲,可以得到不同信噪比的帶噪語音訓練數(shù)據(jù)集.
測試集設(shè)置: 本次實驗的測試集包括6 個子集,6 個子集中的帶噪語音的信噪比分別為?15 dB、?10 dB、?5 dB、0 dB、5 dB 和10 dB. 其中,每個子集包含1 000條帶噪語音,子集之間除了信噪比不同,其他設(shè)置均相同. 與訓練集相同,測試集的語音是使用SOX 工具給Aishell-1 測試集添加MUSAN 噪聲集. 實驗結(jié)果將由PESQ、STOI 和語音識別CER 這3 種參數(shù)進行評估.
在本實驗中,MS-TFSEGAN 生成器與鑒別器(包括時域鑒別器和頻域鑒別器)的網(wǎng)絡(luò)參數(shù)均與SEGAN的網(wǎng)絡(luò)參數(shù)一致. 語音信號采樣率為16 kHz,幀長為1 s,幀移為500 ms,FFT 采樣點數(shù)為16 384. 另外,模型訓練的batchsize 設(shè)為100,初始化學習率為0.000 1,優(yōu)化方式采用RMSProp 優(yōu)化器.
本次實驗的基線系統(tǒng)為SEGAN,選取DSEGAN和TFSEGAN 作為額外的基線系統(tǒng),其性能僅作為參考. 實驗的結(jié)果將從增強后語音的質(zhì)量、可懂度以及對后端語音識別系統(tǒng)的影響3 個方面進行分析. 其中,PESQ 作為增強語音質(zhì)量的評估標準; STOI 作為增強語音可懂度的評估標準; 以Kaldi 的Chain model 作為后端語音識別系統(tǒng),對增強語音進行識別得到的CER作為對后端語音識別系統(tǒng)的影響的評估標準. 本次實驗的結(jié)果以及分析如下所示.
(1)語音質(zhì)量比較
采用PESQ 作為語音作為增強后語音的評估標準,對MS-TFSEGAN 在不同信噪比條件下的增強語音的質(zhì)量進行評估,評估結(jié)果如表1 所示.
表1 4 種模型的PESQ 對比
由表1 所示,在提升語音質(zhì)量方面,各信噪比下MS-TFSEGAN 增強效果均比DSEGAN 與TFSEGAN優(yōu)秀. 與SEGAN 相比,MS-TFSEGAN 的增強性能平均提升了約13%,尤其在?15 dB 條件下,其性能提升約15.15%. 這說明MS-TFSEGAN 很大程度上解決了SEGAN 在低信噪比條件下增強語音質(zhì)量較差的問題.
同時如表1 所示,MS-TFSEGAN 在DSEGAN 的基礎(chǔ)上引入了時頻鑒別器,取得了約10%的性能提升.與TF-SEGAN 相比,使用了多階段的生成映射,取得了約9%的性能提升,尤其在高信噪比條件下同樣取得了約8.27%的提升,解決了TFSEGAN 在高信噪比下提升效果不明顯的問題[21].
(2)語音可懂度結(jié)果比較
采用STOI 作為語音可懂度評估標準,對MSTFSEGAN 在不同信噪比條件下的增強語音的可懂度進行評估,評估結(jié)果如表2 所示.
表2 4 種模型STOI 的對比
由表2 可知,在提升語音可懂度方面,MS-TFSEGAN的性能明顯強于SEGAN、DSEGAN 和TFSEGAN.MS-TFSEGAN 的STOI 相較SEGAN 提升了約8.97%,相較DSEGAN 與TFSEGAN 也獲得了約6.67%的提升. 特別是在?10 dB 與?15 dB 時,由于SEGAN 存在語音失真的問題,導致增強后語音的可懂度比原帶噪語音更低. 而MS-TFSEGAN 在?15 dB 與?10 dB 條件下STOI 分別取得了15.4%與12.54%的提升,明顯優(yōu)于其他方法,進一步說明MS-TFSEGAN 能夠有效緩解語音失真導致的語音可懂度下降.
(3)語音識別結(jié)果比較
采用CER 作為標準評估MS-TFSEGAN 對后端語音識別系統(tǒng)準確率的影響. 6 組不同信噪比數(shù)據(jù)經(jīng)過各語音增強模型后,得到的增強語音的識別結(jié)果CER 的值如表3 所示.
表3 4 種模型的CER 對比
表3 顯示,在?15 dB 條件下,SEGAN、DSEGAN對識別準確率并無提升,反而由于增強語音存在失真導致識別錯誤率上升. 相較之下,由于引入了頻域信息,TFSEGAN 與MS-TFSEGAN 在低信噪比條件下對語音識別準確率有所提升,尤其是MS-TFSEGAN 相較SEGAN 在準確率上有約10%的提升. 同時在高信噪比下,相較于原語音也有1%的識別準確率的提升.
在復雜度方面,由于MS-TFSEGAN 需要訓練兩個生成器與兩個鑒別器,導致其訓練速度相比于SEGAN較慢. 但在增強階段,鑒別器組不參與增強過程,MSTFSEGAN 的計算速度與SEGAN 基線模型相當.
綜合3 組實驗可以得到,MS-TFSEGAN 由于其多階段映射與時頻鑒別器的結(jié)構(gòu),無論在語音增強性能上還是提升語音識別準確率的性能方面,都要優(yōu)于SEGAN 等基線模型. 說明MS-TFSEGAN 更適合處理低信噪比語音以及作為語音識別的前端模塊.
為了解決SEGAN 存在的問題和不足,本文提出了多生成器與時頻鑒別器的生成對抗網(wǎng)絡(luò)語音增強算法(MS-TFSEGAN). 在模型結(jié)構(gòu)方面,MS-TFSEGAN采用了串聯(lián)的生成器結(jié)構(gòu),對帶噪語音進行多階段的增強. 同時使用了并聯(lián)的時頻鑒別器結(jié)構(gòu),時域鑒別器輸入語音樣本的時域特征,頻域鑒別器輸入語音樣本的頻域特征. 在兩個鑒別器的作用下,MS-TFSEGAN的生成器能夠同時學習語音樣本在時域和頻域中的分布規(guī)律和信息. 在損失函數(shù)方面,MS-TFSEGAN 采用了時頻域聯(lián)合損失函數(shù).
實驗證明,在負信噪比條件下,MS-TFSEGAN 的語音質(zhì)量和可懂度與SEGAN 相比分別提升了約14.63%和12.47%. 同時語音識別的實驗證明,MS-TFSEGAN 相比于SEGAN 與其他模型能夠更好地捕獲語音樣本中的頻域中的分布信息,在語音識別準確率的提升上更為優(yōu)秀. MS-TFSEGAN 一定程度上解決了SEGAN 在低信噪比條件下增強性能不佳的問題,同時減少了增強語音的失真現(xiàn)象,在作為語音識別前端模塊具有明顯優(yōu)勢.