張禧辰,李云海,朱文輝,陳靜靜
(1.江蘇大學卓越學院,鎮江 212000;2.江蘇大學計算機科學與通信工程學院,鎮江 212000)
語音增強旨在解決噪聲對語音的干擾問題,是語音信號處理中的重要前端技術之一。截至目前,語音增強技術已經在各領域中占據十分重要的地位,例如Google智能音箱的語音喚醒,該功能就需要利用語音增強技術濾除環境中的噪聲,以提高語音喚醒的成功率。總的來說,語音增強方法可以分為單通道語音增強方法和多通道語音增強方法,其劃分的主要標準是根據麥克風的數量不同。單通道語音增強方法接收單麥克風信號,主要從信號本身的聲學和統計特性等角度出發進行增強;多通道語音增強方法則接收麥克風陣列的信號,可以利用麥克風陣列之間的空間信息。相比于多通道語音增強方法,單通道語音增強方法缺少空間信息,更具挑戰性,但具備便捷、成本低的特點。因此,本文針對單通道語音增強問題提出了基于時頻域特征與DPRNN(dual-path recurrent neural network,雙路循環神經網絡)的語音增強方法。
傳統的單通道語音增強方法有譜減法[1-2]、維納濾波法[3]等。譜減法是在帶噪語音中預測出噪聲信號,將帶噪語音與預測出的噪聲信號在功率譜(或幅度譜)上直接進行相減,從而得到增強語音的一種語音增強方法。譜減法假設混合信號是由純凈信號與平穩的噪聲信號疊加形成,不能有效處理隨機干擾信號,實際應用場景十分受限。維納濾波法則是將帶噪語音經過線性濾波器后得到次優語音,并求得次優語音與純凈語音均方誤差最小時的最優濾波器參數,再根據該濾波器參數處理得到最優的增強語音。維納濾波法能夠有效處理語音中的平穩噪聲,但很難抑制語音信號中的不規則信號。
近年來,隨著深度學習在各個領域中取得成功,越來越多的研究者提出了深度學習方法在語音增強上的應用,克服了傳統語音增強方法很難抑制隨機干擾信號的局限性。總體上,語音增強領域中的深度學習方法可分為兩大類:一類是端到端的時域方法,另一類是時頻域方法。時域方法中,常見的設置是利用一維卷積神經網絡作為編碼-解碼器。例如,2019 年Ashutosh Pandey 等人提出的一種在時域上基于CNN 的語音增強架構[4],該方法就是利用1-D CNN 作為語音序列輸入的編碼-解碼器。然而,當1-D CNN 的感受野大小設置不合理時,會在一定程度上忽略相隔較遠的語句關系,從而影響語音增強的效果。而在時頻域方法中,通常使用STFT(short-time Fourier transform,短時傅里葉變換)提取輸入語音的時頻域特征,再對時頻域特征進行時序建模處理,最后通過對時頻域特征進行ISTFT(inverse shorttime Fourier transform,短時逆傅里葉變換)得到增強語音。但是,當語音的時頻域特征序列較長時,系統將會很難對其進行有效建模。
本文針對語音的時頻域特征長度較長時所帶來的難以有效建模的弊端,并受到Yi Luo 等人在2019 年提出的DPRNN-TasNet[5-6](dual-path recur?rent neural network time-domain audio separation network, 雙路循環神經網絡-時域語音分離網絡)模型的啟發,提出了基于時頻域特征與DPRNN的語音增強方法。這一方法使用STFT提取語音時頻域特征,再將語音特征送入雙路循環神經網絡中進行建模,最后將逆傅里葉變換進行語音重建。在VBD 數據集上得到的實驗結果表明,該方法能夠顯著提高語音質量并且有效消除了低頻段噪聲,PESQ(perceptual evaluation of speech qual?ity,客觀語音質量評價)指標達到了2.43。
本文針對語音時頻域特征較長所帶來的難以有效建模的問題,提出了基于時頻域特征與DPRNN 的語音增強方法,該方法首先利用短時傅里葉變換進行語音的特征提取,然后加入DPRNN層使模型捕獲上下文語音特征之間的關系,并將該方法應用到語音增強的領域,如圖1 所示。與語音分離任務不同,語音增強過程中會遇到各種帶噪語音,其中大部分噪聲的頻率與人聲頻率差距較大。我們引入的STFT語音特征提取過程能夠利用這一特點,對這類帶噪語音提取出與純凈語音特征差別較大的時頻域特征。同時,由于純凈語音與帶噪語音的時頻域特征差距較大,DPRNN更容易捕獲帶噪語音與純凈語音之間的區別,從而完成語音增強任務。這也是我們將DPRNN 利用在語音增強領域的一大優勢。

圖1 基于時頻域特征與DPRNN的語音增強方法流程
特征提取如圖1(A)所示。在特征提取前,首先需要對語音進行采樣,我們使用16 kHZ的采樣率對wav格式語音進行采樣得到一維的語音數據。在特征提取過程中,我們采用短時傅里葉變換,具體過程為將語音序列分割成固定大小且具有重疊部分的語音片段,對這些語音片段即各幀進行函數處理,完成逐幀加窗,再對各幀進行傅里葉變換,提取出時頻域特征。在此我們使用漢明窗對各幀進行加窗處理(窗口大小為256 ms,幀移為64 ms),利用漢明窗可以突出幀的中心數據特征,當幀移取值合適時,利用漢明窗可以突出全部語音數據并將它們分隔在不同的幀中。漢明窗函數如式(1)所示:

分幀加窗后,對各幀進行傅里葉變換,即下式:

f(x)是將要變換的語音信號,由于在計算機中處理的語音數據是由各采樣點得到的離散信號,所以我們要對語音數據采用離散傅里葉變換進行特征提取,即:

最終我們將一維的語音數據轉化為二維時頻域上的頻率-振幅語音特征。
在特征提取過程中,我們計算出語音特征的幅值與相位。但由于相位缺少明顯的結構化信息,難以建模,因此我們忽略了語音相位對語音增強算法的影響,只對幅值進行處理。此外,我們對語音的相位進行保存記錄,以便在最后的語音重建中,將增強后的幅值與原相位進行處理完成語音重建。
DPRNN 由Yi Luo,Zhuo Chen 等人在2019 年提出,他們考慮到了一維卷積神經網絡(one di?mensional convolution neural network,1-D CNN)的感受野小于語音序列長度時將會無法執行超長的全局建模,所以提出了能夠捕獲跨度更大的語言關系的DPRNN 模型。這是一種簡單而又有效的方法,用于在深層結構中組織RNN 層對極長的序列進行建模,DPRNN 將長序列輸入分割成更小的塊,并迭代地應用塊內建模和塊間建模,其中輸入長度可以與每個操作中原始序列長度的平方根成正比。通過塊內和塊間操作能夠使模型在多個維度上進行訓練,優于普通的LSTM(long shortterm memory,長短期記憶網絡)結構。
DPRNN 具體結構由輸入序列的分割處理、DPRNN 塊的內部操作、序列片段的重疊相加三部分組成。即如圖1 中的(B)、(C)、(D)三部分所示。
1.2.1 序列輸入的分割
在圖1中(B)過程序列分割中,假設輸入序列的寬度為N,長度為L。模型將該序列在長度維度上進行分割,具體過程如圖2所示。
在圖2 中所采用的片段大小為2P,片段與片段之間具有重疊部分,圖示中所采用的重疊率為50%,其分割出的片段數量取決于序列輸入的長度,當序列輸入的最后部分不滿足分段大小2P時,將進行補零以達到2P的大小。最終,將分割出的S個長度為2P,寬度為N的片段組合成一個三維張量,這個張量的兩個維度保持原片段的寬度N及長度L,而第三個維度的大小即為分割出片段的數量S,這一部分將根據輸入序列的變化而變化。

圖2 序列輸入分割圖
1.2.2 DPRNN的內部操作
DPRNN 的第二部分即為DPRNN 的內部操作,如圖1(C)所示。這一部分的輸入是圖1(B)過程輸出的三維張量。它主要分為兩個部分,一是三維張量的塊內建模過程;二是三維張量的塊間建模過程。其中圖1 中(B)部分所示的Bi-RNN(bi?directional recurrent neural network,雙向神經網絡)具體采用的是BiLSTM(bidirectional long shortterm memory neural network,雙向長短期記憶網絡), 在Bi-RNN 后連接一個全連接層,再對全連接層的輸出進行歸一化處理,這里我們使用LN(layer normalization,層標準化)歸一化。在塊內建模時,將三維張量在維度大小為S的片段數量維度上分割成S個寬度為N,長度為L的二維張量,這些二維張量即為BiLSTM 的輸入序列,這一步能夠讓模型捕獲到緊密連接的上下文的語句關系。在進行塊間建模時,將三維張量在大小為2P的維度上分割成2P個寬度為N、長度為S的二維張量,這些二維張量即為第二個BLSTM 的輸入序列,這一步能夠讓模型捕獲在時間上跨度更大的語句關系。最終,在LN 操作的輸出和下一過程的輸入之間添加剩余連接。
1.2.3 片段的重疊相加
第三部分是重疊相加生成掩膜值,如圖1(D)所示。由于在(B)中對序列輸入進行分段時片段與片段之間具有重疊部分,因此在該過程的重疊相加操作中,不能簡單地直接在2P維度上進行拼接,而是要使各片段重疊部分為50%的重疊相加。此外,在具體的操作中,還要去除第一個片段的前P長度部分與第S個片段的后P長度部分以保證生成的掩膜值維度與序列輸入的維度完全相等。
1.2.4 DPRNN的總體操作流程
整體DPRNN的處理過程如下列各式所示:

在公式中,Tb是語音特征分割后所得到的三維張量;D1,D2,D3,…,Ds是分割所得到的S個片段;f b、hb代表塊內與塊間流程中的RNN 處理,f b代表在第三維度即S上進行的RNN 處理,hb代表在第二維度即2P上進行的RNN 處理;G1、G2指Bi-RNN層后的全連接層;LN代指LN歸一化處理;指塊內處理與塊間處理后所得結果,即經過DPRNN內部操作后所得結果;是處理后的S個片段;D指重疊相加后所得到的與語音特征維度相同的數據,D經過sigmoid函數映射后得到掩膜值MASK。
重建語音的具體操作如圖1(E)過程所示。在圖2 中,我們將DPRNN 輸出的掩膜值對所提取的語音特征進行加權,得到了增強后的語音特征。由于我們使用的是傅里葉變換進行語音的特征提取,所以將語音特征(時頻域)返回成語音序列(時域)要進行逆傅里葉變換,即下式:

由于在計算機中所要處理的是離散信號,所以要進行離散逆傅里葉變換,即:

進行離散逆傅里葉變換后即得到語音序列,完成語音重建。
實驗中選取VBD(Voice Bank + DEMAND)[7-9]作為實驗數據集,VBD 數據集內有訓練集與測試集兩部分,訓練集中有11572 組音頻文件,測試集中有824組文件(一組音頻文件由帶噪語音和配對的純凈語音組合而成),我們從訓練集中提取了300組文件作為驗證集。
VBD 語音數據集與我們的實驗數據需求十分契合。數據集中的每個純凈語音文件都包含一個句子,這些句子是在安靜的錄音棚條件下由多位演講者錄制得到,制作者將一系列噪聲添加到這些語音中從而構成了噪聲數據集。這些文件均為wav 格式文件,錄制時的采樣頻率為48 kHZ,但為了減小數據規模,我們在具體的實驗過程中將采樣頻率降低到了16 kHZ。
在訓練過程中,我們選擇的初始學習率為0.001,每訓練2 代,學習率衰減為之前的0.98倍。即:


式中,αi指訓練到第i代時的學習率。
在本實驗中,我們選取了MSE(mean square error,均方誤差)函數作為實驗中的損失函數,其公式如下所示:

在LMSE公式中,si指數據集中的純凈語音,s?i指經過增強處理后的語音,n代表數據集中的所有語音文件個數。
另外,我們在實驗中分別測試了另外兩個損失函數:PCMSE 函數[10-12]與SNR 函數。但我們在實驗中發現,如果以PCMSE函數或SNR函數作為模型的損失函數,loss 值會在一個常數值上下小范圍的波動,沒有明顯的下降趨勢。而以MSE 函數作為模型的損失函數,則對模型的訓練效果十分顯著,各周期的loss 值有明顯的下降趨勢并且最終將會趨于一常數值。因此在最終的模型構造中,我們采取了效果更好的MSE函數作為我們的損失函數。
為了評估模型的性能,我們采用了以下4 個評價指標:
(1)PESQ。客觀語音質量評估,由國際電信聯盟電信標準化部門(international telecommunica?tion union communication standardization sector,ITU-T)P.862 建議書提供,得分在[-0.5,4.5]區間內。
(2)CBAK。背景噪聲侵入的平均意見得分預測,得分在[1,5]區間內。
(3)CSIG。僅與語音信號有關的信號失真的平均意見得分預測,得分在[1,5]區間內。
(4)COVL。整體語音質量的平均意見得分預測,得分在[1,5]區間內。
以上四個語音指標中,第一個語音指標PESQ 與語音的客觀質量相關[13],后三個指標與語音的主觀質量相關[14],并且均是在數值大的情況下說明語音的質量越高。
通過不同模型處理后的語音的各項指標如表1 所示。表中各結果均是基于VBD 數據集所得到的,并且,各類模型的指標值均為各模型提出者所給出的最優值。表中NOISY 一欄下各結果指的是未經處理的測試集中帶噪語音的初始各項指標值,WIENER 是指傳統的維納濾波法,SEGAN 是生成對抗網絡在語音增強上的應用[15],OPENUNMIX是一個開源模型[10,16-17]。在表中不難發現,在四項指標中,我們所提出的語音增強方法僅在CBAK 中略遜于Open-unmix 模型,而在PESQ、CSIG、COVL 三項指標上分別達到了2.43、3.74、3.11,均超過其他方法。

表1 各模型評價指標對比
為了更加清晰地展示我們所提出的方法對語音增強的效果,我們從VBD 的測試集中選取了p232_001.wav文件,繪制了它的純凈語音頻譜圖、帶噪語音頻譜圖以及增強語音頻譜圖,即圖3。從圖中可以清晰地看出,我們所提出的方法去除了大部分低頻的噪聲,增強后的語音十分接近純凈語音。此外,在語音的播放時,人耳能夠清晰感受到語音中的噪聲部分在很大程度上被削弱,例如在原始的帶噪語音中,語音中有明顯的汽車鳴笛聲、鍵盤敲擊聲、多個人的說話聲音等,經過我們的方法處理后,在很大程度上減弱了這些噪聲。

圖3 純凈語音、帶噪語音與增強語音的頻譜圖對比
我們所提出的基于時頻域特征與DPRNN 的語音增強方法,使用短時傅里葉變換對語音進行處理,提取出輸入語音的時頻域特征,再使用DPRNN 模型在語音的時頻域特征上進行處理,讓模型能夠捕獲到語音上下文之間的關聯性,最終通過短時逆傅里葉變換進行語音重建,完成了去除帶噪語音中大部分噪聲的語音增強任務。在VBD 數據集上得到的實驗結果表明,該方法能夠顯著提高語音質量并且有效消除了低頻段噪聲,PESQ(perceptual evaluation of speech quality,客觀語音質量評價)指標達到了2.43。
在接下來的工作中,我們將會繼續探究不同的損失函數對于模型效果的影響以及PCMSE 函數與SNR 函數不適用的原因。此外,在與抗噪聲干擾有關的CBAK 指標上,我們所提出的方法得分并不高,因此在未來的工作中我們也會在抗噪聲干擾這一方面繼續研究,繼續探索出能夠提高增強語音抗噪聲干擾能力的有效方法。