孫存威,文 暢+,謝 凱,賀建飚
(1.長江大學(xué) 計算機科學(xué)學(xué)院,湖北 荊州 434023;2.長江大學(xué) 電子信息學(xué)院,湖北 荊州 434023;3.中南大學(xué) 信息科學(xué)與工程學(xué)院,湖南 長沙 410083)
聲紋識別(又稱“說話人識別”)是一種生物特征識別技術(shù)[1],它通過人特有的語音特征來識別說話人的身份。隨著深度學(xué)習(xí)的出現(xiàn),卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)在語音識別領(lǐng)域得到廣泛的應(yīng)用。深度神經(jīng)網(wǎng)絡(luò)通過對大量語音數(shù)據(jù)的學(xué)習(xí)能夠自動地學(xué)到多方面的聲學(xué)特性(例如:共振峰、基音、倒頻譜等),從而提高說話人識別的準(zhǔn)確率。若僅用小樣本的聲紋數(shù)據(jù)訓(xùn)練,聲紋識別的準(zhǔn)確率并不理想。原因在于訓(xùn)練一個深度卷積神經(jīng)網(wǎng)絡(luò)需要足夠的訓(xùn)練樣本來學(xué)習(xí)數(shù)百萬的網(wǎng)絡(luò)參數(shù)[2]。
目前語音識別分為傳統(tǒng)的機器學(xué)習(xí)和深度學(xué)習(xí),對于傳統(tǒng)的機器學(xué)習(xí),決定識別精度的重要因素在于特征選擇。如今被廣泛應(yīng)用的特征有:線性預(yù)測倒譜系數(shù)[3]、Mel頻率倒譜系數(shù)[4]、i-vector[5]。機器學(xué)習(xí)方法中主要有Gaussian mixture model[6]、HMM[7]、SVM[7],這些方法的缺點是提取的特征不具有多樣性,而且不能保證提取的某一聲紋特征的質(zhì)量,導(dǎo)致識別的效果差。與傳統(tǒng)的機器學(xué)習(xí)方法相比,深度卷積神經(jīng)網(wǎng)絡(luò)在語音識別領(lǐng)域取得很大成就。但是,在實際工作中,很難獲得大量的聲紋數(shù)據(jù)。
遷移學(xué)習(xí)是指將某個領(lǐng)域上學(xué)習(xí)的知識應(yīng)用到不同的但相關(guān)的領(lǐng)域中[8],遷移學(xué)習(xí)正是利用大樣本解決小樣本問題的關(guān)鍵技術(shù)。在遷移過程中,不可避免源數(shù)據(jù)集和目標(biāo)數(shù)據(jù)集之間的差異,導(dǎo)致聲紋識別率低。
受限玻爾茲曼機[9]是由Hinton和Sejnowski提出的一種生成式隨機神經(jīng)網(wǎng)絡(luò),具備強大的無監(jiān)督學(xué)習(xí)能力,能夠從極大似然的角度快速學(xué)習(xí)輸入聲紋的高階抽象特征。因此本文想通過利用RBM來解決聲紋數(shù)據(jù)集間的差異性。此外,受Batch Normalization[10](簡稱BN)的啟發(fā),提出了FBN算法,可以在遷移學(xué)習(xí)的基礎(chǔ)上利用小樣本聲紋訓(xùn)練使網(wǎng)絡(luò)加速收斂。到目前為止,在小樣本聲紋識別領(lǐng)域,鮮有學(xué)者注意到遷移學(xué)習(xí)的重要意義。因此,我們提出了一種基于深度遷移混合模型的小樣本聲紋識別方法。
小樣本聲紋去訓(xùn)練CNN模型時,由于聲紋的數(shù)據(jù)量較小且聲紋數(shù)據(jù)集之間存在差異,導(dǎo)致直接提取的聲紋特征識別率很低。為提高小樣本聲紋識別性能,本文提出遷移預(yù)訓(xùn)練的改進CNN模型(加入快速批量歸一化)。在此基礎(chǔ)上,為了提高特征識別力,用RBM替換CNN網(wǎng)絡(luò)的全連接層,該層不僅全連接卷積后的所有聲紋特征圖,還可以從特征圖中進一步學(xué)習(xí)小樣本特有的高階聲紋特征,從而提取更多的聲紋特征,提高識別率。其算法流程如圖1所示。
圖1 基于深度遷移模型的小樣本聲紋識別流程
2.1.1 數(shù)據(jù)預(yù)處理
在使用音頻訓(xùn)練或測試模型之前,本文首先將音頻分割成4 s音頻段。在以快速傅里葉變換[11](FFT)進行處理之前,根據(jù)Nyquist-Shannon采樣定理,本文以8000 Hz的幀速率對4 s音頻段進行采樣,在時域中會得到一個1×32000維的離散語音信號。FFT是將音頻信號從時域轉(zhuǎn)換為頻域的有效方法,本文用它來使特征更加突出。由于FFT后得到的頻譜的振幅是均勻?qū)ΨQ的,本文取頻率的正部分,于是得到一個1×16000維的離散頻譜作為卷積神經(jīng)網(wǎng)絡(luò)的輸入。
2.1.2 預(yù)訓(xùn)練改進的CNN網(wǎng)絡(luò)
本文使用的CNN網(wǎng)絡(luò)由兩個卷積層和兩個全連接層組成,在卷積層中融入FBN,位于激活函數(shù)之前,該模型用于處理1×16000維的聲紋頻譜。卷積層Conv1使用了3個1×3的卷積核滑動處理1×16000維的輸入聲紋頻譜圖像,滑動步長為1個像素。卷積層Conv2使用了3個3×3的卷積核處理Conv1輸出的3個特征圖,最后得到3個1×15996維的特征圖,將特征圖展開成一列之后通過全連接層來實現(xiàn)聲紋分類。網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 基于聲紋識別的CNN網(wǎng)絡(luò)結(jié)構(gòu)
(1)前向傳播調(diào)整網(wǎng)絡(luò)參數(shù)
輸入數(shù)據(jù)在各層神經(jīng)元中的卷積如式(1)、式(2)所示,x(l)表示卷積層l,x(l+1)表示卷積層(l+1),W(l+1)表示層間權(quán)重、b(l+1)表示卷積層(l+1)的偏置,s(·)表示RELU激勵函數(shù)
vector(l+1)=W(l+1)x(l)+b(l+1)
(1)
x(l+1)=s(FBN(vector(l+1)))
(2)
其中,F(xiàn)BN(·)為本文提出的FBN算法,具體方法如下所述:
設(shè)CNN網(wǎng)絡(luò)模型的任一卷積層的輸出包含t維,vector={e(1),e(2),…,e(t)},將歸一化獨立應(yīng)用于每一個維度,下面以任一維度為例說明:在一個小批量數(shù)據(jù)樣本中,數(shù)據(jù)樣本容量為s,可表示為:Be={e1,e2,…,es},歸一化后的樣本數(shù)據(jù)為:Bg={g1,g2,…,gs},gi(i∈[1,s])服從N(0,1)分布。
小批量的均值為
(3)
樣本方差為
(4)
歸一化后的樣本值為
(5)
更新全局平均值為
μB=(1-γ)*μB+γ*μ
(6)
更新全局方差為
(7)
(8)
(9)
(10)
(2)BP算法反向傳播調(diào)整網(wǎng)絡(luò)參數(shù)
對于含N個聲紋的樣本集x={(x(1),y(1)),…,(x(N),y(N))},網(wǎng)絡(luò)輸出層誤差函數(shù)定義為
(11)
(12)
(13)
其中,ρ為學(xué)習(xí)率,Eτ為當(dāng)前批次訓(xùn)練聲紋樣本數(shù)目為τ的誤差。
將預(yù)訓(xùn)練的CNN模型(融入快速批量歸一化)遷移到小樣本目標(biāo)聲紋數(shù)據(jù)集上。在此基礎(chǔ)上,本文用RBM層和新的softmax層去替換預(yù)訓(xùn)練的CNN網(wǎng)絡(luò)的全連接層,保留卷積層。在卷積Conv2之后輸出3個1×15996維特征圖,將3個特征圖合并輸入RBM層,R3層含3×15996個可視節(jié)點,含6000個隱藏節(jié)點,R4層含1000個隱藏節(jié)點,將得到的1000維向量輸入softmax層中計算,找到概率最大所對應(yīng)的聲紋。基于遷移和二次改進的新網(wǎng)絡(luò)如圖3所示。
圖3 基于遷移和二次改進的新模型
2.3.1 小樣本聲紋重訓(xùn)練RBM層
RBM網(wǎng)絡(luò)由若干可視節(jié)點和隱藏節(jié)點組成,對于?ij,vi、hj∈{0,1},vi、hj分別表示可視節(jié)點和隱藏節(jié)點,0和1代表節(jié)點是否被激活。RBM可視節(jié)點和隱藏節(jié)點聯(lián)合的能量可定義為
(14)
其中,θ=(wij,ai,bj),wij表示可視節(jié)點和隱藏節(jié)點之間的權(quán)重,ai表示可視節(jié)點的偏置,bj表示隱藏節(jié)點的偏置,m表示可視節(jié)點的個數(shù),n表示隱藏節(jié)點的個數(shù)。由給定參數(shù)模型可得(v,h)的聯(lián)合概率分布
(15)
當(dāng)RBM模型的參數(shù)確定時,第j個隱藏節(jié)點的激活概率可表示
(16)
第i個可視節(jié)點的激活概率可表示
(17)
由式(15)可得關(guān)于v的邊緣分布
(18)
各參數(shù)的迭代公式可表示為
(19)
(20)
(21)
其中,λ表示預(yù)訓(xùn)練的學(xué)習(xí)率,L(θ)可表示
(22)
RBM中各網(wǎng)絡(luò)參數(shù)更新如算法1所示。
算法1: RBM基于對比散度的快速學(xué)習(xí)
RBM快速學(xué)習(xí)算法
Input: RBM(w,a,b),可視層初始狀態(tài)v1=x0
output: 參數(shù)a,b,w更新
fort= 1:T//最大訓(xùn)練周期T
forj= 1:n//對所有隱藏單元
P(h1j=1|v1)=sigmoid(bj+sum_i(v1i*wij))
EndFor
fori= 1:m//對所有可見單元
P(v2i=1|h1)=sigmoid(ai+sum_j(wij*h1j) //重構(gòu)可視層
EndFor
forj= 1:n//對所有隱藏單元
P(h2j=1|v2)=sigmoid(bj+sum_j(v2i*wij)) //重構(gòu)隱藏層
EndFor
w=w+alpha*(P(h1=1|v1)*v1-P(h2=1|v2)*v2)
a=a+alpha*(v1-v2) //學(xué)習(xí)速率alpha
b=b+alpha*(P(h1=1|v1) -P(h2=1|v2)) //參數(shù)更新
EndFor
2.3.2 新網(wǎng)絡(luò)的自適應(yīng)
為了使聲紋識別模型適用于特定的識別任務(wù),本文運用BP算法反向微調(diào)網(wǎng)絡(luò)的權(quán)重和偏置。由于考慮到方差損失函數(shù)權(quán)重更新過慢。因此本文采用交叉熵代價函數(shù)[12],其優(yōu)點:網(wǎng)絡(luò)輸出誤差越大,權(quán)重更新越快。交叉熵代價函數(shù)定義為
(23)
其中,N為聲紋訓(xùn)練樣本數(shù),y(i)表示輸入數(shù)據(jù)的期望輸出,y(i)∈{1,2,3…q},網(wǎng)絡(luò)的權(quán)重w和偏置b的反向傳播梯度的公式如下
(24)
(25)
然后利用式(12)和式(13)調(diào)整網(wǎng)絡(luò)各層的參數(shù)。
對于給定的輸入數(shù)據(jù)x在第i類的概率Pi,Zi作為Softmax分類器的輸入,在Softmax中運用式(26)計算得到max{P1,P2,…,Pq}所對應(yīng)的說話人即為測試結(jié)果
(26)
本文實驗的運行平臺:操作系統(tǒng)為ubuntu1404,GPU為NVIDIA GEFORCE GTX 970,內(nèi)存大小為16 GB。開發(fā)的應(yīng)用由python3.5、深度學(xué)習(xí)框架tensorflow和跨平臺界面軟件Qt實現(xiàn),基于本算法的說話人識別軟件如圖4所示。
圖4 基于本算法的說話人識別軟件界面
聲紋識別軟件Label_top顯示輸入待測聲紋;Label_bottom顯示與之匹配成功的人臉圖像。TextBroswer_left顯示聲紋各種屬性;TextBroswer_right顯示標(biāo)簽信息。
本文實驗采用在Kaldi平臺上開源的178小時的中文普通話數(shù)據(jù)庫(AISHELL-ASR0009-OS1)作為預(yù)訓(xùn)練的大樣本聲紋數(shù)據(jù)集,其中該數(shù)據(jù)庫含400個來自中國不同區(qū)域的人,截取每個人大約350個4 s的wav格式語音片段。自采集語音庫作為小樣本聲紋數(shù)據(jù)集,其中該語音庫含20位來自中國不同區(qū)域的發(fā)音人,人均大約95個4 s的wav格式語音片段。
本實驗采用3種評價指標(biāo):聲紋識別的準(zhǔn)確率、Loss函數(shù)值和網(wǎng)絡(luò)訓(xùn)練時間來驗證算法的性能,聲紋識別率的定義如下
(27)
其中,R表示聲紋識別率,Nt表示測試總聲紋的數(shù)目,Nr表示識別正確的聲紋數(shù)目。
對于本文提出的說話人識別的方法,該實驗先將AISHELL-ASR0009-OS1數(shù)據(jù)庫作為預(yù)訓(xùn)練集訓(xùn)練融合快速批量歸一化的CNN網(wǎng)絡(luò),預(yù)訓(xùn)練集的樣本容量約為140 000。遷移模型后再從自采語音庫選取20人的小目標(biāo)聲紋數(shù)據(jù)(人均50個語音片段)作為訓(xùn)練集(樣本容量為1000)來驗證下述第三種方案的有效性。從上述20人中任選10人(人均35個語音片段,樣本容量為350)作為測試集,按以下3種方案做對比實驗。
方案一:僅用小樣本聲紋數(shù)據(jù)去訓(xùn)練改進的CNN網(wǎng)絡(luò);
方案二:用大樣本聲紋數(shù)據(jù)預(yù)訓(xùn)練改進的CNN網(wǎng)絡(luò);之后遷移模型到目標(biāo)集中,用小樣本聲紋數(shù)據(jù)微調(diào)遷移網(wǎng)絡(luò)。
方案三:用大樣本聲紋數(shù)據(jù)預(yù)訓(xùn)練改進的CNN網(wǎng)絡(luò),遷移模型到小目標(biāo)集中,將全連接層更換為兩層RBM,再用小樣本聲紋數(shù)據(jù)重新微調(diào)新模型。
3種方案下的平均識別率見表1。
實驗結(jié)果表明:方案三的平均識別率相對于方案一提高了41.3%,相對于方案二提高了9.7%。由此可得出本文所提出的第三種方案的識別性能顯著高于其它兩種方案。
表1 3種方案對小樣本聲紋識別率的比較
上述3種實驗方案被用于評估訓(xùn)練樣本容量對說話人識別精度的影響,從自采語音庫選取20人的小樣本聲紋數(shù)據(jù)(人均10、20、30、40、50、60個語音片段)作為訓(xùn)練集,從自采集語音庫中任取10人(人均35個語音片段)作為測試集。不同訓(xùn)練樣本數(shù)目下的識別準(zhǔn)確率如圖5所示。
圖5 基于不同訓(xùn)練樣本數(shù)目的說話人識別準(zhǔn)確率
由實驗結(jié)果可知:3種方案下的說話人識別準(zhǔn)確率在一定程度上與訓(xùn)練樣本容量成正相關(guān)。在不同訓(xùn)練樣本容量下,方案三的識別率均高于方案二、方案一。
本實驗在上述3種方案下測試反向調(diào)整參數(shù)的次數(shù)對識別率產(chǎn)生的影響,如圖6所示。
圖6 不同BP調(diào)整次數(shù)下的聲紋識別率
隨著反向調(diào)整網(wǎng)絡(luò)參數(shù)的次數(shù)增加,3種方案下的小樣本聲紋識別率均有提高,但是二次改進的遷移模型比單一遷移模型平均聲紋識別率高10.1%,比未預(yù)訓(xùn)練的CNN模型平均聲紋識別率高40.3%。
在本實驗中,采用AISHELL-ASR0009-OS1數(shù)據(jù)庫預(yù)訓(xùn)練CNN網(wǎng)絡(luò),在相同的條件下,評估FBN算法在加速網(wǎng)絡(luò)訓(xùn)練上的性能。設(shè)定網(wǎng)絡(luò)的基礎(chǔ)學(xué)習(xí)率為0.01,網(wǎng)絡(luò)整體代價誤差(Loss)為0.01。實驗中做了3組對比實驗:Conv+FC、Conv+BN+FC、Conv+FBN+FC(最優(yōu)模型)。表2中實驗結(jié)果是通過5次實驗得到的平均值。
表2 比較3種模型下的預(yù)訓(xùn)練時間
在本實驗中,設(shè)置兩組對比實驗,比較在相同的訓(xùn)練集下,快速批量歸一化對網(wǎng)絡(luò)收斂速度的影響。用AISHELL-ASR0009-OS1語音庫預(yù)訓(xùn)練CNN模型(加入FBN與未加入FBN),遷移模型之后,用20人的自采集語音庫(人均50個語音片段,樣本容量1000)重新訓(xùn)練新網(wǎng)絡(luò)。在重訓(xùn)練過程中,根據(jù)Loss的誤差值判斷網(wǎng)絡(luò)的收斂速度,實驗結(jié)果如圖7所示。
圖7 兩種模型收斂速度的比較
實驗結(jié)果表明:訓(xùn)練兩種方法下的模型時,在達到相同的Loss值時,加入FBN的模型所需時間明顯比未加入FBN的模型少,從而驗證了卷積過程中加入FBN會加速網(wǎng)絡(luò)收斂。
3.8.1 聲紋識別率分析
在遷移預(yù)訓(xùn)練好的CNN模型時,將其全連接層改成兩層玻爾茲曼機層,該層不僅全連接所有特征圖,還能通過無監(jiān)督訓(xùn)練進一步學(xué)習(xí)特征圖的高階抽象特征。除此之外,還通過使用交叉熵?fù)p失函數(shù)反向傳播調(diào)整網(wǎng)絡(luò)參數(shù),使訓(xùn)練的神經(jīng)網(wǎng)絡(luò)自適應(yīng)目標(biāo)聲紋集,從而提高了小樣本說話人的識別率。
3.8.2 收斂速度和訓(xùn)練時間分析
BN能較好解決卷積神經(jīng)網(wǎng)絡(luò)中學(xué)習(xí)率低等問題并能優(yōu)化網(wǎng)絡(luò)訓(xùn)練速度?;诖烁M一步的做了改進,F(xiàn)BN位于激活函數(shù)之前,其目的是將每個網(wǎng)絡(luò)節(jié)點的輸出歸一化到零均值和單位方差,加速收斂。與BN不同的是,F(xiàn)BN省去了恢復(fù)操作,使得計算量降低、速度更快。
本文提出的一種深度遷移模型下的小樣本聲紋識別方法,用大樣本聲紋預(yù)訓(xùn)練CNN網(wǎng)絡(luò),在卷積的過程中引入快速批量歸一化,加速了網(wǎng)絡(luò)訓(xùn)練。此外,在遷移預(yù)訓(xùn)練模型時,將全連接層改為RBM,RBM不僅全連接卷積后的所有特征圖,而且還能進一步提取聲紋的高階抽象特征,消除了數(shù)據(jù)集之間的差異性,提高了聲紋識別率。本文還通過自適應(yīng)的方法調(diào)整網(wǎng)絡(luò)的權(quán)重和偏置,使聲紋識別網(wǎng)絡(luò)模型對小樣本的目標(biāo)聲紋數(shù)據(jù)集具有良好的自適應(yīng)性,為小樣本說話人識別提供一種有效的方法。但對于復(fù)雜背景噪聲等情況下,本文方法的聲紋識別會有所影響,后續(xù)將會對這些復(fù)雜情況進行深入研究。