王師琦,曾慶寧,龍 超,熊松齡,祁瀟瀟
桂林電子科技大學 信息與通信學院,廣西 桂林 541004
基于深度學習的語音增強通常是從單通道聲學信號中提取出特征,利用深度神經網絡(Deep Neural Networks,DNN)進行有監督學習,學習出各種嘈雜語音與干凈語音之間復雜的非線性關系[1]。其中,具有多個隱藏層的全連接前饋神經網絡是應用最廣泛的DNN模型之一,文獻[2]中,Wang等首次將其引入到語音分離任務中,相較許多單通道的傳統方法,基于深度學習的方法在非平穩噪聲中的降噪、多說話人的語音分離等方面均有著特殊的優勢,但由于其結構比較簡單,通常不能很好地挖掘語音中的深度特征。為了彌補這個缺點,文獻[3]在輸入端從特征工程方向考慮,嘗試了多種語音特征,文獻[4]通過引入CNN(Convolutional Neural Networks,卷積神經網絡),使得模型自身的特征提取能力得到提升。文獻[5]將LSTM應用于語音分離,使得模型獲得了在長序列上建模的能力,即使在不使用未來幀的情況下也可以取得很好的效果。
VAD是指從聲音信號中檢測是否存在人類語音的一類任務。其在語音信號處理中被廣泛地應用,如語音電話、語音編碼、自動語音識別、音頻監控、語音增強、說話人驗證。經典的VAD算法有:基于閾值決策準則的算法[6]、基于統計模型的算法[7]。近年來,越來越多的研究者開始將深度學習技術應用在VAD任務中,文獻[8]提出了一種能充分利用上下文信息的VAD深度學習方法,文獻[9]提出了一種VAD與語音增強任務聯合訓練的模型,憑借有監督深度學習強大的數據驅動能力,它們均取得了很好的效果,但目前,在低信噪比以及不匹配噪聲下的VAD仍是一個極具挑戰性的任務。
如今,深度學習技術越來越成熟,但目前的各種DNN模型往往復雜度大、參數多,導致其部署難度很大。即使可以通過知識蒸餾的方法減小網絡的規模[10],但如果需要在同一個終端上同時實現多個任務就必須同時部署多個模型,還是會對硬件帶來巨大壓力。語音增強與VAD這兩個最重要的前端處理任務具有很強的相關性,它們可以分別看作是在時頻域和時域估計語音存在的概率。多任務學習通過共享參數,使其在抽象的層次具有相同的表達,相當于對參數施加了軟約束,這意味著任務的泛化能力都將得到改善。同時其通過參數共享的方式,以較少的參數就可以一次性同時完成兩個任務。
針對上述問題,提出了一種多任務的在線模型,其貢獻主要有以下兩點:第一,本文首次嘗試在多任務模型中平衡語音增強與VAD兩種任務,并驗證了其可行性;第二,本文使用LSTM作為模型的主要部分,其本質上是一個因果系統,可以實現逐幀輸入的在線處理,兩個任務能在同一個模型中并行完成,降低了運算成本,這對于模型的部署具有重要的意義。
通常,DNN模型由于沒有時序建模的能力,因此需要將語音的上下文特征拼接起來,組成語音的局部作為輸入,但這會使得語音預處理的復雜度大大增加,模型只能在延遲多幀的情況下,以緩存器的形式實現在線語音增強[11]。通常,VAD會作為語音信號處理流程中最前端的模塊。因此,往往要求VAD算法應具有較低的延遲以及對噪聲具有很強的魯棒性,為了滿足這些要求,選擇了具有時間序列建模能力的LSTM網絡作為本文模型的重要組成部分。
循環神經網絡(Recurrent Neural Network,RNN)引入了循環和遞歸,非常適合處理序列數據。但簡單的RNN只具有短期記憶的能力,當訓練輸入序列較長時,存在梯度爆炸和消失的問題。為了改善這個問題,文獻[12]提出了LSTM,這是一種特殊的門控循環神經網絡。LSTM網絡引入了內部狀態c t進行線性的循環信息傳遞,同時輸出信息給隱藏層的外部狀態h t,定義公式如下:

其中f t、i t和o t分別為遺忘門、輸入門和輸出門,用于控制信息的傳遞,x t和h t-1代表當前輸入和上一時刻外部狀態,為向量元素乘積,σ表示Logistic函數,tanh代表雙曲正切函數,?是通過非線性函數得到的候選狀態,定義公式如下:

憑借LSTM的時序信息記憶能力,即使逐幀輸入特征,也可以獲得足夠的語音局部信息,這對于需要在線實時運行的場景具有重要的意義。
看似無關的許多任務,由于數據和信息的共享而具有很強的依賴性。多任務學習指的是通過合并幾個任務中的樣例來提高模型泛化能力的一種機器學習方法[13]。語音增強和VAD任務的相關性意味著它們在某種抽象的層次中必定有很多相似的可共享的部分,基于深度學習的VAD在不匹配噪聲下的表現往往不盡如人意,其原因在于普通模型的泛化能力不夠,文獻[9,14]提出把語音增強加入模型,組成多任務學習模型,迫使模型必須在共享的部分更好地理解語音,從而改善VAD的泛化能力,例如:在較低的信噪比下也能檢測出語音的存在、在babble噪聲下正確的檢測和增強出目標語音而不是背景人聲。文獻[9,14]的模型均是以VAD作為主任務,語音增強僅僅作為訓練時提升VAD泛化能力的輔助,在模型的預測階段,語音增強的層將會被移除。近年來,深度學習被廣泛地應用在語音信號處理的各個任務中,若要在終端同時部署多個大型的深度模型,將對硬件造成很大壓力,與文獻[9,14]的思路不同,本文將嘗試平衡兩個任務,以硬共享的模式將其合并在一個模型中,使其能以較少的計算量并行地完成兩個任務,對于模型的部署將具有重要的意義。
圖1是本文的多任務學習模型結構,該模型采用的是硬共享的參數共享模式[13],通過共享最底層的兩個LSTM層,每層具有512個單元,使兩個任務能夠共同提取一些通用特征。由于兩個任務具有強相關性,直接將兩個全連接的輸出層作為兩個任務的私有模塊,這樣的方式可以很大程度地減少整個網絡的參數量。

圖1 多任務學習模型結構以及LSTM單元內部結構Fig.1 Structure of multi-task learning model and internal structure of LSTM unit
文獻[15]詳細研究了各種語音增強的訓練目標,主要有直接譜映射和時頻掩蔽兩類。其中,時頻掩蔽的概念來自于計算聽覺場景分析(Computational Auditory Scene Analysis,CASA),將時頻掩蔽加權在嘈雜語音的時頻域上,可以很好地分離目標語音和噪聲。CASA的主要目標是理想二值掩蔽(Ideal Binary Mask,IBM),它以1和0分別表示時頻單元是目標語音還是噪聲占主導地位。除了IBM還有很多種時頻掩蔽,其中應用最廣泛的是理想浮值掩蔽(Ideal Ratio Mask,IRM),它是一個0到1之間的值,表示在每個時頻單元中語音所占的比重。本文的系統選用IRM作為訓練目標,主要原因有兩點:首先,將時頻掩蔽作為目標,比直接的譜映射訓練方式要更容易訓練;其次,使用時頻域的IRM作為增強的輸出結果,有利于在之后的工作中與很多先進的信號處理方法結合[16]。對于VAD的訓練目標,可以將VAD任務當作一個二分類的問題來處理,在語音的時間幀上的標注語音是否存在即可得到訓練目標。
由于多層的LSTM本身具有很強的特征提取能力和時序建模能力,因此僅選用當前幀的對數能量譜(Log-Power Spectral,LPS)作為輸入特征。LPS僅取對數抑制語音的動態范圍,除此之外不對時頻域幅度譜做任何的處理,以保留更多的原始信息讓模型在訓練中自主挖掘。
對于多任務的學習模式,模型的損失函數將會有多個,通過采用超參數α加權求和的形式,可以將損失函數整合并同時優化。LSE代表IRM的損失函數,LVAD代表VAD的損失函數,模型的損失函數LMTL可以定義為:

對于語音增強任務,輸出的IRM是一個0到1之間的值,因此,采用了sigmoid函數作為輸出層的激活函數,均方誤差(Mean-Square Error,MSE)作為損失函數。對于VAD任務,可以將其看作是一個二分類的問題,采用二元交叉熵作為損失函數。兩個損失函數定義如下:


其中,Y t為輸出的IRM向量,Z t為VAD輸出,和Z?t代表訓練目標,T為幀數,F為頻帶數,由于本文中沒有將時頻信號轉化到其他變換域,因此F同時也是本文中特征值和輸出的維數。
本文中的實驗數據集均混合自TIMIT數據集[17]。選取的噪聲有:NOISEX-92數據集[18]中的factory1噪聲、destroyerengine噪聲以及DEMAND數據集[19]中PCAFRETER噪聲的其中一個通道。將以上三種噪聲作為匹配噪聲以信噪比-5 dB、0 dB和5 dB與TIMIT中的語音加性混合,得到8 316句的訓練集和840句的驗證集。混合過程如下:

其中,s、n和x分別代表干凈語音信號、原始加性噪聲信號和混合信號,I代表波形的采樣點個數,SNR為理想的混合信噪比,通過β調整噪聲的能量來控制混合信號的信噪比。
選用TIMIT數據集的一個重要原因是,其作為一個主要用于語音識別的數據集,帶有音素級別的人工標注信息,本文將音素h#、pau、epi、bcl、dcl、gcl、pcl、tck和kcl視為非語音段,其他音素視為語音段,以此方法生成的VAD標簽具有很高的可靠性。
值得注意的是,TIMIT數據集的語音和非語音段占比約為78%,為了使VAD任務的性能評估更加準確,在VAD實驗中通常會在數據集的每個句子之間填充隨機的零段,使得數據集中的語音和非語言占比調整至相對平衡[10]。然而對于語音增強任務來說,在訓練集中出現過多的非語音段將會對模型的訓練產生影響,為了評估這一矛盾帶來的影響,分別生成了p=60%、p=70%和無填充(p=78%)三組訓練集,其中p代表填充過后語音段的占比。三組訓練集的時長分別為7.10 h、7.95 h和9.28 h。
選取了NOISEX-92中的babble噪聲和factory2噪聲作為不匹配噪聲,factory1和babble噪聲分別與factory2和PCAFETER噪聲有相似之處,但卻是模型在訓練階段沒有見過的噪聲,因此可以很好地測試模型的泛化能力。選取TIMIT核心測試集中說話人的200個句子作為本文的測試集,依次以信噪比-5 dB、0 dB和5 dB與匹配噪聲和非匹配噪聲混合,得到匹配測試集和非匹配測試集。其中,保證訓練集中的噪聲片段不會出現在驗證集和匹配測試集中。
本實驗中的所有信號均重采樣為16 kHz的采樣率,每幀的幀長和幀移分別為512和256個采樣點。模型的輸入LPS和輸出IRM均為每幀257維。本文提出的模型在訓練時使用Adam優化器,一次輸入200個時間步長,批量大小為128。為平衡兩個任務,根據實驗中的經驗,式(7)中的超參數α確定為0.2。
使用了PESQ和STOI兩種指標來評估模型的語音增強效果,它們分別評價的是語音感知的兩個主要因素:語音質量和可懂度。短時客觀可懂度(Short-Time Objective Intelligibility,STOI)是通過測量干凈語音與增強語音之間短時包絡的相關性得到的,其值的范圍在0到1之間,也通常以百分比表示[20]。語音質量的感知估計(Perceptual Evaluation of Speech Quality,PESQ)應用聽覺變換產生響度譜,并比較干凈語音和增強語音的響度譜,以產生與預測MOS得分相對應的分數[21],其分數范圍在-0.5到4.5之間。
在基于深度學習的VAD任務中,接收者操作特征曲線(Receiver Operating Characteristic,ROC)是一種評價VAD性能的指標,與直接選定閾值得到VAD的準確率不同,ROC通過變化不同的閾值,得到對應的語音檢測率(Speech Hit Rate,SHR)和虛警率(False Alarm Rate,FAR),使得VAD的評價更加全面[8-9]。在實際應用中,也有利于根據不同的應用場景,選擇更適合的閾值。由于篇幅有限,本文將使用ROC曲線下面積(Area Under ROC Curve,AUC)作為ROC的定量指標。
為了驗證本文模型的結果,選擇了以下幾個具有代表性的單任務模型作為基線:
(1)DNN-SE:由4個全連接隱藏層組成的深度神經網絡,每層包含1 024個隱藏單元,這是早期經典的深度學習語音增強(Speech Enhancement,SE)模型[3,15],由于模型本身不傳遞任何的時間信息,因此每次需要輸入當前幀以及相鄰2幀一共5幀的特征信息。
(2)LSTM-SE:由兩個LSTM層和一個全連接的輸出層組成,每個LSTM層具有512個單元,輸出是257維的時頻掩蔽。由于LSTM屬于循環神經網絡,具有在時域上建模的能力,所以每次只需要輸入一幀的信息即可獲得不錯的效果[16]。該模型本質上是一個因果系統,因此理論上可以實現逐幀處理的實時語音增強。
(3)Sohn:這是最經典的基于統計模型的VAD算法之一[7],本實驗將其語音活動似然比作為輸出。
(4)LSTM-VAD:由兩個LSTM層和一個全連接的輸出層組成,LSTM層分別具有512和256個單元,輸出的是1維的VAD信息。和LSTM-SE一樣,LSTM-VAD也能以逐幀輸入的形式運行。
值得注意的是,這些基線模型的超參數都已分別在本實驗的數據集下調至最優。其中,語音增強任務基線將使用非填充數據集訓練,VAD任務基線和本文的多任務模型將使用填充數據集訓練。由于PESQ和STOI均對填充的非語音段不敏感,因此,所有的模型在測試時都將使用p=60%的填充數據集。
圖2顯示了本文模型用(p=60%)和VAD基線模型在各種信噪比匹配與不匹配噪聲下的AUC比較結果。基于深度學習的LSTM-VAD和本文算法在匹配噪聲下,要遠好于經典的Sohn方法。在5 dB的噪聲下,無論是匹配噪聲還是不匹配噪聲,兩個基于深度學習模型的AUC都可以達到97%以上。但是在不匹配噪聲測試中,信噪比的降低將會使基于深度學習的模型性能受到嚴重影響,但得益于本文中多任務學習的方法給模型帶來的泛化能力提升,在低信噪比下,本文模型的AUC均好于LSTM-VAD。如表1所示,在低信噪比的babble噪聲下,LSTM-VAD的性能嚴重下降,這是由于,在0 dB和-5 dB下,目標語音與babble噪聲中的背景人聲能量相當,甚至更低,因此模型很難分辨出目標語音是否存在。但本文的模型由于加入了語音增強任務的學習,在低信噪比babble噪聲下判斷目標語音是否存在的能力得到了提升,最終在-5 dB下AUC相較LSTM-VAD提升了7.4%,0 dB下提升了3.7%。

圖2 Sohn、LSTM-VAD和本文模型(p=60%)的AUC結果比較Fig.2 Comparison of AUC results of Sohn,LSTM-VAD and proposed model(p=60%)

表1 Sohn、LSTM-VAD和本文模型(p=60%)不匹配噪聲下的AUC結果比較Table 1 Comparison of AUC results of Sohn,LSTM-VAD and proposed model(p=60%)under unmatch noise %
圖3對比了本文模型(p=60%)與各種基線的語音增強結果,本文模型的增強效果介于LSTM-SE和DNN-SE之間,雖然差距很小,但本文模型的PESQ和STOI始終比LSTM-SE的結果要略差一些,這是因為訓練數據集中填充零段使得語音段占比變低最終導致語音增強能力受到損失。為了研究這一問題,使用了p=60%、p=70%和無填充(p=78%)三組訓練集訓練本文模型,并在p=60%的測試集中測試。值得注意的是,PESQ和STOI對于非語音段的感知較弱,填充的零段對于最終的增強評估結果幾乎沒有變化,但p=60%可以使得語音和非語言段占比相對平衡,使得AUC的評估結果更加準確,因此,選擇了在p=60%中測試所有實驗。如圖4所示,訓練集填充越少,語音的PESQ和STOI的結果就越好,但總體來說變化并不明顯。對于VAD任務,訓練集填充越多語音占比越平衡,VAD的性能就越好。因此,選擇使用p=60%的訓練集訓練模型,既可以獲得不錯語音的增強效果,又可以得到最優的VAD效果。

圖3 DNN-SE、LSTM-SE與本文模型(p=60%)的PESQ、STOI結果比較Fig.3 Comparison of PESQ and STOI results of DNN-SE,LSTM-SE and proposed model(p=60%)
截取了一段5 dB的PCAFRETER噪聲下的嘈雜語音在三種模型下的消噪結果,如圖5所示,PCAFRETER噪聲中有大量的背景人聲,LSTM-SE最終增強的語音質量雖然會略好于本文方法,PESQ和STOI的得分更高,但是其會在非語音段錯誤殘留了一些背景人聲,這對于聽感或識別會造成一定的影響。本文的方法由于在訓練集中填充了零段,并加入了VAD信息的學習,因此,模型能從PCAFRETER中理解背景人聲和目標語音的區別,可以從圖4中看出,本文方法對非語言段的消噪效果更優,然而這方面的提升在PESQ和STOI中是無法體現的。

圖4 不同語音占比訓練集對PESQ、STOI和AUC的影響Fig.4 Influenceof different speech proportion training sets on PESQ,STOI and AUC

圖5 DNN-SE、LSTM-SE與本文模型(p=60%)的消噪結果對比Fig.5 Comparison of denoising results of DNN-SE,LSTM-SE and proposed model(p=60%)
由于本文的多任務模型與單任務的LSTM-SE和LSTM-VAD都屬于可實時運行的在線模型,因此可以通過比較完成兩個任務的實時率(Real Time Factor,RTF)來評估系統的效率。兩個方法均在Keras-CPU-2.3.1+Tensorflow-2.1.0的環境中運行,終端CPU為Intel i5-4200U 1.60 GHz。如圖6所示,本文的多任務模型(p=60%)在語音增強質量非常相近、VAD效果更優的情況下,其速度比串行分別運行兩個任務快了44.2%,這對于將深度學習模型部署在更低功耗更低性能的終端設備上將具有重要的意義。

圖6 多任務模型與單任務模型的實時率對比Fig.6 Comparison of real time factor between multi-task model and single-task model
在本文中,提出了一種多任務的在線實時模型,用于同時處理語音增強和VAD這兩項任務。首次嘗試在多任務模型中平衡了語音增強與VAD兩項任務,使得兩項任務都可以作為最終的結果輸出,并驗證了其有效性。結果表明,相較基線模型,本文模型在語音增強結果非常相近、VAD效果更優的情況下,其速度比串行處理兩個任務快了44.2%,這對于將深度學習模型在各種終端上的應用和部署具有重要的意義。在未來的工作中,將嘗試通過使用更大的數據集以及改進網絡結構,探索在多任務學習中能保證語音增強質量不損失的方法。