王金超
(上海大學 通信與信息工程學院, 上海 200444)
隨著智能設(shè)備的發(fā)展,人機交互是必不可少的,語音質(zhì)量則是提高產(chǎn)品質(zhì)量與體驗的重要組成。語音增強是提升所有語音處理質(zhì)量的基礎(chǔ),同時也是一大難點。傳統(tǒng)信號處理方法沒法應(yīng)對自然界復(fù)雜多變的噪聲,為了應(yīng)對不同的情景算法中也有許多需要調(diào)整的細節(jié),需要大量的實驗與人力,有的方法可能還會引入音樂噪聲降低語音質(zhì)量[1]。
神經(jīng)網(wǎng)絡(luò)模型非常適合處理非線性擬合問題[2]。實際上語音增強可以看作是含噪語音到純凈語音的一種變換,完全可以利用神經(jīng)網(wǎng)絡(luò)強大的擬合能力對其進行處理。
語音信號包括幅度與相位兩部分。信號相位通常會被歸一化于-π到π之間,相位譜具有雜亂無章、難以預(yù)測的特點[3],因此本文只對語音信號的能量譜進行預(yù)測和估計。對語音信號做短時傅里葉變換(STFT),如式(1)。
(1)
式中,z(t)表示語音時域信號;g(t)表示窗函數(shù)。
STFT包含以下步驟:對原始語音信號分幀、加窗[4];窗函數(shù)采用漢寧窗,兩窗之間有50%重疊;最后對每一幀信號做快速傅里葉變換(FFT),如圖1所示。
圖1 STFT流程
STFT(t,f)是一個二維復(fù)數(shù),其中,t表示時間軸;f表示頻率軸,對復(fù)數(shù)取模就可以得到信號的能量譜稱為語譜圖,如圖2所示。
圖2 語譜圖
語音信號能量幅度的動態(tài)范圍很大,不利于神經(jīng)網(wǎng)絡(luò)學習,需計算每個時頻點對數(shù)能量譜以縮小動態(tài)范圍,且對數(shù)能量譜更符合人類聽覺感知[5]。對數(shù)能量譜計算,如式(2)。
LogSpec(t,f)=ln(|STFT(t,f)|)
(2)
考慮到語音信號具有嚴格時間聯(lián)系,本文將若干幀作為一個組合窗輸入模型,假設(shè)窗長是2τ+1,則模型的實際輸入向量Vn,如式(3)。
Vn=[Xn-τ,…,Xn-1,Xn,Xn+1,…,Xn+τ]
(3)
Xn=[LogSpecstd(n,1),LogSpecstd(n,2),…,
LogSpecstd(n,k)]
式中,k表示FFT點數(shù)。
DM會產(chǎn)生過平滑問題[6]。因此本文預(yù)測IRM:一個0到1內(nèi)的小數(shù)作為當前時頻點增益[7]。語音重構(gòu),如式(4)。
Re(t,f)IRM=O(t,f)·|STFT(t,f)|·angle(STFT(t,f))
(4)
式中,O(t,f)表示模型每個時頻點的輸出。
算法流程,如圖3所示。
圖3 算法流程圖
算法共包含兩個部分:訓(xùn)練階段使模型具有擬合干凈能量譜的能力;測試階段利用訓(xùn)練好的模型對測試語音進行處理。數(shù)據(jù)預(yù)處理模塊的作用是分離語音的能量譜與相位譜,在訓(xùn)練階段相位譜將被棄置,在測試階段相位譜將被用于語音信號重構(gòu)[8]。
DNN模型結(jié)構(gòu)圖,如圖4所示。
圖4 DNN模型結(jié)構(gòu)圖
DNN模型使用最基本的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)[9],由1個輸入層、3個隱藏層和1個輸出層構(gòu)成。輸入層為一窗語音信號;3個隱藏層每個都有2 048個神經(jīng)元,使用的激活函數(shù)為Relu函數(shù);最終輸出是語音窗中間一幀所對應(yīng)的標簽,是十一幀預(yù)測一幀的結(jié)構(gòu)。
CRN[10]可以更好利用語譜圖中各個時頻點的空間信息做出預(yù)測,通過十一幀預(yù)測十一幀,大大提高了模型運行效率。模型結(jié)構(gòu),如圖5所示。
圖5 CRN模型結(jié)構(gòu)圖
采用編解碼器形式。首先通過多層級聯(lián)卷積層對輸入特征編碼壓縮,壓縮后特征包含高維特征,考慮語音信號時序關(guān)聯(lián)性,中間層采用長短時記憶單元。最后通過反卷積層將高維特征解碼得到IRM??紤]到含噪語音與純凈語音特征比較接近,且在編碼過程中可能損失細節(jié)特征,因此采用了級聯(lián)的結(jié)構(gòu)將低維特征與高維特征堆疊以彌補細節(jié)。
本文使用TIMIT數(shù)據(jù)集[11]作為純凈語音,訓(xùn)練語音4 600條,測試語音1 000條。選用訓(xùn)練噪聲為中科大NOISE115[12],測試噪聲為NOISEX-92。語音與噪聲隨機混合得到訓(xùn)練語音共98小時,測試語音共2小時。評價指標為主觀語音質(zhì)量評估(PESQ)[13]。本文還與RNNoise[14]進行對比,所有最優(yōu)結(jié)果都已用粗體標識,如表1所示。
表1 模型對比評分表
從表中我們可以看到,在所有SNR下,CRN模型效果都優(yōu)于RNNoise。在SNR較低情況下,DNN模型效果優(yōu)于CRN模型,隨著SNR逐漸提高,CRN的效果也越來越好。每組SNR下最好的增強結(jié)果平均可以使原始含噪語音的PESQ評分提高0.553分。
DNN模型與CRN模型均采用Keras和Tensorflow[15]庫搭建,DNN一次只預(yù)測一個樣本,CRN一次預(yù)測十一個樣本。模型參數(shù)量與運行時間,如表2所示。
表2 目標對比評分表
比較DM方法與IRM方法之間的差異,如表3所示。
表3 目標對比評分表
可以看到在所有情況下IRM的效果都優(yōu)于DM,且SNR越高,差距越大。這主要是由于IRM可以對原始能量譜作最大程度保留。DM雖然可以對噪聲做更好的抑制,但重新生成的能量譜會存在一定程度的失真。在高SNR下,含噪語音本身就非常接近干凈語音,此時DM會使得PESQ評分降低。
數(shù)據(jù)中出現(xiàn)15 db含噪語音平均SNR高于10 db含噪語音。出現(xiàn)的原因:不同噪聲種類對語音PESQ評分產(chǎn)生的影響是不同的。將TIMIT中的TEST_DR1_FAKS0_SA1.WAV語音以10 db信噪比與NOISEX92中的各個噪聲合成,計算其PESQ值,如表4所示。
表4 不同噪聲10 db下PESQ值
由表4可知,不同噪聲種類對PESQ的影響差別較大。白噪聲、粉噪聲等全頻率噪聲對語音質(zhì)量影響較大;機槍噪聲的脈沖型噪聲對語音質(zhì)量影響較小。
本文研究了基于神經(jīng)網(wǎng)絡(luò)的語音增強算法,利用神經(jīng)網(wǎng)絡(luò)模型實現(xiàn)了含噪能量譜到干凈能量譜的非線性映射,使用了兩種不同的網(wǎng)絡(luò)模型比較并與目前較為先進的模型RNNoise進行了對比試驗,平均提高PESQ評分0.55分,效果明顯。研究兩種不同的回歸目標的特點和其對模型帶來的影響,實驗證明IRM是語音增強問題上更好的選擇。