王 昕,張洪冉
南京郵電大學 通信與信息工程學院,南京 210003
說話人識別[1]也稱為聲紋識別,是一種基于語音信息實現的特殊生物識別技術。經過幾十年的發展,目前無噪聲干擾條件下的說話人識別技術已經相對較為成熟。其中,Dehak等提出的i-vector[2]說話人識別方法成為該領域的主流研究技術之一。i-vector方法是在聯合因子分析(Joint Factor Analysis,JFA)[3]的基礎上發展起來的,能夠有效提升說話人識別系統的性能。該算法使用一個低維子空間來表示說話人語音之間的差異性,每段語音被表征成一個固定的低維度矢量(即i-vector)。然而,實際應用環境中,由于加性背景噪聲的存在,i-vector說話人識別算法性能會明顯下降。因此,如何提高現有說話人識別系統的噪聲魯棒性成為近年來該領域的研究熱點。
為解決上述問題,相關研究人員分別在語音信號處理的不同層面做出嘗試,旨在不改變說話人相關信息的情況下,降低加性噪聲對系統性能的影響。其中,基于頻譜分析的語音增強方法作為信號處理前端被引入到說話人識別領域[4-5]。然而,由文獻[5]中理論分析和實驗結果可以發現,增強后再進行說話人識別的方法能夠提高語音信號的質量,卻不一定能獲取識別性能上的改善。文獻[6]進一步證實,在信號處理領域的相關識別算法能否取得好的效果取決于噪聲的類型和信噪比的大小。此后,國內外專家學者提出了語音特征領域的說話人識別方法。對于語音來說,特征真實的概率分布依賴于特定的說話人并且是多模態的。然而,在實際應用場景中,信道的不匹配和加性噪聲等因素會破壞特征真實的概率分布。相關研究通過將具有噪聲魯棒性的語音特征與均值方差歸一化等技術結合,在一定條件下可以調整特征的概率分布,達到降低噪聲對系統性能影響的目的[7]。文獻[7]中提出的特征彎折算法(feature warping)將訓練和測試語音的特征向量的分布映射到統一的概率分布中。經過映射后的特征向量的每一維都服從標準正態分布,在一定程度上補償了信道不匹配和加性噪聲對特征分布造成的影響。但是,對基于不同語音特征的識別算法[8]進行比較可以發現,識別性能是否改善與噪聲的類型和信噪比也是緊密相關的。當環境中含有少量噪聲時,基于特征域的相關算法考慮到噪聲對特征分布特性的影響,通過分布映射等方式調整特征分布可以提高系統的噪聲魯棒性。但是,隨著信噪比的減小,噪聲影響特征分布特性的同時,也會改變語音中說話人相關的信息,系統性能會急劇下降,通過調整特征分布帶來的系統性能上的提升就顯得微不足道。
近年來,隨著機器學習算法性能的提升和計算機存儲、計算能力的提高,深度神經網絡(Deep Neural Network,DNN)被應用到語音增強領域中并取得了顯著的效果[9-11]。DNN對非線性函數關系具有很強的擬合能力,經過訓練后的DNN可以用來表示輸入數據和輸出數據之間的非線性映射關系。利用DNN的這種非線性結構,通過學習含噪語音特征和純凈語音特征之間的非線性映射關系,將訓練好的DNN模型作為一個降噪濾波器來完成對語音的增強工作。文獻[12]將DNN作為語音信號前端處理模塊應用到說話人識別系統中。但是,上述方法[12]在提高噪聲魯棒性的同時,也增加了系統結構模型的復雜度。
此外,自從i-vector方法引入說話人識別領域后,相關研究人員對直接在i-vector特征空間消除噪聲影響做了大量的工作。在文獻[13]中提出了純凈i-vector的全方差高斯模型和噪聲在i-vector特征空間的概率分布,通過估計含噪i-vector和噪聲的概率密度函數,利用最大后驗概率(Maximuma Posterior,MAP)方法得到純凈i-vector的估計。DNN也被嘗試用來減小i-vector空間中不同類別的說話人的類內協方差[14]。
基于上述研究背景,本文提出將DNN回歸模型用于說話人識別系統后端,通過有監督地訓練DNN學習說話人含噪語音i-vector和純凈語音i-vector之間的非線性映射關系,得到純凈語音i-vector的一種近似表征。
與傳統的人工神經網絡(Artificial Neural Network,ANN)相比,DNN具有更多的隱含層數和節點數、更強的非線性函數關系的擬合能力。近年來,基于受限玻爾茲曼機(Restricted Boltzmann Machine,RBM)[15]的無監督逐層貪婪式的參數初始化算法的提出,很好地解決了DNN在學習過程中的局部最優問題,使深度神經網絡在各個領域得到了廣泛的應用。
RBM是一種兩層無向圖模型,包含一個可見層和一個隱含層,層間有權重連接,層內無連接。假設RBM的可見層為ν,隱含層為h,( )ν,h的聯合概率分布定義如下所示:

其中,W為可見層和隱含層之間的連接矩陣;b和c分別為可見層和隱含層偏置;Z為歸一化因子。利用梯度下降和對比散度學習算法,通過最大化可見層節點概率分布P(ν)來獲取模型參數。采用自底向上的方法,上一個RBM的隱含層作為下一個RBM的可見層,逐層貪婪式地訓練多個RBM,最后將多個RBM疊加可以得到深度置信網絡(Deep Belief Network,DBN)[16]結構。將DBN的各層網絡參數作為DNN初始化參數,根據學習任務的不同,在DBN最后一層添加softmax層或線性層,可以分別得到DNN的分類模型或回歸模型。本文采用線性函數作為輸出層的激活函數。

其中,W(l)為l層和l+1層之間的權重矩陣;b(l)為l層偏置;z(l+1)為l層輸入值a(l)的加權和;f(?)為隱含層激活函數,本文采用Sigmoid函數作為隱含層激活函數。
利用BP算法進行參數調優時,采用最小均方誤差(Minimum Mean Square Error,MMSE)函數作為代價函數,通過基于小批量數據(mini-batches)的隨機梯度下降算法多次迭代后得到最優值。MMSE表達式如下:

當基于DBN預訓練的參數初始化完成后,需要利用誤差的反向傳播算法(Back Propagation,BP)[17]對DNN網絡的參數進行調優。設第0層為輸入層,L+1層為輸出層,1到L層為隱含層。對第l隱含層,其節點的輸出如下:
其中,E表示均方誤差;N為小批量數據容量;D為特征維度;Wl和bl分別為l層的權重和偏置參數;和分別表示第n個輸入特征樣本維度d上的估計值和目標值。對于具有L層隱含層的網絡結構來說,當學習率為λ時,權重W和偏置參數b可以通過以下公式進行迭代更新:

需要說明的是,在參數的學習和更新過程中,沒有基于網絡輸入的任何假設,是DNN完全自主的學習過程。
將上述DNN的回歸模型結構應用到語音增強中,通過擬合含噪語音特征和純凈語音特征之間的非線性映射關系,利用純凈語音特征的近似表征可以合成得到降噪后的語音。該語音增強方法分為訓練和增強兩個階段。在訓練階段,通過將大量的噪聲數據和純凈語音相加的方法獲得不同信噪比的含噪語音,與相對應的純凈語音一起構成訓練數據對并提取相應的語音特征。分別將提取的含噪語音和純凈語音的語音特征作為輸入和標簽數據對DNN進行訓練。語音增強時,直接將含噪語音特征輸入,DNN的輸出即為增強后的語音特征。在基于DNN的語音增強方法中,沒有關于噪聲統計特性和噪聲與語音之間的獨立性等相關假設,這些相關假設往往限制系統性能的提升。此外,大量的訓練數據可以保證系統的泛化能力,提高系統的實用性。
JFA將說話人和信道的相關變量分別建模成兩個不同的子空間,即說話人子空間和信道子空間。然而,文獻[18]中相關研究表明,JFA中的信道子空間中也包含有說話人相關信息,分割子空間建模不足夠精確。為此,i-vector模型將說話人和信道相關變量統一建模為一個總體變化子空間。該空間同時包含說話人和信道信息,由一個低秩矩陣T表征。在i-vector模型中,不再區分GMM模型均值超向量空間中的說話人效應和信道效應。給定一段說話人語音,包含說話人和信道信息的GMM均值超向量可以表示成如下形式:

其中,m為說話人和信道無關向量,可以用UBM的均值超向量代替;T為表征總體變化子空間的低秩矩陣;w為包含了信道和說話人信息的隱含因子,即i-vector。在i-vector模型中,第i語音段的第t語音幀的聲學特征服從以下分布:


其中,?k為第k個高斯分量的權重。表征語音段的i-vector即為ω()i的MAP估計。
給定一段語音,通過UBM計算以下統計量:


說話人識別中的PLDA模型是基于i-vector子空間的因子分析模型。文獻[19]指出,簡化后的高斯PLDA對不同說話人的i-vector區分性比傳統PLDA模型更好。對于給定說話人的R個語音段的i-vector{ωi:i=1,2,…,R},PLDA模型可以表示如下:

其中,m為所有i-vector訓練數據的全局均值;Φ為描述說話人類間差異的子空間矩陣;β為說話人身份相關的隱含因子,服從標準正態分布;εr是服從均值為零,協方差矩陣為對角矩陣Σ的殘余項。PLDA模型參數的最大似然估計可以根據文獻[20]中描述的EM算法得到。
在系統識別階段,給定兩段語音的i-vector向量,分別用符號η1和η2表示。提出兩個假設:
Ηs假設:η1和η2來自同一個說話人,即η1和η2具有相同的隱含變量β。
Ηd假設:η1和η2來自不同的說話人,即η1和η2具有不同的隱含變量β1和β2。
則η1和η2之間的對數似然比可以由以下公式得到:

最后,根據預設的閾值做出最終判決。
本文在以上研究背景的基礎上,提出將DNN回歸模型用于對說話人識別系統含噪語音i-vector的增強。當純凈語音受到背景噪聲的干擾時,語音的i-vector也會相應地隨之發生改變。噪聲環境下語音i-vector的改變會導致系統識別性能的下降。含噪語音和純凈語音i-vector之間存在某種復雜的非線性函數關系。因此,本文利用DNN的強大擬合能力,通過訓練DNN學習含噪語音i-vector和純凈語音i-vector之間復雜的非線性映射關系,可以得到純凈語音i-vector的一種近似表征。本文使用的DNN模型結構如圖1所示。
本文提出的基于DNN的i-vector增強方法分為訓練和增強兩個階段。因為DNN的訓練為有監督訓練過程,數據量的大小和噪聲類型的多少直接決定了DNN的泛化能力。因此首先需要構建大量的含噪語音和純凈語音的訓練數據對。本文基于加性噪聲背景環境,構造含噪語音的方式如下:

圖1 用于i-vector增強的DNN模型結構

其中,X為純凈語音;N為噪聲數據;α為常量系數,用來控制信噪比。
通過改變噪聲的類型和信噪比可以構造出訓練DNN所需的大量的訓練數據。數據準備完成后,對每一條平行語料,根據第1章所述方法分別提取含噪語音和純凈語音的i-vector,將其最為訓練DNN模型的訓練數據對,即含噪語音i-vector作為輸入數據,純凈語音i-vector作為標簽數據。需要說明的是,DNN訓練之前,i-vector的預處理操作是必需的。本文對i-vector做了去均值和白化處理。DNN的訓練方法和第2章所述一致,即先預訓練DBN模型來對DNN進行參數初始化,然后使用BP算法對DNN參數調優。在增強階段,將訓練完成的DNN模型和現有的說話人識別系統模型融合,作為i-vector的特征處理后端,降低噪聲對系統性能的影響。需要注意的是,在進行模型融合時,PLDA模型訓練和說話人的注冊i-vector都需要通過訓練的DNN進行特征映射,輸出的i-vector再分別用于訓練和注冊。融合后的系統結構如圖2所示。
本文實驗環境為Windows 64位操作系統,64位Matlab軟件的2016版本。說話人識別模型訓練采用微軟的Matlab說話人識別工具包[21]。DNN實現部分采用的開源的Matlab深度信念網絡工具包(Deep Belief NetWorks,DeeBNet)[22]。

圖2 說話人識別系統結構圖
本文在TIMIT[23]數據集上進行了實驗。采用等錯誤率(Equal Error Rate,EER)和最小檢測代價函數(Detection Function,DCF)作為系統性能評價指標。TIMIT語音庫共有630個說話人(192個女性說話人和438個男性說話人),每個說話人10條語音,每條語音平均時長為5 s。從中挑選530個說話人,共5 300條語音,作為UBM和DNN所需的訓練數據,100個說話人(30個女性說話人和70個男性說話人)語音作為測試數據,其中,每個測試說話人的9條語音作為注冊語音,剩下的1條語音為測試語音,共10 000條測試實驗。實驗中所使用噪聲來自NoiseX-92[24]和freesound(www.freesound.org)網站,其中4個城市噪聲(city)樣本,4個街道噪聲(street)樣本,4個餐廳噪聲(restaurant)樣本,4個辦公室噪聲(office)樣本,2個圖書館噪聲(library)樣本,4個工作間噪聲(workshop)樣本。這些噪聲數據和用來訓練DNN的語音加到一起構成訓練DNN的含噪語音數據,其中信噪比為0~30 dB間的隨機數值。將取自NoiseX-92噪聲庫的人群嘈雜聲(babble)、車內噪聲(car)和驅逐艦輪機艙(destroyerops)噪聲與測試數據混合構成測試數據集。
訓練UBM模型使用的聲學特征為39維(13維基本特征、一階、二階差分的組合)、幀長為25 ms、幀移為10 ms的梅爾頻率倒譜系數(Melfrequency Cepstral Coefficient,MFCC)特征。UBM的高斯混合數為512,方差采用對角矩陣形式。i-vector維度為400,PLDA說話人子空間維度為200。
本文采用含噪語音的i-vector作為DNN模型輸入,純凈語音的i-vector作為訓練標簽。由表1實驗結果可以看出,當DNN隱含層數及隱含結點數變化時,系統的性能會有一定的差異。當DNN模型有兩層隱含層,每層隱含結點數為800時,系統具有最好的表現。因此,本文將DNN的隱含層設置為兩層,每層800個結點。

表1 不同隱含層結點數時系統在測試噪聲環境下的性能表現

表2 系統在不同噪聲環境下的性能表現
表2給出了在純凈語音(clean)、babble噪聲、car噪聲、destroyerops噪聲環境下系統的性能表現。其中,DCF_08和DCF_10的計算方法分別來自美國國家標準與技術研究院(National Institute of Standards and Technology,NIST)2008年和2010年發起的說話人識別評測(Speaker Recognition Evaluation,SRE)[25-26]。
由表2可以看出,系統在不同的噪聲環境下性能都有一定的提升。尤其在car噪聲下,其EER下降了50%。另外,在純凈語音的情況下,系統在增強前后的表現基本保持一致。
圖3到圖5分別給出了在不同大小的信噪比條件下babble、destroyerops和car噪聲環境下系統的EER折線圖。可以明顯看出,系統在不同信噪比的噪聲環境下都能有穩定的表現。

圖3 不同信噪比babble噪聲下系統EER折線圖

圖4 不同信噪比destroyerops噪聲下系統EER折線圖
因為本文信號與噪聲的信噪比是隨機加入的,表2能夠說明在訓練和測試環境信噪比不匹配的情況下,系統也具有一定的自適應性。此外,DNN的強大的擬合能力是以大量的訓練數據對做基礎的,本文只是在較少的噪聲環境下做了驗證性實驗,可能會在某些噪聲環境下系統性能并不理想,出現自適應差的問題。

圖5 不同信噪比car噪聲下系統EER折線圖
本文提出一種將DNN用于說話人識別后端對ivector進行增強的方法。該方法首先需要分別提取純凈語音和含噪語音的i-vector。然后用含噪語音i-vector作為輸入,純凈語音i-vector作為標簽數據訓練用于i-vector增強的DNN模型。最后將訓練好的DNN模型與說話人識別系統進行融合,得到具有噪聲魯棒性的說話人識別系統模型。本文在TIMIT數據庫做的驗證性實驗證明了方法的可行性和有效性。