張玉杰,張 贊
(陜西科技大學電氣與控制工程學院,陜西 西安710021)
聲紋識別是一種生物識別技術,可根據一段語音識別出說話人的身份[1]。從傳統的高斯混合模型GMM(Gaussian Mixture Model)[2]到深度學習算法[3 - 5],聲紋識別技術得到了快速發展。近年來,隨著語譜圖的出現,研究者提出采用語譜圖與卷積神經網絡相結合的方式進行說話人身份識別[6 - 8],其優勢在于語譜圖具有很強的綜合表征能力,能夠充分表示說話人身份的完整信息,且卷積神經網絡CNN(Convolutional Neural Network)擅于提取特征的能力,使聲紋識別系統的識別性能得到大幅度提升。
針對基于語譜圖的聲紋識別算法的研究目前仍處于初級階段,文獻[6-8]將卷積神經網絡視為一種特征提取器,所用卷積層數較少,網絡的表達能力有限。而基于端到端的深度卷積神經網絡模型不僅能夠利用深層的網絡結構提取深度特征,而且端到端的方式使CNN具有特征提取與分類2種能力。DenseNet(Dense convolutional Network)作為一種端到端的網絡模型,采用密集連接結構一方面能夠構建更深層次的網絡,另一方面加強了特征傳播,在圖像分類領域取得了較好的效果[9,10]。本文借鑒圖像處理的方法,將DenseNet應用于語譜圖聲紋識別中,以提高聲紋識別的識別率。但是,利用DenseNet進行聲紋識別時,存在以下問題:聲紋識別在許多場合下需要在嵌入式設備上進行,大量的卷積池化操作會帶來網絡參數量的增加,導致在提取聲紋特征時網絡的存儲數據量增大,計算效率降低,不利于在對參數量有嚴格限制的嵌入式環境中運行;采用Softmax 損失訓練的DenseNet網絡提取的特征只具有可分離性,未考慮類內的緊湊性,使特征沒有很好的表征性能,降低了聲紋識別的精確度。
本文將DenseNet用于語譜圖處理實現聲紋識別,從減少網絡參數量以及提高聲紋特征表征能力2個方面展開研究,對DenseNet進行優化,提高DenseNet在語譜圖聲紋識別中的識別效果。
語譜圖[11]是將語音信號的頻域特性通過時間域上的累積而形成的一種二維圖像,動態地顯示了語音頻譜與時間之間的變化關系。語譜圖中包含對應時刻頻率與能量強度組成的空間特征信息以及隨時間變化的時序特征信息,這些信息根據顏色的深淺形成了不同的紋理,在這些紋理中包含了大量的說話人的個性特征信息,根據語譜圖紋理的區別,可以鑒別不同的說話人。
語譜圖的生成過程如圖1所示。依據語音信號的短時平穩特性將語音信號分割為若干幀信號,再對每一幀信號加窗處理,然后進行傅里葉變換得到信號的幅頻特性,通過對幅度值進行對數變換和彩色映射獲得語音信號對應的語譜圖。

Figure 1 Generation process of the spectrogram圖1 語譜圖的生成過程
借鑒基于深度學習的圖像處理方法,按照圖1的過程生成說話人的語譜圖,將語譜圖作為原始數據,輸入至DenseNet網絡中進行聲紋識別。按照語譜圖的處理要求,DenseNet的網絡結構如圖2所示,主要由1個初始卷積、N個密集連接模塊(Dense Block)、多個傳輸層(Transition Layer)和1個分類層(Classification Layer)組成。Dense Block結構圖如圖3所示,x0,x1,…,xl-1為第0層到第l-1層的特征圖,通過對各層特征圖的拼接,再經過非線性變換Hl(*)得到第l層的特征圖xl,其過程如式(1)所示:
xl=Hl([x0,x1,…,xl-1])
(1)
其中,非線性變換H(*)由一個1×1卷積和一個3×3的卷積組成,1×1卷積被稱為瓶頸層(Bottleneck Layer),其輸出通道數為4k(k是一個超參數,被稱為增長率),其作用是既融合了各個通道的特征,又通過降維減少了輸入到3×3卷積的特征圖數量,減少網絡的計算量。

Figure 2 Network structure of DenseNet 圖2 DenseNet網絡結構

Figure 3 Network structure of densely connected modules 圖3 密集連接模塊的網絡結構
為了防止隨著網絡層數的增加,特征維度增長過快,Dense Block模塊之間通過Transition Layer連接。假設傳輸層的輸入通道數為k,采用1×1卷積產生θ×k個特征,當0<θ<1時傳輸層起到模型壓縮的作用,再通過2×2池化操作縮小特征圖大小,減少網絡的參數量。
將DenseNet應用于聲紋識別對語譜圖進行處理時,可以將語譜圖看作是一種紋理圖像,說話人的語音個性特征體現在像素間的空間幾何特征與時序特征上,利用DenseNet進行聲紋識別時,利用其特征重用特性和對卷積池化層累積的特性,語音原本的序列特性可得到充分體現。但是,隨著卷積池化層的增多,網絡的數據量隨之增大,DenseNet的瓶頸層和傳輸層分別采用小的卷積核對特征圖的維度進行壓縮,在一定程度上減少了網絡的參數量。但由于網絡層數的加深,網絡的參數量與計算量仍處于“超重”狀態,不利于在資源有限的嵌入式平臺上實現聲紋識別。
DenseNet的Classification Layer由全局池化層、全連接層和Softmax層組成,經過全局池化層和全連接層能夠得到語譜圖中描述說話人的語音特征,再用Softmax函數進行歸一化處理得到每個說話人的概率。DenseNet使用交叉熵損失函數作為目標函數,通過網絡訓練劃分不同說話人類別。但是,對于聲紋識別來說,該方法只考慮到類內的距離,提取到的聲紋特征并沒有更好的表征能力,不足以實現說話人身份的精確識別。
針對DenseNet應用于聲紋識別領域存在參數量大、特征表征能力弱的情況,本文對網絡進行優化。一方面在不損失精度的前提下,對網絡結構進行優化以減少參數量;另一方面通過多個損失函數的聯合監督訓練,增強聲紋特征的表征能力,實現說話人身份的精確識別。
深度可分離卷積DSC(Depth Separable Convolution)是一種能夠有效減少網絡參數量的方法,本文將其應用至DenseNet網絡中以降低算法的運算復雜度。
本文設計的DenseNet網絡結構如表1所示,采用了4個密集連接模塊和3個傳輸層。其中,4個密集連接模塊的密集連接單元個數分別為6,12,24和16。為了減少網絡的參數量,使用深度可分離卷積將Dense Block模塊中3×3的標準卷積分為一個3×3深度卷積DW(Depthwise Convolution)和一個1×1逐點卷積PW(Pointwise Convolution)。DW卷積的作用是對每一個輸入通道的特征圖做單獨卷積,一個卷積核負責一個通道;再利用PW卷積對DW卷積產生的特征圖進行組合,改變輸出通道數。

Table 1 Network structure of improved DenseNet
在模型訓練中,假設瓶頸層輸出大小為H×W×N的特征圖,利用3×3的卷積核進行卷積操作后,輸出大小為H×W的P通道特征圖,則標準卷積參數量PSC與計算量FSC分別如式(2)和式(3)所示:
PSC=3×3×P×N
(2)
FSC=H×W×3×3×N×P
(3)
而深度可分離卷積的參數量PDSC與計算量FDSC分別如式(4)和式(5)所示:
PDSC=3×3×N+N×P
(4)
FDSC=H×W×32×N+H×W×N×P
(5)
深度可分離卷積與標準卷積的計算量與參數量之比如式(6)所示:
(6)
因此,采用深度可分離卷積,在模型的精度損失較小的情況下運算量減少近8~9倍,極大地提高了模型的運算效率。
為了提高聲紋特征的表征能力,使特征具有很好的類內緊湊性和類間可分離性,本文采用Softmax損失函數(Softmax+交叉熵損失函數)與中心損失函數(Center Loss)[12]聯合監督的方式來訓練DenseNet,其損失函數的具體表達式如式(7)所示:
L=Ls+λLc
(7)
其中,L表示總損失,Ls表示Softmax損失,Lc表示中心損失,λ用于平衡2個損失函數。其中Softmax損失函數的表達式如式(8)所示:
(8)
其中,xi表示第i個特征;yi是xi的真實類別標簽;Wyi與Wj分別表示將xi判別為yi類和第j類的權重向量,即最后全連接層中權重W的第yi和第j列;byi與bj分別表示yi類和第j類的偏置項;m表示小批量(mini-batch)的大小。
Center Loss損失函數如式(9)所示:
(9)
其中,cyi表示第yi類特征的類中心。可以看出,中心損失函數為每一個類別提供一個類別中心,使參與訓練的每一個樣本都能向同一類別的中心靠攏,達到聚類的效果。
由式(8)和式(9)可以得到,在Softmax損失的監督下訓練的網絡可以劃分不同類別,但未曾考慮類內特征的緊湊性;中心損失雖然最小化了類內距離,但并未考慮類間的可分離性。因此,采用兩者相結合的方式對算法進行尋優,可以擴大類內的緊湊性和類間可分離性,實現說話人身份的高精度判別。
實驗采用的語音數據集來自希爾貝殼中文普通話AISHELL-ASR0009OS1開源語音數據庫,400名發言人參與錄制,分別來自中國不同口音區域,錄制過程在安靜的室內環境中進行,每人錄制300多個語音片段,同一人的語音放在一個文件夾下,隨機抽取10人的語音進行實驗,一段語音被截取為1.5 s時長的語音片段,按照8∶2的比例分為訓練集與測試集,訓練集包括41 909幅語譜圖,測試集包括10 472幅語譜圖。
硬件平臺:GPU:NVIDIA Tesla V100;RAM:32 GB;顯存:16 GB;操作系統:Ubuntu 16.04LTS,實驗基于Keras框架。首先對語音信號進行處理,語音信號的采樣率為11 025 Hz,幀長為25 ms,則傅里葉變換點數為256,每幀語音信號的長度為256,幀疊為128,按照圖1所示的方法得到說話人的語譜圖大小為119×129,隨機挑選2人的語譜圖如圖4所示,圖中明顯的橫方向的條紋,稱之為“聲紋”,不同說話人的語譜圖聲紋紋理有所區別。

Figure 4 Spectrogram with 119×129 圖4 119×129語譜圖
為了驗證本文聲紋識別算法的有效性,設計4組實驗進行對比,具體實驗細節如表2所示。

Table 2 Experimental grouping
實驗1為梅爾倒譜系數MFCC(Mel Frequency Cepstral Coefficients)+高斯混合模型GMM分類方法中,MFCC采用16維特征,GMM的階數為10階。實驗2和實驗3采用的網絡結構參數如表1中的“DenseNet”部分所示,實驗4采用的網絡結構參數如表1中的“改進的DenseNet”部分所示。其中,Dense Block模塊的增長率k設置為32;Transition層的壓縮系數為0.5,即特征圖通過傳輸層特征維度減少一半;中心損失函數的中心學習率設置為0.6,λ取0.01。本次實驗采用Adam優化器,批量大小為64,學習率設置為0.001,迭代次數為40次。定義識別率為性能評價指標,即識別正確的語音片段的數量與測試數據集中的總語音片段數量的比值。
(1)收斂性分析。
通過對實驗2~實驗4進行仿真訓練,模型損失值與迭代次數的關系如圖5所示。由圖5可以看出,實驗2比實驗3和實驗4的收斂速度更快,而實驗3和實驗4的收斂速度比較接近。說明在Softmax損失的監督下,DenseNet網絡能夠很快收斂,Center Loss的加入對網絡的收斂速度有一定的抑制作用,但是隨著迭代次數的增加,3組實驗的Loss值都呈下降趨勢且趨于平穩,表明3組實驗的網絡都可以正常收斂。

Figure 5 Effect of epoch on Loss value圖5 迭代次數對Loss值的影響
(2)模型大小與參數量。
原DenseNet網絡與基于深度可分離卷積的DenseNet網絡的參數量和模型大小如表3所示,改進的DenseNet網絡的參數量減少了25.5%,模型大小減少了24.6%。

Table 3 DenseNet network model size
(3)識別率。
表4反映了4組實驗的識別率,由表4可知,實驗2與實驗1相比,識別率提高了12.4%,充分體現了基于DenseNet網絡的聲紋識別方法優于傳統的MFCC+GMM模型;實驗3與實驗2相比,識別率提高了1.94%,實驗4與實驗2相比,識別率提高了1.9%,說明Center Loss與Softmax Loss相結合更有利于說話人身份的識別,提高了聲紋識別的識別率;實驗3與實驗4相比,基于深度可分離卷積的DenseNet網絡與原網絡的識別率基本接近,說明DenseNet網絡結構上的改變并未影響網絡的識別率,還有效地減少了網絡參數,提高了網絡的計算效率。

Table 4 Recognition rates comparision of four groups of experiments
(4)特征可視化。
針對實驗2與實驗4,利用PCA(Principal Component Analysis)算法對最后一層全連接層所提取的特征進行降維,再進行特征可視化,可視化結果如圖6和圖7所示。由圖6可以看出Softmax Loss雖然能夠將每一類別分開,但是同一類別特征比較分散。與圖7進行對比,可以明顯看出加入中心損失函數后,DenseNet網絡提取的聲紋特征有很好的聚類效果,進一步表明改進的DenseNet網絡+Center Loss+Softmax Loss更適合于聲紋識別任務。

Figure 6 Feature visualization results based on Softmax Loss圖6 基于Softmax Loss的特征可視化結果

Figure 7 Feature visualization results based on Softmax Loss and Center Loss圖7 基于Softmax Loss 與Center Loss的特征可視化結果
將DenseNet應用于語譜圖實現聲紋識別,從提高網絡的運算效率和增強聲紋特征的表征能力2個方面對DenseNet展開研究,提出采用深度可分離卷積以及增加中心損失函數項實現對DenseNet的優化。實驗結果表明,與優化前比較,網絡參數量減少了25.5%,模型大小減少了24.6%;從仿真結果可以看出,優化后的網絡提取的聲紋特征具有很好的類內緊湊性與類間可分離性,特征的表征能力得到了增強。由此可以得出,改進后的DenseNet在語譜圖聲紋識別方面具有很好的識別效果,是一種有效的聲紋識別方法。