閆 河 董鶯艷 王 鵬 羅 成 李 煥
1(重慶理工大學計算機科學與工程學院 重慶 400054) 2(重慶理工大學兩江人工智能學院 重慶 400020)
聲紋識別是生物特征識別中重要的組成部分,由于聲紋采集過程簡單、且聲音短期內具有不變的特性,能夠作為身份認證的關鍵特征。其過程是將說話人的語音特征提取,并與原有特征進行比對,當相似度達到一定閾值后確認身份。聲紋識別中的聲紋辨認常應用于刑偵破案、罪犯跟蹤、國防監(jiān)聽、個性化應用等方面,同時在證券交易、銀行交易、公安取證、汽車聲控鎖等方面的聲紋確認研究也逐漸開始。
傳統(tǒng)聲紋識別包括語音信號預處理、特征提取及模型匹配三個階段。其中聲紋特征的提取是識別過程的基礎,特征表達的性能對后續(xù)識別效果影響較大,由于計算機性能的急速發(fā)展,原來受計算機內存限制的深度學習再次發(fā)展起來,學術界在聲紋識別方面的討論也漸漸從傳統(tǒng)方法轉向了深度學習方法[1-3]。在聲紋特征方面,Google提出了d-vector[4]特征,該特征從DNN網(wǎng)絡中最后一層提取激活后的數(shù)據(jù),進行L2正則化后累加,得到d-vector特征向量。x-vector[5]則是從TDNN網(wǎng)絡[6]中提取的降維特征,其中TDNN是時延架構,其輸出層能夠學習長期特征,能利用10 s左右的語音材料,獲取用戶聲紋信息。就目前綜合特征的表達,語譜圖逐漸進入了人們的視野,其能綜合時間方向上的頻率和語音能量的特點,形成具有綜合表征意義、能代表一個人說話特征的語音頻譜圖。
在網(wǎng)絡模型方面,也提出了具有針對性的聲紋識別網(wǎng)絡結構。學術界探討較多的有CNN模型和RNN模型,其中CNN網(wǎng)絡模型被用來提取語音深層次的空間特征[7];循環(huán)神經(jīng)網(wǎng)絡RNN用來提取語音的時序列特征,文獻[8-9]對RNN網(wǎng)絡在聲紋識別效果優(yōu)劣上進行了相關討論。同時也有論文在海量標注數(shù)據(jù)下,使用端到端的方法,在訓練速度和數(shù)據(jù)有效利用率方面進行了相關的研究[10-12]。但是由于語音信號復雜,受環(huán)境和信道的影響較大,僅用CNN提取聲紋特征忽略了序列語音原本的序列特性,RNN網(wǎng)絡雖然考慮了語音的序列特征,但由于網(wǎng)絡本身的激活函數(shù)原因,在模型訓練過程中會產(chǎn)生梯度消失和梯度爆炸的問題,且不容易達到理想的識別效果。
目前在聲紋識別方面,學術界對長短期記憶網(wǎng)絡LSTM(Long Short Term Memory)[14]在聲紋識別方面的相關研究較少,沒有將網(wǎng)絡長期學習的優(yōu)勢與聲紋時序特征進行有效地結合。由于語音中通常包含具有個性聲音的空間特征,和說話語段之間的時序特征,單獨的網(wǎng)絡結構無法將兩種特征進行提取,本文嘗試將CNN和LSTM結合,并在聲紋識別的數(shù)據(jù)庫中進行了有效驗證,得到語譜圖的空間特征和時序特征對模型效果均有影響,CNN-LSTM網(wǎng)絡的識別準確率和損失值均優(yōu)于CNN和LSTM兩個單獨的網(wǎng)絡。
CNN是深度學習中應用廣泛的網(wǎng)絡框架之一,由LeCun于2014年提出的一種前饋神經(jīng)網(wǎng)絡。該網(wǎng)絡在模式分類領域應用尤為突出,避免了前期對圖像的復雜預處理過程,同樣以語譜圖作為語音數(shù)據(jù)輸入網(wǎng)絡,也可減少對語譜圖的處理操作過程。
CNN網(wǎng)絡由兩部分組成,分別是卷積層和池化層。卷積層神經(jīng)元之間進行不完全連接,同樣也使得網(wǎng)絡擁有局部感受野,局部感受野在輸入的圖像上交叉移動,完成整幅圖像的輸入,構建特征的第一個隱藏層。池化是通過減少卷積層之間的連接,來降低運算復雜度。池化方法有多重多樣,常用的池化方法有最大值池化方法和平均值池化方法。由于輸入圖像大小與卷積核相比較大,每次的卷積核移動都會產(chǎn)生數(shù)量較多的參數(shù),其中包括權值和偏置。卷積神經(jīng)網(wǎng)絡中權值和偏置采用共享方法,使網(wǎng)絡自由參數(shù)的個數(shù)減少,加快網(wǎng)絡的計算過程,減少存儲空間的占用。
CNN網(wǎng)絡對圖像特征有著很強的學習能力,上述共享權重的方法能夠減少很大的計算量。對于由語音生成的語譜圖也能過圖像的方式學習具有個人特性的語音特征,并進行建模。
長短期記憶網(wǎng)絡(LSTM)是循環(huán)神經(jīng)網(wǎng)絡(RNN)的一種升級網(wǎng)絡,通過記憶單元解決了學習長期依賴的問題,根據(jù)之前的信息狀態(tài)推斷后續(xù)的信息狀態(tài),進而建立前后信息之間的聯(lián)系。該網(wǎng)絡由Hochreiter & Schmidhuber(1997)提出,并在近期由Alex Graves進行了改進和推廣。LSTM的經(jīng)典之處在于通過設計避免了長期依賴問題,但每個重復單元模塊中的設計卻精致巧妙。相比普通的RNN,LSTM多出三個“門”結構,分別為忘記門、輸入門、輸出門,對輸入的信息進行不同的處理。該設計方案解決了RNN網(wǎng)絡中梯度消失的問題。
LSTM細胞中包含1個或多個細胞核,用來表示單元的當前狀態(tài),上述“三個門”輸出分別連接乘法單元,來控制狀態(tài)變化。LSTM細胞之間的分別接受不同時刻的特征輸入,通過細胞計算后,對應輸出,其關鍵為前后連接的神經(jīng)單元之間的輸入關系,在接受該時刻的輸入的同時,也接受上一時刻信息的輸入。具體LSTM網(wǎng)絡時序關系如圖1所示。
圖1 LSTM時序關系圖
CNN與LSTM均是深度學習中使用的主流算法,但對于處理不同類型的數(shù)據(jù)也各有所長。CNN擅長提取數(shù)據(jù)局部特征,作用于空間上的抽象及泛化,能夠在空間維度上提取表征能力強的高層特征,LSTM網(wǎng)絡能夠擴展時間特征,處理具有先后順序特征的數(shù)據(jù)信息。語音轉換為語譜圖的數(shù)據(jù),以圖片的形式輸入網(wǎng)絡,需要考慮其空間上的特征聯(lián)系,也要考慮時間維度上關聯(lián)信息?;谝陨咸攸c,本文結合CNN網(wǎng)絡及LSTM網(wǎng)絡的特點,采用網(wǎng)絡串聯(lián)的方式,對兩個網(wǎng)絡進行結合。得到本文使用的CNN-LSTM和LSTM-CNN網(wǎng)絡模型,充分利用了兩個網(wǎng)絡空間、時間的表征能力,構建模型如圖2所示。
圖2 CNN-LSTM聲紋識別網(wǎng)絡結構圖
本文采取網(wǎng)絡結構串聯(lián)的方式,將CNN與LSTM網(wǎng)絡連接,形成CNN-LSTM網(wǎng)絡模型。由于語譜圖可以反映說話人在各個時刻語音頻譜隨時間的變化,不同人的語譜圖中包含個性的說話人信息,且語譜圖作為圖片的形式,輸入深度學習網(wǎng)絡,通過CNN網(wǎng)絡能夠更好地提取高表征形式的特征,故將原始語音通過分幀加窗及快速傅里葉變換后,得到可以送入網(wǎng)絡的語譜圖,其大小為106×80的3通道彩色圖像,即輸入網(wǎng)絡的數(shù)據(jù)維度為106×80×3。本文的實驗中說話人個數(shù)為10,說話人標簽以獨熱編碼的形式進行處理,以矩陣的形式輸入網(wǎng)絡。
本文所搭建的模型在訓練前期先隨機斷開20%的神經(jīng)元連接,防止由于數(shù)據(jù)維度多,網(wǎng)絡層數(shù)少而產(chǎn)生過擬合現(xiàn)象。CNN網(wǎng)絡的卷積核數(shù)為20,卷積核大小為3×3,通常較小的卷積核能夠對數(shù)據(jù)特征識別更加細微,且計算量較少。卷積層的激活函數(shù)選用relu。池化層大小為4×4,池化方法選擇最大池化,即選擇4×4范圍內最大的數(shù)值作為新的池化層特征數(shù)據(jù)。經(jīng)過卷積池化后的數(shù)據(jù)送入LSTM網(wǎng)絡進行時序特征提取,由于LSTM為循環(huán)神經(jīng)網(wǎng)絡,為了防止網(wǎng)絡內對數(shù)據(jù)的過分學習,在循環(huán)的神經(jīng)單元內部及循環(huán)之間分別加入Dropout和Recurrent_dropout,分別對同一LTSM單元中神經(jīng)元之間的連接和不同循環(huán)LSTM單元之間的連接進行一定比例暫時斷開,本文進行斷開的比例為0.2,即有20%的內部神經(jīng)元和外部循環(huán)單元進行斷開。最后接入網(wǎng)絡的是Softmax全連接層,對說話人身份進行識別,實驗中的人數(shù)為10,故分類個數(shù)為10,表1為上述結構參數(shù)設置的形象化表達。
表1 CNN-LSTM網(wǎng)絡結構參數(shù)設置表
本實驗基于Python的深度學習框架TensorFlow[14]環(huán)境下進行。實驗環(huán)境如下:
(1) 處理器:Inter(R)Xeon(R)CPU @2.20GHz。
(2) 安裝內存:32.0 GB。
(3) 操作系統(tǒng):Windows 7旗艦版64位操作系統(tǒng)。
為了評估本文網(wǎng)絡模型的有效性,使用CNN-LSTM網(wǎng)絡進行聲紋識別實驗,實驗數(shù)據(jù)采用上述同一數(shù)據(jù)集。
實驗采用的語音數(shù)據(jù)集為來自Open Speech and Language Resources的Free ST Chinese Mandarin Corpus[15],由Surfingtech提供的免費中文普通話語料庫,其中包含855位說話人,每人包含120個語音片段,總計102 600個片段。語音采樣頻率為16 000 Hz。語料庫中的語音片段按照8∶2的比例對訓練集和測試集進行劃分,其中每人的語音片段中隨機抽取80%部分作為模型的訓練集,訓練個數(shù)為96個,剩余20%部分24個作為驗證測試集,對模型的準確率等性能進行驗證評價,分別對比相同訓練集下不同迭代次數(shù)對準確率及損失函數(shù)的影響。
本文采用準確度ACC(accuracy)和損失函數(shù)(Loss)作為評價標準,其中實驗中使用對數(shù)損失函數(shù)。計算方法如下所示:
(1)
Loss=L(Y,P(Y|X))=-logP(Y|X)
(2)
式中:n表示說話人數(shù)目;Pi表示第i個說話人的精確度;TPi、FNi分別表示第i個說話人中正確分類的數(shù)目和錯誤分類的數(shù)目。Y表示類別正確的分類,P(Y|X)表示正確分類的概率,Loss表示為指定分類Y的情況下,概率越大,樣本與目標值越接近,則損失越小。
本文實驗中采用10個說話人的每人120個語音片段,由于選取的語音片段時常在3~4 s范圍內,為了統(tǒng)一語譜圖大小,將語音片段中不足4 s的以留白方式處理,使其統(tǒng)一至4 s,然后通過傅里葉變化將語音的時序信息、頻率信息和語音數(shù)據(jù)能量繪制成106 dpi×80 dpi大小的語譜圖,作為網(wǎng)絡模型的輸入數(shù)據(jù)。
本文通過對空間特征和時序特征提取,構建了CNN-LSTM模型,實驗中設置的迭代次數(shù)為20次,為了驗證本文的CNN-LSTM模型對聲紋識別的有效性和魯棒性,實驗對比了目前在深度學習領域取得優(yōu)異成果的CNN網(wǎng)絡和LSTM網(wǎng)絡,二者分別是模型中的單獨部分與softmax分類器相結合組成的兩個網(wǎng)絡模型。
圖3為實驗結果圖,分別為CNN-LSTM、CNN、LSTM在測試集中的準確率和損失函數(shù)變化。
圖3 CNN-LSTM模型及LSTM和CNN測試集準確率變化圖
由圖3可知,在測試過程中CNN-LSTM網(wǎng)絡的準確率圖像包含CNN和LSTM網(wǎng)絡,即說明CNN-LSTM網(wǎng)絡對于聲紋識別的準確率基本高于其他兩個網(wǎng)絡。CNN-LSTM網(wǎng)絡的準確率隨著迭代次數(shù)平穩(wěn)上升,但CNN和LSTM網(wǎng)絡在上升過程中波動較大,表明這兩種模型對于數(shù)據(jù)的學習平穩(wěn)性能低于CNN-LSMT網(wǎng)絡。針對CNN和LSTM網(wǎng)絡分析,LSTM網(wǎng)絡的準確率明顯高于CNN網(wǎng)絡,表明語譜圖序列中時序列的特征提取性能LSTM網(wǎng)絡高于CNN網(wǎng)絡,且表明語譜圖中具有有效的時序列特征影響聲紋識別結果。實驗中測試集中CNN-LSTM準確率96.05%(訓練集數(shù)據(jù)只表示最優(yōu)結果),測試準確率95.42%。
圖4為CNN-LSTM和CNN、LSTM網(wǎng)絡在測試時的損失函數(shù)變化圖,由圖4可以看出,CNN-LSTM網(wǎng)絡一直處于下降趨勢,且變化過程平穩(wěn)。最終達到訓練損失函數(shù)值0.086 9,測試損失函數(shù)0.097 3的低值。說明CNN-LSTM網(wǎng)絡的魯棒性較高。CNN和LSTM網(wǎng)絡的損失函數(shù)值在下降到約0.3左右后變化緩慢趨于平穩(wěn),且CNN的損失函數(shù)在下降過程中抖動頻繁,表明該模型不具有較穩(wěn)定的魯棒性能,表2為CNN-LSTM及CNN、LSTM網(wǎng)絡在訓練和測試過程中準確率(ACC)最大值和損失函數(shù)(Loss)最小值的比較。
圖4 CNN-LSTM模型及LSTM和CNN測試集損失值變化圖
表2 CNN、LSTM和CNN-LSTM網(wǎng)絡訓練測試最值
如表2所示,CNN-LSTM網(wǎng)絡在訓練和測試時準確率和損失函數(shù)均優(yōu)于其他兩個網(wǎng)絡結構下的數(shù)值。更加印證了語音特征中包含空間特征和時序特征,單一特征對聲紋識別影響較大,無法滿足實際使用。
目前參考文獻范圍內,基于深度神經(jīng)網(wǎng)絡DNN(Deep Neural Network)在聲紋識別應用中取得令人矚目的成績,在相同數(shù)據(jù)集下,采用DNN網(wǎng)絡進行對比實驗,由于DNN網(wǎng)絡結構深,對特征進行充分學習和網(wǎng)絡參數(shù)進行完全訓練需要大量的循環(huán)迭代次數(shù)。實驗迭代結果如表3所示,表示迭代次數(shù)中不同網(wǎng)絡測試集中準確率結果。
表3 CNN、LSTM、DNN和CNN-LSTM網(wǎng)絡迭代次數(shù)對應準確率表
如表3所示,在迭代次數(shù)較少時,DNN網(wǎng)絡在以上幾個網(wǎng)絡中表現(xiàn)性能并不凸顯,這受到網(wǎng)絡深層結構和參數(shù)設置的限制。由于DNN網(wǎng)絡在20次迭代中,準確率成逐漸上升趨勢,但沒有趨于平緩,進行實驗后,發(fā)現(xiàn)迭代次數(shù)達到300左右時,準確率趨于平穩(wěn)并達到94.15%。
本文設計的CNN-LSTM網(wǎng)絡能夠在較少次數(shù)的迭代中達到95.42%的準確率,從時間效率和準確率上均優(yōu)于現(xiàn)有DNN網(wǎng)絡,故更加驗證了本文提出的基于語音的空間特征和時序特征相結合的CNN-LSTM網(wǎng)絡的有效性。
通過對比CNN-LSTM和CNN、LSTM網(wǎng)絡模型,對聲紋識別進行測試,發(fā)現(xiàn)CNN-LSTM網(wǎng)絡模型能夠很好地對語音空間特征及時間特征進行學習,對說話人身份識別認證有著較高的準確率。達到了95.12%的準確率和0.097 3的損失低值。通過與CNN、LSTM及DNN網(wǎng)絡進行對比實驗,驗證了該模型在聲紋識別方向的優(yōu)勢。本文在傳統(tǒng)聲紋識別的基礎上,提出了新的高準確率識別方法,為聲紋識別實際應用提供了新的思路及方法。