朱 明,孫世若
(1.鹽城工學院信息工程學院,江蘇 鹽城 224051;2.東南大學信息科學與工程學院,江蘇 南京 210096)
現(xiàn)實中的語音信號總是會受到各種干擾與污染,語音增強是從被噪聲污染的語音信號中提取干凈語音的技術(shù),目的是提高語音的可懂度與質(zhì)量,其在語音通信、自動語音識別系統(tǒng)前端等有著廣泛的應(yīng)用。近些年,隨著深度學習的發(fā)展,更多前沿的有監(jiān)督深度學習方法被引入到語音增強技術(shù)中。
然而,深度學習的網(wǎng)絡(luò)模型通常包含大量的矩陣運算,這使得它必須依靠GPU 進行推理計算。另一方面,許多基于深度學習方法的語音增強模型都是非因果系統(tǒng),使得它們無法在實時系統(tǒng)當中應(yīng)用。Valin[1]提出了一種實時DSP 和深度學習的混合方法,使用循環(huán)神經(jīng)網(wǎng)絡(luò)估計理想頻帶增益,可以滿足實時因果系統(tǒng)的要求。然而,這種方法只對語音的幅值譜進行了處理而忽略了相位的作用。受此啟發(fā),本文提出了一種基于復值掩蔽與擴張卷積的語音增強方法對含噪語音進行實時增強處理。通過與基線模型對比來驗證模型對語音增強性能的改善。
本文所提出的網(wǎng)絡(luò)主要由編碼器-解碼器和門控擴張卷積模塊構(gòu)成,如圖1 所示,其中編碼器包含5 層卷積層,解碼器分為實部和虛部解碼器,分別包含5 層反卷積層。編碼器和解碼器中間包含5 層門控擴張卷積。
圖1 網(wǎng)絡(luò)結(jié)構(gòu)
編碼器-解碼器網(wǎng)絡(luò)只包含卷積和反卷積操作,并且為了滿足因果系統(tǒng)的要求,所有卷積核的尺寸設(shè)置為3×1,即頻率維度對應(yīng)的卷積核尺寸為3,時間維度對應(yīng)的卷積核尺寸為1。這樣在保證幀與幀之間獨立的同時又可以提取到相鄰頻點之間的特征信息。
編碼器包含5 層卷積層,輸入特征是語音短時傅里葉頻譜的實部與虛部。解碼器網(wǎng)絡(luò)采用雙流結(jié)構(gòu),采用2 個相同的解碼器結(jié)構(gòu)分別估計增強語音的實部和虛部。解碼器同樣包含5 層與編碼器鏡像的反卷積層,從而保證輸出特征與輸入特征的維度一致。所有卷積-反卷積層均采用ReLU 激活函數(shù),解碼器最后一層反卷積采用線性激活以保證輸出復值掩蔽取值范圍是無界的。
門控擴張卷積網(wǎng)絡(luò)是連接編碼器和解碼器的中間級,目的是充分利用過去語音的時頻信息,提高網(wǎng)絡(luò)的性能。它將線性門控單元(GLU)中的卷積替換為時域維度上的因果擴張卷積并把多個線性門控單元堆疊(共5 層),通過這種方法可以讓網(wǎng)絡(luò)的感知視野達到64 幀。下面分別介紹因果擴張卷積和線性門控單元。
傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)為了增加網(wǎng)絡(luò)的感知視野,通常采用增加網(wǎng)絡(luò)的深度或者擴大卷積核的尺寸,但這往往導致梯度消失或過大的計算量,導致整體網(wǎng)絡(luò)性能的下降。為了有效地解決這一問題,Yu等[2]提出了擴張卷積的概念,其最大的特點是網(wǎng)絡(luò)的感知視野隨網(wǎng)絡(luò)深度指數(shù)增加。如圖2 所示,擴張卷積通過在卷積核每個元素之間填充0 元素來增加感知視野大小。因果關(guān)系是通過限制卷積核只在過去的樣本上擴張實現(xiàn)的。
圖2 一維因果擴張卷積(卷積核大小為2)
門控機制[3]最早是用于緩解RNN 在傳播過程中的梯度消失問題,從而有效保留時間序列的信息。Dauphin 等[4]改進了LSTM 中的門控機制并用于卷積神經(jīng)網(wǎng)絡(luò)[5]中,稱為線性門控單元,其基本結(jié)構(gòu)如圖3 所示。
圖3 線性門控單元
式(1)表示門控機制的輸出,其中conv(x)表示卷積,tanh 表示tanh 激活函數(shù),σ表示sigmoid 激活函數(shù),☉表示元素相乘。線性門控單元輸出的梯度表示為:
通常,梯度消失是由于反向傳播過程中存在tanh 和sigmoid 激活函數(shù)的導數(shù),而上述梯度公式中的第一項?conv1(x)☉σ(conv2(x))不包含激活函數(shù)的導數(shù),因而可以將梯度流在層與層之間有效傳遞。
傳統(tǒng)的理想比率掩模[6](IRM)是在幅值域中定義的,而本文采用復值理想比率掩模[7](cIRM),它可以有效利用頻域中的相位信息,更加有效地重構(gòu)語音波形。cIRM 同時利用了復數(shù)頻譜的實部和虛部對語音波形進行重構(gòu),便于網(wǎng)絡(luò)學習語音的相位信息,具體計算方法如式(3):
式中:Y表示含噪語音的頻譜,S表示干凈語音的頻譜,下標r表示實部,i表示虛部。解碼器的雙流結(jié)構(gòu)分別預測cIRM 的實部Mr和虛部Mi。為了進一步提高語音的可懂度,網(wǎng)絡(luò)還聯(lián)合優(yōu)化了PASE[8]特征損失。PASE 是Koyama 等提出的一種基于DNN 的語音編碼器,利用PASE 提取增強語音和干凈語音的特征并計算兩者的均方誤差(MSE)作為聯(lián)合優(yōu)化損失項。則對于本文所述的網(wǎng)絡(luò)損失函數(shù)為:
式中:s代表語音的時域波形,S表示語音的頻譜,X表示含噪語音頻譜。
實驗在公開數(shù)據(jù)集Voice Bank[9]和DEMAND[10]上進行,其中Voice Bank 為干凈語音數(shù)據(jù)集,訓練集包含28 個不同的說話人,測試集包含2 個不同的說話人。DEMAND 為噪聲數(shù)據(jù)集,選取其中10 種不同類型的噪聲進行合成,訓練集的合成信噪比為0 dB、5 dB、10 dB、15 dB,測試集的合成信噪比為2.5 dB、7.5 dB、12.5 dB、17.5dB,所有音頻的采樣率均為16 kHz,總共包含11 572 條訓練語音和824 條測試語音。模型學習率設(shè)置為0.000 1,一個批次的大小為64,總共訓練30 輪。實驗選擇PESQ、STOI指標來評估本文所述方法的性能并計算模型的參數(shù)量和計算復雜度來評估模型的實時性。本文選擇了RNNoise[1]、NSNet2[13]作為基線模型進行對比。
實驗結(jié)果見表1。
表1 模型性能對比
粗體表示不同指標下的最優(yōu)結(jié)果。由表1 可以看出,本文所述模型在兩項常用語音可懂度與質(zhì)量的評價準則下均實現(xiàn)了最優(yōu)結(jié)果。相比原始含噪語音,本文所述模型使平均PESQ 和STOI 分別提升了0.64 和0.011,遠高于RNNoise 和NSNet2,這說明有效地估計語音的相位信息可以提升語音重構(gòu)的質(zhì)量。
另一方面,得益于全卷積操作,模型參數(shù)量只有RNNoise 和NSNet2 的15%和3%。而模型的計算復雜度也接近RNNoise,且遠低于NSNet2。在實際測試中,利用CPU(Intel i7-8700)推理一幀(10 ms)語音所需要的時間為3.8ms,這說明模型在滿足實時性要求的情況下,可以有效提高語音質(zhì)量與可懂度。
本文研究了一種基于復值掩蔽與擴張卷積的實時語音增強方法,模型在保證較小參數(shù)量的基礎(chǔ)上,提高了算法的實時性能。此外,通過估計cIRM,模型充分利用語音的相位信息,提高了語音重構(gòu)的質(zhì)量。
為了進一步改善實時系統(tǒng)中語音增強的性能,可以采用更加符合人耳聽覺感知的損失函數(shù)作為優(yōu)化目標,由于損失函數(shù)的優(yōu)化只會增加模型訓練過程的計算復雜度,因而不會影響實時系統(tǒng)中推理計算的復雜度。除此之外,還可以使用更大規(guī)模的噪聲數(shù)據(jù)集來訓練模型,使模型在真實噪聲環(huán)境中有更好的泛化性能。