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