姜 珊 張二華 張 晗
(南京理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 南京 210094)
說話人識別又稱聲紋識別,是一種生物身份認(rèn)證技術(shù)。它具有用戶接受度高、設(shè)備成本低、可擴(kuò)展性好以及便于移植等優(yōu)點(diǎn),可廣泛應(yīng)用于情報偵聽、司法鑒定、語音檢索、銀行業(yè)務(wù)、證券交易、公安取證、智能聲控鎖等方面[1~2]。在實(shí)際應(yīng)用中,它通常受環(huán)境噪聲、語音信道等因素的影響,性能難以提升。目前如何提高魯棒性和抗干擾能力是其研究重點(diǎn)。
早期的聲紋識別方法主要采用模板匹配法,如動態(tài)時間規(guī)整(Dynamic Time Warping,DTW)、矢量量化(Vector Quantization,VQ)等[1],該方法準(zhǔn)確率低,識別效果不理想。20世紀(jì)90年代提出的高斯混合模型方法(Gaussian Mixture Model,GMM)[2~3],取得了較好的效果,但對信道環(huán)境噪聲較敏感,難以滿足真實(shí)場景下的要求。
目前深度學(xué)習(xí)方法也開始應(yīng)用于說話人識別中,通常結(jié)合i-vector特征[3~4]與深度學(xué)習(xí)(CNN或DNN),基于LSTM進(jìn)行建模[5~6]。該深度模型不僅具有高容錯率、抗干擾和靈活的優(yōu)點(diǎn),在處理未知數(shù)據(jù)方面,同樣具有良好的效果。但由于該方法訓(xùn)練時間較長、所需訓(xùn)練樣本較多、網(wǎng)絡(luò)復(fù)雜度與說話人個數(shù)呈正比等諸多因素,往往使網(wǎng)絡(luò)難以訓(xùn)練和收斂。此外,目前對短語音的說話人識別涉及較少。
本文研究了基于Bi-GRU+BFE模型的說話人識別方法,該方法在短語音說話人識別實(shí)驗(yàn)中取得了比GMM[3]和常規(guī)深度學(xué)習(xí)方法更高的識別率,其訓(xùn)練效率也得到一定的提高。
循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)[10],是一種考慮數(shù)據(jù)前后時序關(guān)系的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。與傳統(tǒng)網(wǎng)絡(luò)相比,其優(yōu)勢為能夠保持信息的前后依賴關(guān)系,有效處理序列化數(shù)據(jù)。循環(huán)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)如圖1。

圖1 循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
圖1左側(cè)是RNN的循環(huán)結(jié)構(gòu)單元,圖中U表示輸入層到隱藏層的權(quán)重矩陣,V表示隱藏層到輸出層的權(quán)重矩陣,W是隱藏層與上一層的權(quán)重矩陣。圖3右側(cè)是RNN循環(huán)結(jié)構(gòu)單元按時間序列的展開。RNN的前向傳播算法如式(1)。

其中,ot為t時刻的輸出,Whh、Wxh、Why為權(quán)重矩陣,bh、by為偏置項(xiàng),ht為t時刻的隱狀態(tài),xt為t時刻的輸入數(shù)據(jù)。RNN共享任意時刻的權(quán)重參數(shù),每個時刻的狀態(tài)與前后時刻的狀態(tài)互相依賴,降低了網(wǎng)絡(luò)參數(shù)的冗余,能夠處理不同長度的序列數(shù)據(jù)。
RNN使用反向傳播方法進(jìn)行訓(xùn)練,當(dāng)網(wǎng)絡(luò)層次逐漸加深,雅克比矩陣的運(yùn)算結(jié)果一般會呈指數(shù)變化,導(dǎo)致其不能很好地處理長距離依賴的問題。梯度消失、梯度爆炸等模型訓(xùn)練異?,F(xiàn)象,是RNN未被廣泛應(yīng)用于實(shí)際的重要原因[11,14]。
長短期記憶網(wǎng)絡(luò)(Long Short Time Memory,LSTM)解決了RNN存在的長期依賴問題[12~13],圖2是LSTM單元結(jié)構(gòu)示意圖,LSTM單元由輸入門it、遺忘門ft和輸出門ot組成。

圖2 LSTM單元結(jié)構(gòu)示意圖
LSTM的前向計(jì)算公式如下:
輸入門:

遺忘門:

記憶單元:

輸出門:

當(dāng)前隱藏層輸出:

式中·號表示對應(yīng)元素相乘,W表示網(wǎng)絡(luò)的權(quán)重矩陣,b表示偏移向量,xt表示t時刻的輸入。
LSTM是對RNN的改進(jìn),消除了RNN的梯度消失或梯度爆炸問題。LSTM單元的三個門有助于記住任意長時間的值,忘記不重要的值。LSTM的門采用點(diǎn)乘法計(jì)算和sigmoid函數(shù)實(shí)現(xiàn)模擬式存儲。門值表示門的開關(guān)程度,將其設(shè)置為[0,1]之間,用于表示給予通過的信息占比,即門值為0時,不予通過任何信息;門值為1時,予以通過所有信息。
門值與該門內(nèi)的輸入數(shù)據(jù)有關(guān),根據(jù)數(shù)據(jù)自身的重要程度來決定予以通過的信息占比,對輸入數(shù)據(jù)進(jìn)行加權(quán)過濾,并且通過各時刻參數(shù)共享的循環(huán)神經(jīng)網(wǎng)絡(luò)對門值進(jìn)行調(diào)整。
類似于長短期記憶網(wǎng)絡(luò),合并LSTM中的輸入門與遺忘門構(gòu)成“更新門”ut,與“重置門”rt組合而成一個相對簡單的網(wǎng)絡(luò)結(jié)構(gòu),即門控循環(huán)單元(Gated Recurrent Unit,GRU)[14,17]。GRU結(jié)構(gòu)示意圖如圖3所示。

圖3 GRU單元結(jié)構(gòu)示意圖
GRU的前向傳播計(jì)算如下:
更新門:

重置門:

記憶單元:

當(dāng)前隱藏層輸出:

上述公式中,·號指對應(yīng)元素相乘,W指網(wǎng)絡(luò)的權(quán)重矩陣,b指偏置向量,xt指t時刻的輸入。更新門用來控制隱層狀態(tài)的更新,即若ut=0,之前的信息都不被寫入,重置門可以控制隱狀態(tài)的遺存。
GRU在結(jié)構(gòu)上比LSTM精簡,少一個門結(jié)構(gòu),訓(xùn)練過程中所需參數(shù)值較少,有利于模型的收斂和效率的提高。
3.1.1 Bi-GRU結(jié)構(gòu)
語音信號是一種復(fù)雜的時變信號,循環(huán)神經(jīng)網(wǎng)絡(luò)在處理時序相關(guān)數(shù)據(jù)上表現(xiàn)出強(qiáng)大的優(yōu)勢,而其中的GRU通過將LSTM中的輸入門和遺忘門合并為一個更新門,在保持其高效識別率的條件下,又加快了訓(xùn)練效率。音征互載現(xiàn)象表明,當(dāng)前時刻的語音信號不僅與前一時刻的信號參數(shù)相關(guān),也與下一時刻的信號參數(shù)有密切的聯(lián)系[8]。但GRU只是單向地傳遞了時序信息,僅考慮了前一時刻的信息,未考慮到下一時刻的信息,在處理語音信號上存在缺陷[22]。因此本文選用雙向門控循環(huán)神經(jīng)網(wǎng)絡(luò)(Bidirectional-Gated Recurrent Unit,Bi-GRU)[14]作為聲紋識別網(wǎng)絡(luò)的主要結(jié)構(gòu),Bi-GRU結(jié)合前后語音信息計(jì)算聲紋特征向量,對于語音的把握更加準(zhǔn)確和全面,提高了說話人識別的魯棒性[19]。
Bi-GRU的結(jié)構(gòu)如圖4所示。

圖4 Bi-GRU模型結(jié)構(gòu)示意圖
圖4中,w0,w1,w2,…,wn為一段語音信號經(jīng)過時序特征提取后的n+1個輸入,fw_ht表示t時刻Bi-GRU的正向隱藏層狀態(tài),bw_ht表示t時刻Bi-GRU的反向隱藏層狀態(tài)。網(wǎng)絡(luò)最后一層通過softmax激活函數(shù)得到分類標(biāo)簽的概率分布。
3.1.2 塊級特征均衡結(jié)構(gòu)
塊級特征均衡(Block-level Feature Equalization,BFE)結(jié)構(gòu)主要由三個網(wǎng)絡(luò)層構(gòu)成,分別為:幀級平均層(Average layer)、全連接層(Dense layer)、L2標(biāo)準(zhǔn)化層(L2_normalization layer)[17,21]。
一段連續(xù)語音經(jīng)端點(diǎn)檢測之后得到有效語音段,將其進(jìn)行分幀處理,選取若干連續(xù)語音幀組成語音塊,通常語音塊包含50個~100個語音幀。說話人識別模型的輸入特征采用語音塊的幀級特征(每個語音塊的聲紋特征參數(shù)的維度為塊內(nèi)幀數(shù)×各幀特征維度),輸入標(biāo)簽是對應(yīng)語音塊的說話人編號。由于輸入特征為幀級別,而輸入標(biāo)簽為塊級別,兩者規(guī)格不一致,無法進(jìn)行深度計(jì)算。需要將語音塊的幀級特征融合計(jì)算得到塊級特征,使其最后一層的計(jì)算結(jié)果與標(biāo)簽值的規(guī)格對應(yīng),實(shí)現(xiàn)端到端的訓(xùn)練方式,如圖5。

圖5 語音塊輸入數(shù)據(jù)說明圖
因此,幀級平均層(Average layer)可用于將屬于同一語音塊的各幀特征求和取平均,轉(zhuǎn)化為塊級特征,實(shí)現(xiàn)一個語音塊對應(yīng)一個特征向量。由此,網(wǎng)絡(luò)輸出值與輸入標(biāo)簽值完全對齊,便于損失函數(shù)的計(jì)算。采用求和取平均的方法來計(jì)算塊級特征,是為了避免偶然因素,減小誤差,實(shí)驗(yàn)也證明了該方法的可靠性。
基于相鄰層之間節(jié)點(diǎn)的全連接層(Dense layer),可對前一幀級平均層計(jì)算得到的特征數(shù)據(jù)降維去冗余。該層的神經(jīng)元節(jié)點(diǎn)個數(shù)通常為前一層神經(jīng)元節(jié)點(diǎn)個數(shù)的一半,將計(jì)算復(fù)雜度縮減二分之一。
L2標(biāo)準(zhǔn)化層(L2_normalization layer)對前一層計(jì)算得到的中間特征向量按一定標(biāo)準(zhǔn)進(jìn)行規(guī)范化,使其特征分布更加合理,易于模型的收斂,一定程度上能防止模型的過擬合。由于中間特征向量中一行數(shù)據(jù)屬于一個語音塊,因此利用L2范數(shù)對其按行進(jìn)行標(biāo)準(zhǔn)化,計(jì)算公式如式(11)。

式中,M為輸入網(wǎng)絡(luò)中訓(xùn)練的一批語音塊個數(shù),N為經(jīng)過前三層網(wǎng)絡(luò)結(jié)構(gòu)計(jì)算得到的語音塊級特征參數(shù)的維度,x為未泛化的中間特征向量,y為經(jīng)過L2標(biāo)準(zhǔn)化后的特征向量。
上述兩種結(jié)構(gòu)前后拼接組合為Bi-GRU+BFE網(wǎng)絡(luò)模型,將模型最后一層的輸出通過softmax激活函數(shù),得到最終預(yù)測結(jié)果。該模型中具體各層的設(shè)計(jì)架構(gòu)如表1。
由4.1節(jié)實(shí)驗(yàn)結(jié)果,本文采用64維梅爾頻率倒譜系數(shù)(Mel-Frequency Cepstrum Coefficient,MFCC)[7~8]作為輸入到網(wǎng)絡(luò)模型中的聲紋特征。
對每塊(多幀)語音提取MFCC特征參數(shù),每幀提取64維,即每個語音塊的特征參數(shù)的維度為塊中幀數(shù)×64。實(shí)驗(yàn)表明,當(dāng)每個語音塊時長為1s以內(nèi),在短語音上的說話人識別實(shí)驗(yàn)結(jié)果比較理想。由于在分幀過程中設(shè)定的幀長為25ms,幀移為10ms,1s的語音可以分為99幀。因此,循環(huán)神經(jīng)網(wǎng)絡(luò)的輸入時間步長(n_steps)設(shè)定為99,即將聲紋特征每前后共99幀數(shù)據(jù)作為一個塊(batch),則輸入網(wǎng)絡(luò)中一個塊的數(shù)據(jù)維度為99×64。對數(shù)據(jù)進(jìn)行批量訓(xùn)練,設(shè)定各批量數(shù)據(jù)的個數(shù)為batch_size。
由上可知,每次批量訓(xùn)練中共batch_size×n_steps×n_inputs的張量被輸入網(wǎng)絡(luò)中,訓(xùn)練得到的最后兩層數(shù)據(jù)分別為:維度為batch_size×512的embeddings中間特征值[14,19]和維度為batch_size×N的softmax輸出值。N為說話人總數(shù),說話人標(biāo)簽以獨(dú)熱(one-hot)編碼的形式進(jìn)行處理,以張量的形式輸入網(wǎng)絡(luò)[7]。
說話人識別模型的訓(xùn)練步驟如圖6。

圖6 說話人識別模型的訓(xùn)練步驟
實(shí)驗(yàn)采用交叉熵?fù)p失函數(shù)進(jìn)行模型訓(xùn)練,具體將softmax輸出值采用交叉熵?fù)p失函數(shù)計(jì)算偏差Loss,然后通過梯度下降算法,對Loss和每層的權(quán)重求偏導(dǎo),更新參數(shù),訓(xùn)練模型。
實(shí)驗(yàn)選取南京理工大學(xué)NJUST603語音庫中68個說話人(男女各半)的語音數(shù)據(jù),采樣頻率均為16kHz,采樣精度均為16bit。對數(shù)據(jù)經(jīng)過端點(diǎn)檢測去除無效語音段,每人保留110s時長的有效語音。根據(jù)隨機(jī)劃分且不重疊的原則,將數(shù)據(jù)集按照9∶1∶1的比例分為訓(xùn)練集、驗(yàn)證集及測試集。本文采用準(zhǔn)確度(ACC)和損失函數(shù)(Loss)作為評價標(biāo)準(zhǔn)[7],計(jì)算公式分別如式(12)和式(13)。

式中:n表示說話人總數(shù);TPi、FNi分別表示第i個說話人中正確分類的數(shù)目和錯誤分類的數(shù)目。Y表示類別正確的分類,P(Y|X)表示正確分類的概率,Loss表示在指定分類Y的情況下,概率越大,樣本與目標(biāo)值越接近,則損失越?。?]。
選用MFCC作為實(shí)驗(yàn)特征參數(shù),傳統(tǒng)高斯混合模型(GMM)作為訓(xùn)練模型,從訓(xùn)練集中選30s語音作為訓(xùn)練數(shù)據(jù),測試集中選10s語音作為測試數(shù)據(jù)(單個語音樣本時長為1s)。分別選用特征參數(shù)維度為24、48和64作為對比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表2。

表2 特征參數(shù)維度對比實(shí)驗(yàn)結(jié)果
實(shí)驗(yàn)結(jié)果表明,64維MFCC特征參數(shù)表現(xiàn)最佳,因此,本文4.2、4.3及4.4節(jié)實(shí)驗(yàn)中均選用64維MFCC特征作為輸入到模型中的聲紋特征參數(shù),并設(shè)置訓(xùn)練、驗(yàn)證及測試數(shù)據(jù)分別為訓(xùn)練集、驗(yàn)證集及測試集中的全部數(shù)據(jù)。
設(shè) 置LSTM[12~13]、GRU[14,17]、Bi-LSTM[19]、Bi-GRU[17,19]四種循環(huán)神經(jīng)網(wǎng)絡(luò)模型作為對比實(shí)驗(yàn),結(jié)果如表3所示。

表3 不使用BFE結(jié)構(gòu)模型對比實(shí)驗(yàn)結(jié)果
由表3對比可知,GRU在說話人識別訓(xùn)練階段及驗(yàn)證階段的準(zhǔn)確率(ACC)及損失值(Loss)均優(yōu)于LSTM。雙向傳播算法利用語音特征中的前后時序關(guān)系,有效提升了模型性能(表3中Bi-GRU的驗(yàn)證階段ACC值相對GRU提升了20.35%,Bi-LSTM的驗(yàn)證階段ACC值相對LSTM提升了24.13%)。同時表明Bi-GRU較為適用于本任務(wù)。
分別對4.2節(jié)中四種循環(huán)神經(jīng)網(wǎng)絡(luò)模型使用塊級特征均衡(BFE)結(jié)構(gòu),進(jìn)行對比實(shí)驗(yàn),結(jié)果如表4所示。
對比表3中的實(shí)驗(yàn)結(jié)果,表4中相應(yīng)的循環(huán)神經(jīng)網(wǎng)絡(luò)模型使用BFE結(jié)構(gòu)之后,在訓(xùn)練階段的性能略有提升,而在驗(yàn)證階段,模型識別準(zhǔn)確率(ACC)有明顯提高,損失值(Loss)也明顯下降。使用BFE結(jié)構(gòu)后模型性能提升具體表現(xiàn)為:LSTM+BFE模型相對LSTM,訓(xùn)練階段ACC值提升了17.81%,驗(yàn)證階段ACC值提升了30.14%;GRU+BFE模型相對GRU,訓(xùn)練階段ACC值提升了1.09%,驗(yàn)證階段ACC值提升了21.47%;Bi-LSTM+BFE模型相對Bi-LSTM,驗(yàn)證階段ACC值提升了18.38%;Bi-GRU+BFE模型相對Bi-GRU,驗(yàn)證階段ACC值提升了10.97%。其中,本文使用的Bi-GRU+BFE模型在驗(yàn)證階段,識別準(zhǔn)確率已提升至98.82%,損失值降至0.1797。

表4 使用BFE結(jié)構(gòu)模型對比實(shí)驗(yàn)結(jié)果
使用塊級特征均衡(BFE)結(jié)構(gòu)主要有兩個原因:一是為了避免特征數(shù)據(jù)的偶然因素,減小誤差;二是為了使其特征分布更加合理,易于模型的收斂,提高識別準(zhǔn)確率。這使得模型的泛化程度得到了進(jìn)一步的提升,因此在Bi-GRU網(wǎng)絡(luò)層之后添加BFE結(jié)構(gòu)有一定優(yōu)勢。
根據(jù)以上實(shí)驗(yàn)結(jié)果,對比傳統(tǒng)的GMM概率統(tǒng)計(jì)模型[3~4]、在基于深度學(xué)習(xí)的聲紋識別領(lǐng)域中取得優(yōu)異成績的殘差卷積神經(jīng)網(wǎng)絡(luò)(ResCNN)模型[16~18]以 及LSTM+BFE、GRU+BFE、Bi-LSTM+BFE、Bi-GRU+BFE四種改進(jìn)后的循環(huán)神經(jīng)網(wǎng)絡(luò)模型,進(jìn)行短語音說話人識別實(shí)驗(yàn)。本實(shí)驗(yàn)中所用訓(xùn)練集為時長為90s的有效語音數(shù)據(jù),表5展示了以上五種模型訓(xùn)練收斂后,分別在時長為0.5s、1s、2s、5s的有效短語音上的測試結(jié)果。

表5 多種模型在短語音上的測試結(jié)果
由表5可知,在測試語音時長極短的情況下,Bi-GRU+BFE模型依然表現(xiàn)最佳,對時長為0.5s的測試語音仍能達(dá)到90.66%的識別率,相較其他模型有明顯提升。圖7顯示了表5中各模型在短語音上的測試準(zhǔn)確率及對比趨勢。

圖7 Bi-GRU+BFE與其他模型對短語音測試準(zhǔn)確率對比圖
對比幾種深度學(xué)習(xí)網(wǎng)絡(luò)模型在說話人識別任務(wù)上的應(yīng)用,Bi-GRU+BFE網(wǎng)絡(luò)模型表現(xiàn)出較好的性能。在對訓(xùn)練模型進(jìn)行測試過程中,達(dá)到了98.82%的準(zhǔn)確率和0.1797的損失值,分別為所有參與對比模型的最高準(zhǔn)確率及最低損失值。此外,應(yīng)用傳統(tǒng)高斯混合模型、幾種深度學(xué)習(xí)模型及Bi-GRU+BFE模型,針對長度較短的語音(0.5s、1s、2s、5s)進(jìn)行聲紋識別測試。實(shí)驗(yàn)結(jié)果顯示,Bi-GRU+BFE模型在短語音說話人識別中表現(xiàn)最佳,均達(dá)到了90%以上的高準(zhǔn)確率,尤其對于長度為0.5s的語音,識別率相對其他模型有明顯提升。本文在傳統(tǒng)聲紋識別的基礎(chǔ)上,研究了新的說話人識別方法,該方法有效提高了短語音的識別率,為聲紋識別的實(shí)際應(yīng)用提供了新的思路。本方法對說話人語音的質(zhì)量要求較高,當(dāng)測試集與訓(xùn)練集的差距較大時,如兩者的信道不同或測試語音含有較多噪聲,識別準(zhǔn)確率會有所下降。因此,如何提高說話人識別中跨信道語音及含噪語音的識別率,仍需繼續(xù)研究。