高曉利,李 捷,王 維,趙火軍,駱明偉
(四川九洲電器集團(tuán)有限責(zé)任公司 四川 綿陽(yáng) 621000)
聲紋識(shí)別是重要的身份鑒別技術(shù),有著廣泛的應(yīng)用領(lǐng)域,如軍事安全、信息安全等[1]。同類聲源的不同個(gè)體間的聲音非常相似,無(wú)法通過(guò)人耳進(jìn)行判別,但是這些相似的聲音具有不同的特征參數(shù)[2]。從聲音中提取一組反映個(gè)體特征的聲學(xué)參數(shù)構(gòu)成個(gè)體聲紋是一個(gè)復(fù)雜的過(guò)程,也是聲紋識(shí)別的關(guān)鍵。
根據(jù)聲音信號(hào)的聲學(xué)特殊性,已經(jīng)提出一些有效的聲學(xué)特征提取方法,如MFCC(Mel-Frequency Cepstral Coefficients)參數(shù),它是將聲音信號(hào)的頻譜通過(guò)非線性變換轉(zhuǎn)換為Mel頻率,然后再轉(zhuǎn)換到倒譜域上,從而獲得MFCC 參數(shù),但MFCC 參數(shù)方法在加入背景噪聲后分析性能變差。如果信號(hào)的一個(gè)頻率被噪音污染,那么該方法無(wú)法有效阻止噪音在整個(gè)特征向量上擴(kuò)散[3]。文獻(xiàn)[4]提出了基于小波分析的聲源識(shí)別方法,但小波變換具有左遞歸的性質(zhì),高頻區(qū)間存在著時(shí)域分辨率的差異,并且一定存在著最差分辨率的區(qū)間[5]。小波包變換能夠解決小波變換由于沒(méi)有對(duì)同一尺度上的細(xì)節(jié)作進(jìn)一步分解,造成高頻信息不能得到很好地處理這一問(wèn)題[6]。文獻(xiàn)[7]使用小波包分析+BP 神經(jīng)網(wǎng)絡(luò),逐層分析信號(hào)在各子頻段的能量譜,獲取信號(hào)更精細(xì)的頻域信息。該方法在頻域上能獲取更豐富的特征,但忽略了聲音信號(hào)的時(shí)域連續(xù)性。
而聲譜圖是聲音信號(hào)在頻率和時(shí)間維度上的二維圖像,其縱軸為時(shí)間,橫軸為頻率,灰度為幅值。使用聲譜圖作為聲音信號(hào)的特征提取方式,獲取圖像形式的二維聲紋特征作為分類識(shí)別階段的輸入。CNN 擅長(zhǎng)處理圖像信息,適用于處理聲譜圖中的“紋理”信息。文獻(xiàn)[8]提出了通過(guò)CNN 完成聲紋識(shí)別的方法。然而,聲譜圖中不僅包含表現(xiàn)聲音片段的“紋理”特征,還有時(shí)域上的前后關(guān)聯(lián)特征,使用CNN 仍不能充分挖掘聲譜圖中的信息。RNN模型的網(wǎng)絡(luò)結(jié)構(gòu)可以表達(dá)前后信息相關(guān)的時(shí)序效果,所以在時(shí)序信息處理方面有很大的優(yōu)勢(shì)[9]。通過(guò)將擅長(zhǎng)時(shí)序建模的RNN 對(duì)CNN 的輸出進(jìn)行更進(jìn)一步分析,建立改進(jìn)的CRNN,充分挖掘聲譜圖中所包含的聲紋特征,完成更全面的識(shí)別模型建立。
本文通過(guò)聲譜圖完成聲音信號(hào)特征提取,采用網(wǎng)絡(luò)參數(shù)優(yōu)化的改進(jìn)CRNN 完成模型訓(xùn)練和測(cè)試。首先介紹系統(tǒng)的總體結(jié)構(gòu),分析各部分的實(shí)現(xiàn)原理,最后通過(guò)仿真驗(yàn)證方法的有效性。
系統(tǒng)分為訓(xùn)練和測(cè)試兩部分,如圖1 所示。在訓(xùn)練階段,發(fā)動(dòng)機(jī)聲音通過(guò)聲譜圖分析后得到聲紋特征,按照分類標(biāo)簽信息存儲(chǔ)在聲紋數(shù)據(jù)庫(kù)。利用訓(xùn)練數(shù)據(jù)訓(xùn)練由CNN 和RNN 共同構(gòu)成的深度學(xué)習(xí)網(wǎng)絡(luò)模型。在測(cè)試階段,先進(jìn)行測(cè)試聲音數(shù)據(jù)的聲譜圖提取,再結(jié)合在訓(xùn)練階段獲取的深度學(xué)習(xí)模型,得到判別結(jié)果。根據(jù)最終統(tǒng)計(jì)結(jié)果,評(píng)估系統(tǒng)的識(shí)別率。
圖1 聲紋個(gè)體識(shí)別系統(tǒng)
在特征提取階段獲取的特征向量應(yīng)能對(duì)不同聲源有所區(qū)分。傳統(tǒng)傅里葉變換適用于分析平穩(wěn)信號(hào),而不適用于分析非平穩(wěn)信號(hào)或暫態(tài)信號(hào)。聲譜圖分析適用于各類聲音信號(hào)的分析,是一種時(shí)頻分析方法。聲譜圖是表示聲音信號(hào)頻譜隨時(shí)間變化的圖形。
聲譜圖分析方法通過(guò)對(duì)聲音信號(hào)進(jìn)行交疊分段的短時(shí)傅里葉變換,是一種在時(shí)域上連續(xù)分析頻域特征的方法。任一時(shí)刻的某頻率成分的強(qiáng)弱用相應(yīng)的灰度深淺來(lái)表示,綜合了頻譜圖和時(shí)域波形的特點(diǎn),聲譜圖分析過(guò)程如圖2 所示。首先對(duì)聲音信號(hào)進(jìn)行預(yù)處理,該過(guò)程包含歸一化、分幀和加窗。進(jìn)行特征提取前進(jìn)行歸一化處理,可以消除信號(hào)采集時(shí)引入的發(fā)動(dòng)機(jī)聲音音量大小差異造成的后期分析誤差。歸一化處理采用式(1)所示方法:
其中,Si是聲音信號(hào)離散序列S 的第i 個(gè)元素,μ 和σ 分別是其絕對(duì)值和標(biāo)準(zhǔn)差。Spi是歸一化的序列Sp的第i 個(gè)元素。
圖2 聲譜圖分析流程
根據(jù)聲音信號(hào)的短時(shí)平穩(wěn)原則,每幀取20 ms~50 ms長(zhǎng)度。為了使幀與幀之間平滑過(guò)渡,分幀一般采用交疊分段,由此保持聲音信號(hào)的連續(xù)性。每一幀加窗后,按照0.5 幀長(zhǎng)進(jìn)行滑窗,進(jìn)行頻譜分析,求取該幀長(zhǎng)信號(hào)的能量譜。將每幀的能量譜再按照時(shí)間序列進(jìn)行連接,獲得該聲音片段的聲譜圖。
目標(biāo)聲紋圖是目標(biāo)聲音信號(hào)的視覺(jué)表征,根據(jù)不同的聲音特征反映出不同的“紋路”特征,因此,采用更適用于圖像特征提取的CNN 進(jìn)行下一步特征提取。CNN 是深度學(xué)習(xí)領(lǐng)域重要的網(wǎng)絡(luò)模型之一,是一種層與層之間局部連接的神經(jīng)網(wǎng)絡(luò)[10]。
本文方法用CNN 從聲譜圖中提取聲紋的特征參數(shù),再通過(guò)RNN 對(duì)特征信息進(jìn)行時(shí)序建模。RNN 和CNN 在建模能力上各有所長(zhǎng),RNN 可以用于描述時(shí)間上連續(xù)狀態(tài)的輸出,有記憶功能,而CNN 用于靜態(tài)輸出,共同構(gòu)成CRNN 同時(shí)具有時(shí)間和空間的特性。
1.2.1 基于CNN 的聲譜圖特征提取方法
卷積神經(jīng)網(wǎng)絡(luò)一般由若干個(gè)卷積層- 激活層-池化層-批處理層的結(jié)構(gòu)組成,如圖3 所示。
圖3 CNN 結(jié)構(gòu)
其中,卷積層中奇數(shù)尺寸的濾波器能獲取到更好的中心特征,故卷積核設(shè)為奇數(shù)[11]。激活層采用ReLU 激活函數(shù),池化層采用Max Pooling 方式。同時(shí)通過(guò)批處理加快網(wǎng)絡(luò)收斂速度。
傳統(tǒng)的池化方法會(huì)同時(shí)在時(shí)域和頻域方向上進(jìn)行池化,而這樣會(huì)丟失聲譜圖中的時(shí)序信息。有別于傳統(tǒng)池化層,本文方法將只在頻率上作池化以保留聲譜圖的時(shí)序信息,故池化窗大小為(2*1)。
1.2.2 基于改進(jìn)CRNN 的聲紋個(gè)體識(shí)別
僅通過(guò)CNN 提取聲譜圖特征的方法沒(méi)有充分挖掘和利用聲音信號(hào)的時(shí)序特征,而RNN 作為一種反饋神經(jīng)網(wǎng)絡(luò),網(wǎng)絡(luò)中的輸出結(jié)果不但與當(dāng)前輸入信息以及網(wǎng)絡(luò)權(quán)重有關(guān),還與之前時(shí)刻信息輸入相關(guān),能夠充分利用時(shí)間序列優(yōu)勢(shì),其網(wǎng)絡(luò)結(jié)構(gòu)如圖4 所示。中間隱藏層中的神經(jīng)元相互連接,其中每個(gè)神經(jīng)元的輸入既包括當(dāng)前時(shí)刻輸入層的數(shù)據(jù),也包括前一時(shí)刻隱藏層的輸出。通過(guò)隱藏層和輸入層的連接,將t-1 時(shí)刻的隱藏層狀態(tài)作為t 時(shí)刻輸入的一部分[12]。T 既為時(shí)序長(zhǎng)度,C 為經(jīng)由CNN 提取的特征數(shù),F(xiàn) 為頻率方向的長(zhǎng)度。
圖4 RNN 結(jié)構(gòu)
本文方法利用RNN 在時(shí)間序列建模的優(yōu)勢(shì),完成進(jìn)一步的分類和識(shí)別。從CNN 輸出的特征向量維度是C×(F×T)。用一個(gè)時(shí)間序列來(lái)重新表示CNN 的輸出,時(shí)間序列長(zhǎng)度為T,S={S1,S2,…,Si,…,ST},Si是大小為C×F 的向量,將CNN 的輸出轉(zhuǎn)置為T 個(gè)大小為C×F 的向量,即從“特征數(shù)頻率時(shí)間”向量轉(zhuǎn)置為“時(shí)間頻率特征數(shù)”向量來(lái)作為RNN的輸入,兩個(gè)網(wǎng)絡(luò)間的對(duì)應(yīng)關(guān)系如圖5 所示。從RNN 輸出的向量個(gè)數(shù)與時(shí)序長(zhǎng)度T 對(duì)應(yīng),這里只采用最終時(shí)刻的輸出,即對(duì)應(yīng)圖4 中T 時(shí)刻輸出的數(shù)據(jù),經(jīng)過(guò)Softmax 分類器進(jìn)行分類。
本文實(shí)驗(yàn)平臺(tái)為聯(lián)想ThinkStation,搭載NVIDIA K420 GPU。采用主流的深度學(xué)習(xí)框架TensorFlow 進(jìn)行訓(xùn)練和驗(yàn)證。
實(shí)驗(yàn)數(shù)據(jù)來(lái)自實(shí)采的13 輛不同汽車(其中兩輛為同型號(hào))的發(fā)動(dòng)機(jī)聲音,涵蓋了發(fā)動(dòng)機(jī)的啟動(dòng)、平穩(wěn)運(yùn)行、若干次加速、停止運(yùn)行全過(guò)程,由此涵蓋發(fā)動(dòng)機(jī)所有可能的工作狀態(tài)。聲音信號(hào)參數(shù)及特征提取階段對(duì)聲音信號(hào)的處理參數(shù)如表1 所示。
圖5 CNN+RNN 深度學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu)
表1 特征提取參數(shù)
80%的聲音片段作為訓(xùn)練數(shù)據(jù),用于網(wǎng)絡(luò)模型訓(xùn)練,余下的20%聲音片段用于對(duì)模型的測(cè)試驗(yàn)證。聲音片段有24 000/s 個(gè)數(shù)據(jù)點(diǎn),幀移設(shè)置為240,則可獲得100 幀/s數(shù)據(jù)。幀長(zhǎng)取768 個(gè)數(shù)據(jù)點(diǎn),對(duì)應(yīng)聲音信號(hào)短時(shí)平穩(wěn)的30 ms長(zhǎng)度。最初生成的聲譜圖大小為768*100,其中,100 對(duì)應(yīng)1 s的100幀,768 對(duì)應(yīng)聲譜圖頻域的0~24 kH z。
考慮到過(guò)高的頻率分量已經(jīng)不屬于有用信息,大多屬于噪聲信號(hào),在多次仿真實(shí)驗(yàn)和訓(xùn)練基礎(chǔ)上,最終選擇在頻域方向上作1/8 裁剪,以減少噪聲等冗余信息,同時(shí)減少CRNN 深度學(xué)習(xí)網(wǎng)絡(luò)的數(shù)據(jù)處理量。最終作為CRNN 輸入的聲譜圖大小為96 100。如下頁(yè)圖6 所示是某片段的原始時(shí)域圖和聲譜圖,既包含每幀的能量譜信息,又保證了時(shí)間上每幀的平滑過(guò)渡連續(xù)性。
下頁(yè)表2 是識(shí)別仿真中不同參數(shù)的網(wǎng)絡(luò)以及各自的識(shí)別率。仿真中CNN 網(wǎng)絡(luò)共4 層,每層提取的特征數(shù)目為32/64/128/128,批處理batch 大小為8。卷積層采用的卷積窗大小為(5×5),實(shí)驗(yàn)輸出標(biāo)簽為1 到13,分別對(duì)應(yīng)13 臺(tái)車輛的發(fā)動(dòng)機(jī)。
圖6 某聲音片段原始時(shí)域圖和對(duì)應(yīng)聲譜圖
表2 識(shí)別網(wǎng)絡(luò)參數(shù)及結(jié)果
為了證明時(shí)序信息的重要性,改進(jìn)CRNN 作為實(shí)驗(yàn)組在池化層不對(duì)時(shí)序方向作池化,即池化區(qū)域設(shè)置為(1×2),經(jīng)過(guò)4 層卷積和池化處理后的CNN網(wǎng)絡(luò)輸出是128 張大小為6×100 的小聲譜圖,特征映射的數(shù)量即為128,6 和100 分別是輸出圖的高度和寬度,最終輸出向量為128×(6×100),轉(zhuǎn)置后輸入到RNN 的向量為100×(1 286)。普通CRNN作為對(duì)照組的池化區(qū)域大小設(shè)置為(2×2),最終輸出向量為128×(6×6),轉(zhuǎn)置后輸入到RNN 的向量為6×(128×6)。RNN 網(wǎng)絡(luò)分別設(shè)置為3/5/7 層以作對(duì)比,每層大小為768。
從表2 中可以看出,相對(duì)普通CRNN,在使用相同層數(shù)的CNN 和RNN 情況下,改進(jìn)CRNN 的識(shí)別率有所提高。這是因?yàn)楦倪M(jìn)CRNN 在池化層的參數(shù)調(diào)整,沒(méi)有對(duì)時(shí)間維度的信息作池化處理而得到的結(jié)果。加入RNN 后的網(wǎng)絡(luò)識(shí)別率隨著RNN 的層數(shù)增加而升高,而同時(shí)網(wǎng)絡(luò)模型也變大。
同時(shí),僅使用普通CNN 處理聲譜圖“紋理”信息時(shí)的識(shí)別率低于加入RNN 處理時(shí)序信息后的識(shí)別率。其模型尺寸超過(guò)了加入3 層RNN 后的網(wǎng)絡(luò)模型,原因是全連接層處理的數(shù)據(jù)量(6×6×128)多于后者CRNN 中處理的(6×128)。在只使用CNN的情況下,對(duì)池化區(qū)域作特殊處理對(duì)提高識(shí)別率幫助不大,且由于輸出的數(shù)據(jù)量(128×6×100)太大,使得后期全連接層的模型尺寸也更大,導(dǎo)致整個(gè)模型尺寸達(dá)到了909 Mb。
本文在特征提取階段使用聲譜圖分析提取發(fā)動(dòng)機(jī)的聲紋特征,使用這些特征參數(shù)在分類識(shí)別階段完成基于改進(jìn)CRNN 的深度學(xué)習(xí)網(wǎng)絡(luò)模型的訓(xùn)練,充分利用卷積網(wǎng)絡(luò)的圖像處理優(yōu)勢(shì)和遞歸神經(jīng)網(wǎng)絡(luò)的時(shí)序建模優(yōu)勢(shì),獲得了高識(shí)別率的聲紋個(gè)體識(shí)別模型。通過(guò)對(duì)比實(shí)驗(yàn)結(jié)果表明,基于改進(jìn)CRNN的識(shí)別方法優(yōu)于傳統(tǒng)方法,識(shí)別率有顯著提高。相比普通CRNN,在模型大小不變的情況下,識(shí)別率提升了將近2%。相比單獨(dú)CNN,識(shí)別率提升了8%。
同時(shí),本文的改進(jìn)CRNN 模型的參數(shù)除了表中CNN 和RNN 參數(shù),還有全連接層的層數(shù)、每層節(jié)點(diǎn)數(shù)、學(xué)習(xí)率、正則化等大量參數(shù),這些參數(shù)的調(diào)整確定目前需要大量實(shí)驗(yàn)支持。模型參數(shù)的調(diào)整方法還有待進(jìn)一步的理論研究。在面對(duì)設(shè)備小型化時(shí),網(wǎng)絡(luò)模型的大小也需要得到控制。網(wǎng)絡(luò)模型的輕量化設(shè)計(jì)也是今后的研究方向之一。