張玉杰,張 贊
(陜西科技大學(xué)電氣與控制工程學(xué)院,陜西 西安710021)
聲紋識別是一種生物識別技術(shù),可根據(jù)一段語音識別出說話人的身份[1]。從傳統(tǒng)的高斯混合模型GMM(Gaussian Mixture Model)[2]到深度學(xué)習(xí)算法[3 - 5],聲紋識別技術(shù)得到了快速發(fā)展。近年來,隨著語譜圖的出現(xiàn),研究者提出采用語譜圖與卷積神經(jīng)網(wǎng)絡(luò)相結(jié)合的方式進(jìn)行說話人身份識別[6 - 8],其優(yōu)勢在于語譜圖具有很強(qiáng)的綜合表征能力,能夠充分表示說話人身份的完整信息,且卷積神經(jīng)網(wǎng)絡(luò)CNN(Convolutional Neural Network)擅于提取特征的能力,使聲紋識別系統(tǒng)的識別性能得到大幅度提升。
針對基于語譜圖的聲紋識別算法的研究目前仍處于初級階段,文獻(xiàn)[6-8]將卷積神經(jīng)網(wǎng)絡(luò)視為一種特征提取器,所用卷積層數(shù)較少,網(wǎng)絡(luò)的表達(dá)能力有限。而基于端到端的深度卷積神經(jīng)網(wǎng)絡(luò)模型不僅能夠利用深層的網(wǎng)絡(luò)結(jié)構(gòu)提取深度特征,而且端到端的方式使CNN具有特征提取與分類2種能力。DenseNet(Dense convolutional Network)作為一種端到端的網(wǎng)絡(luò)模型,采用密集連接結(jié)構(gòu)一方面能夠構(gòu)建更深層次的網(wǎng)絡(luò),另一方面加強(qiáng)了特征傳播,在圖像分類領(lǐng)域取得了較好的效果[9,10]。本文借鑒圖像處理的方法,將DenseNet應(yīng)用于語譜圖聲紋識別中,以提高聲紋識別的識別率。但是,利用DenseNet進(jìn)行聲紋識別時,存在以下問題:聲紋識別在許多場合下需要在嵌入式設(shè)備上進(jìn)行,大量的卷積池化操作會帶來網(wǎng)絡(luò)參數(shù)量的增加,導(dǎo)致在提取聲紋特征時網(wǎng)絡(luò)的存儲數(shù)據(jù)量增大,計算效率降低,不利于在對參數(shù)量有嚴(yán)格限制的嵌入式環(huán)境中運(yùn)行;采用Softmax 損失訓(xùn)練的DenseNet網(wǎng)絡(luò)提取的特征只具有可分離性,未考慮類內(nèi)的緊湊性,使特征沒有很好的表征性能,降低了聲紋識別的精確度。
本文將DenseNet用于語譜圖處理實現(xiàn)聲紋識別,從減少網(wǎng)絡(luò)參數(shù)量以及提高聲紋特征表征能力2個方面展開研究,對DenseNet進(jìn)行優(yōu)化,提高DenseNet在語譜圖聲紋識別中的識別效果。
語譜圖[11]是將語音信號的頻域特性通過時間域上的累積而形成的一種二維圖像,動態(tài)地顯示了語音頻譜與時間之間的變化關(guān)系。語譜圖中包含對應(yīng)時刻頻率與能量強(qiáng)度組成的空間特征信息以及隨時間變化的時序特征信息,這些信息根據(jù)顏色的深淺形成了不同的紋理,在這些紋理中包含了大量的說話人的個性特征信息,根據(jù)語譜圖紋理的區(qū)別,可以鑒別不同的說話人。
語譜圖的生成過程如圖1所示。依據(jù)語音信號的短時平穩(wěn)特性將語音信號分割為若干幀信號,再對每一幀信號加窗處理,然后進(jìn)行傅里葉變換得到信號的幅頻特性,通過對幅度值進(jìn)行對數(shù)變換和彩色映射獲得語音信號對應(yīng)的語譜圖。
Figure 1 Generation process of the spectrogram圖1 語譜圖的生成過程
借鑒基于深度學(xué)習(xí)的圖像處理方法,按照圖1的過程生成說話人的語譜圖,將語譜圖作為原始數(shù)據(jù),輸入至DenseNet網(wǎng)絡(luò)中進(jìn)行聲紋識別。按照語譜圖的處理要求,DenseNet的網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示,主要由1個初始卷積、N個密集連接模塊(Dense Block)、多個傳輸層(Transition Layer)和1個分類層(Classification Layer)組成。Dense Block結(jié)構(gòu)圖如圖3所示,x0,x1,…,xl-1為第0層到第l-1層的特征圖,通過對各層特征圖的拼接,再經(jīng)過非線性變換Hl(*)得到第l層的特征圖xl,其過程如式(1)所示:
xl=Hl([x0,x1,…,xl-1])
(1)
其中,非線性變換H(*)由一個1×1卷積和一個3×3的卷積組成,1×1卷積被稱為瓶頸層(Bottleneck Layer),其輸出通道數(shù)為4k(k是一個超參數(shù),被稱為增長率),其作用是既融合了各個通道的特征,又通過降維減少了輸入到3×3卷積的特征圖數(shù)量,減少網(wǎng)絡(luò)的計算量。
Figure 2 Network structure of DenseNet 圖2 DenseNet網(wǎng)絡(luò)結(jié)構(gòu)
Figure 3 Network structure of densely connected modules 圖3 密集連接模塊的網(wǎng)絡(luò)結(jié)構(gòu)
為了防止隨著網(wǎng)絡(luò)層數(shù)的增加,特征維度增長過快,Dense Block模塊之間通過Transition Layer連接。假設(shè)傳輸層的輸入通道數(shù)為k,采用1×1卷積產(chǎn)生θ×k個特征,當(dāng)0<θ<1時傳輸層起到模型壓縮的作用,再通過2×2池化操作縮小特征圖大小,減少網(wǎng)絡(luò)的參數(shù)量。
將DenseNet應(yīng)用于聲紋識別對語譜圖進(jìn)行處理時,可以將語譜圖看作是一種紋理圖像,說話人的語音個性特征體現(xiàn)在像素間的空間幾何特征與時序特征上,利用DenseNet進(jìn)行聲紋識別時,利用其特征重用特性和對卷積池化層累積的特性,語音原本的序列特性可得到充分體現(xiàn)。但是,隨著卷積池化層的增多,網(wǎng)絡(luò)的數(shù)據(jù)量隨之增大,DenseNet的瓶頸層和傳輸層分別采用小的卷積核對特征圖的維度進(jìn)行壓縮,在一定程度上減少了網(wǎng)絡(luò)的參數(shù)量。但由于網(wǎng)絡(luò)層數(shù)的加深,網(wǎng)絡(luò)的參數(shù)量與計算量仍處于“超重”狀態(tài),不利于在資源有限的嵌入式平臺上實現(xiàn)聲紋識別。
DenseNet的Classification Layer由全局池化層、全連接層和Softmax層組成,經(jīng)過全局池化層和全連接層能夠得到語譜圖中描述說話人的語音特征,再用Softmax函數(shù)進(jìn)行歸一化處理得到每個說話人的概率。DenseNet使用交叉熵?fù)p失函數(shù)作為目標(biāo)函數(shù),通過網(wǎng)絡(luò)訓(xùn)練劃分不同說話人類別。但是,對于聲紋識別來說,該方法只考慮到類內(nèi)的距離,提取到的聲紋特征并沒有更好的表征能力,不足以實現(xiàn)說話人身份的精確識別。
針對DenseNet應(yīng)用于聲紋識別領(lǐng)域存在參數(shù)量大、特征表征能力弱的情況,本文對網(wǎng)絡(luò)進(jìn)行優(yōu)化。一方面在不損失精度的前提下,對網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行優(yōu)化以減少參數(shù)量;另一方面通過多個損失函數(shù)的聯(lián)合監(jiān)督訓(xùn)練,增強(qiáng)聲紋特征的表征能力,實現(xiàn)說話人身份的精確識別。
深度可分離卷積DSC(Depth Separable Convolution)是一種能夠有效減少網(wǎng)絡(luò)參數(shù)量的方法,本文將其應(yīng)用至DenseNet網(wǎng)絡(luò)中以降低算法的運(yùn)算復(fù)雜度。
本文設(shè)計的DenseNet網(wǎng)絡(luò)結(jié)構(gòu)如表1所示,采用了4個密集連接模塊和3個傳輸層。其中,4個密集連接模塊的密集連接單元個數(shù)分別為6,12,24和16。為了減少網(wǎng)絡(luò)的參數(shù)量,使用深度可分離卷積將Dense Block模塊中3×3的標(biāo)準(zhǔn)卷積分為一個3×3深度卷積DW(Depthwise Convolution)和一個1×1逐點卷積PW(Pointwise Convolution)。DW卷積的作用是對每一個輸入通道的特征圖做單獨卷積,一個卷積核負(fù)責(zé)一個通道;再利用PW卷積對DW卷積產(chǎn)生的特征圖進(jìn)行組合,改變輸出通道數(shù)。
Table 1 Network structure of improved DenseNet
在模型訓(xùn)練中,假設(shè)瓶頸層輸出大小為H×W×N的特征圖,利用3×3的卷積核進(jìn)行卷積操作后,輸出大小為H×W的P通道特征圖,則標(biāo)準(zhǔn)卷積參數(shù)量PSC與計算量FSC分別如式(2)和式(3)所示:
PSC=3×3×P×N
(2)
FSC=H×W×3×3×N×P
(3)
而深度可分離卷積的參數(shù)量PDSC與計算量FDSC分別如式(4)和式(5)所示:
PDSC=3×3×N+N×P
(4)
FDSC=H×W×32×N+H×W×N×P
(5)
深度可分離卷積與標(biāo)準(zhǔn)卷積的計算量與參數(shù)量之比如式(6)所示:
(6)
因此,采用深度可分離卷積,在模型的精度損失較小的情況下運(yùn)算量減少近8~9倍,極大地提高了模型的運(yùn)算效率。
為了提高聲紋特征的表征能力,使特征具有很好的類內(nèi)緊湊性和類間可分離性,本文采用Softmax損失函數(shù)(Softmax+交叉熵?fù)p失函數(shù))與中心損失函數(shù)(Center Loss)[12]聯(lián)合監(jiān)督的方式來訓(xùn)練DenseNet,其損失函數(shù)的具體表達(dá)式如式(7)所示:
L=Ls+λLc
(7)
其中,L表示總損失,Ls表示Softmax損失,Lc表示中心損失,λ用于平衡2個損失函數(shù)。其中Softmax損失函數(shù)的表達(dá)式如式(8)所示:
(8)
其中,xi表示第i個特征;yi是xi的真實類別標(biāo)簽;Wyi與Wj分別表示將xi判別為yi類和第j類的權(quán)重向量,即最后全連接層中權(quán)重W的第yi和第j列;byi與bj分別表示yi類和第j類的偏置項;m表示小批量(mini-batch)的大小。
Center Loss損失函數(shù)如式(9)所示:
(9)
其中,cyi表示第yi類特征的類中心??梢钥闯觯行膿p失函數(shù)為每一個類別提供一個類別中心,使參與訓(xùn)練的每一個樣本都能向同一類別的中心靠攏,達(dá)到聚類的效果。
由式(8)和式(9)可以得到,在Softmax損失的監(jiān)督下訓(xùn)練的網(wǎng)絡(luò)可以劃分不同類別,但未曾考慮類內(nèi)特征的緊湊性;中心損失雖然最小化了類內(nèi)距離,但并未考慮類間的可分離性。因此,采用兩者相結(jié)合的方式對算法進(jìn)行尋優(yōu),可以擴(kuò)大類內(nèi)的緊湊性和類間可分離性,實現(xiàn)說話人身份的高精度判別。
實驗采用的語音數(shù)據(jù)集來自希爾貝殼中文普通話AISHELL-ASR0009OS1開源語音數(shù)據(jù)庫,400名發(fā)言人參與錄制,分別來自中國不同口音區(qū)域,錄制過程在安靜的室內(nèi)環(huán)境中進(jìn)行,每人錄制300多個語音片段,同一人的語音放在一個文件夾下,隨機(jī)抽取10人的語音進(jìn)行實驗,一段語音被截取為1.5 s時長的語音片段,按照8∶2的比例分為訓(xùn)練集與測試集,訓(xùn)練集包括41 909幅語譜圖,測試集包括10 472幅語譜圖。
硬件平臺:GPU:NVIDIA Tesla V100;RAM:32 GB;顯存:16 GB;操作系統(tǒng):Ubuntu 16.04LTS,實驗基于Keras框架。首先對語音信號進(jìn)行處理,語音信號的采樣率為11 025 Hz,幀長為25 ms,則傅里葉變換點數(shù)為256,每幀語音信號的長度為256,幀疊為128,按照圖1所示的方法得到說話人的語譜圖大小為119×129,隨機(jī)挑選2人的語譜圖如圖4所示,圖中明顯的橫方向的條紋,稱之為“聲紋”,不同說話人的語譜圖聲紋紋理有所區(qū)別。
Figure 4 Spectrogram with 119×129 圖4 119×129語譜圖
為了驗證本文聲紋識別算法的有效性,設(shè)計4組實驗進(jìn)行對比,具體實驗細(xì)節(jié)如表2所示。
Table 2 Experimental grouping
實驗1為梅爾倒譜系數(shù)MFCC(Mel Frequency Cepstral Coefficients)+高斯混合模型GMM分類方法中,MFCC采用16維特征,GMM的階數(shù)為10階。實驗2和實驗3采用的網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)如表1中的“DenseNet”部分所示,實驗4采用的網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)如表1中的“改進(jìn)的DenseNet”部分所示。其中,Dense Block模塊的增長率k設(shè)置為32;Transition層的壓縮系數(shù)為0.5,即特征圖通過傳輸層特征維度減少一半;中心損失函數(shù)的中心學(xué)習(xí)率設(shè)置為0.6,λ取0.01。本次實驗采用Adam優(yōu)化器,批量大小為64,學(xué)習(xí)率設(shè)置為0.001,迭代次數(shù)為40次。定義識別率為性能評價指標(biāo),即識別正確的語音片段的數(shù)量與測試數(shù)據(jù)集中的總語音片段數(shù)量的比值。
(1)收斂性分析。
通過對實驗2~實驗4進(jìn)行仿真訓(xùn)練,模型損失值與迭代次數(shù)的關(guān)系如圖5所示。由圖5可以看出,實驗2比實驗3和實驗4的收斂速度更快,而實驗3和實驗4的收斂速度比較接近。說明在Softmax損失的監(jiān)督下,DenseNet網(wǎng)絡(luò)能夠很快收斂,Center Loss的加入對網(wǎng)絡(luò)的收斂速度有一定的抑制作用,但是隨著迭代次數(shù)的增加,3組實驗的Loss值都呈下降趨勢且趨于平穩(wěn),表明3組實驗的網(wǎng)絡(luò)都可以正常收斂。
Figure 5 Effect of epoch on Loss value圖5 迭代次數(shù)對Loss值的影響
(2)模型大小與參數(shù)量。
原DenseNet網(wǎng)絡(luò)與基于深度可分離卷積的DenseNet網(wǎng)絡(luò)的參數(shù)量和模型大小如表3所示,改進(jìn)的DenseNet網(wǎng)絡(luò)的參數(shù)量減少了25.5%,模型大小減少了24.6%。
Table 3 DenseNet network model size
(3)識別率。
表4反映了4組實驗的識別率,由表4可知,實驗2與實驗1相比,識別率提高了12.4%,充分體現(xiàn)了基于DenseNet網(wǎng)絡(luò)的聲紋識別方法優(yōu)于傳統(tǒng)的MFCC+GMM模型;實驗3與實驗2相比,識別率提高了1.94%,實驗4與實驗2相比,識別率提高了1.9%,說明Center Loss與Softmax Loss相結(jié)合更有利于說話人身份的識別,提高了聲紋識別的識別率;實驗3與實驗4相比,基于深度可分離卷積的DenseNet網(wǎng)絡(luò)與原網(wǎng)絡(luò)的識別率基本接近,說明DenseNet網(wǎng)絡(luò)結(jié)構(gòu)上的改變并未影響網(wǎng)絡(luò)的識別率,還有效地減少了網(wǎng)絡(luò)參數(shù),提高了網(wǎng)絡(luò)的計算效率。
Table 4 Recognition rates comparision of four groups of experiments
(4)特征可視化。
針對實驗2與實驗4,利用PCA(Principal Component Analysis)算法對最后一層全連接層所提取的特征進(jìn)行降維,再進(jìn)行特征可視化,可視化結(jié)果如圖6和圖7所示。由圖6可以看出Softmax Loss雖然能夠?qū)⒚恳活悇e分開,但是同一類別特征比較分散。與圖7進(jìn)行對比,可以明顯看出加入中心損失函數(shù)后,DenseNet網(wǎng)絡(luò)提取的聲紋特征有很好的聚類效果,進(jìn)一步表明改進(jìn)的DenseNet網(wǎng)絡(luò)+Center Loss+Softmax Loss更適合于聲紋識別任務(wù)。
Figure 6 Feature visualization results based on Softmax Loss圖6 基于Softmax Loss的特征可視化結(jié)果
Figure 7 Feature visualization results based on Softmax Loss and Center Loss圖7 基于Softmax Loss 與Center Loss的特征可視化結(jié)果
將DenseNet應(yīng)用于語譜圖實現(xiàn)聲紋識別,從提高網(wǎng)絡(luò)的運(yùn)算效率和增強(qiáng)聲紋特征的表征能力2個方面對DenseNet展開研究,提出采用深度可分離卷積以及增加中心損失函數(shù)項實現(xiàn)對DenseNet的優(yōu)化。實驗結(jié)果表明,與優(yōu)化前比較,網(wǎng)絡(luò)參數(shù)量減少了25.5%,模型大小減少了24.6%;從仿真結(jié)果可以看出,優(yōu)化后的網(wǎng)絡(luò)提取的聲紋特征具有很好的類內(nèi)緊湊性與類間可分離性,特征的表征能力得到了增強(qiáng)。由此可以得出,改進(jìn)后的DenseNet在語譜圖聲紋識別方面具有很好的識別效果,是一種有效的聲紋識別方法。