張興明,楊凱,2
(1.四川大學視覺合成圖形圖像技術國防重點學科實驗室,成都610065;2.四川川大智勝軟件股份有限公司,成都610045)
近年來隨著深度學習技術的迅猛發展和計算機硬件設備的計算能力大幅提升,生物特征識別技術的研究進展迅猛。部分生物特征識別技術已趨于成熟,逐漸在從學術研究階段走向商業應用階段。在眾多生物特征識別技術中,聲紋識別技術相比于其他生物特征識別技術,它有著其獨特的優勢:安全性高、隱私性弱、采集便捷、非必須接觸等。正是由于聲紋識別所具有的這些獨特優勢及其應用價值,使得越來越多的研究者投入到聲紋識別技術的研究中。
近年來,得益于深度學習技術強大的學習能力,使得基于深度學習的說話人識別研究成為說話人識別領域的一個研究熱點。2014 年Google 提出了d-vector[1]識別模型,它將Filterbank 特征參數作為模型輸入,使用DNN 網絡構建了一個簡單的識別模型,將最后一個隱藏層作為說話人特征。它僅使用一個簡單的網絡模型,就取得了不錯的識別效果。d-vector 對說話人識別研究貢獻巨大,它掀起了基于深度學習的說話人識別研究熱潮。通過閱讀相關文獻,發現大多數研究使用的是單一的傳統語音特征作為模型輸入數據,x-vector[2]識別模型使用24 維Filterbank 特征參數,h-vector[3]識別模型使用20 維的MFCC 特征參數,百度在2017 年提出的deepSpeaker[4]系統使用的是64 維的Filterbank 特征。還有少數研究使用神經網絡來學習語音特征。Chen Nanxin 等人[5]提出的j-vector 識別模型使用深度神經網絡來作為一個特征提取器,通過訓練后該特征提取器可以學習得到語音特征。2018 年Ravanelli 等人[6]提出使用SincNet 來進行說話人識別,該網絡直接從原始語音信號中自動學習語音特征,不依賴于傳統的手工特征。仲偉峰等人[7]提出了一種深淺層特征融合的方式來提取語音特征用于說話人識別,他們使用深度神經網絡來學習語音的深層特征,然后將深層特征與淺層特征相結合一同作為語音特征。本文采用融合特征的方式來進行特征參數提取,并設計了多種融合方式,以找到合適的特征提取方案,用于后續的說話人識別研究。
在基于深度學習的說話人識別中,首先我們需要將語音信號轉換成可以作為模型輸入的數據,且該輸入數據還必須要攜帶較多的說話人信息。之前的研究多采用的是單一的傳統語音特征參數來作為模型的輸入數據。常用于說話人識別的傳統特征有:梅爾倒譜特征參數、Filterbank 特征參數和語譜圖特征參數。
梅爾頻率倒譜系數(Mel Frequency Cepstrum Coefficient,MFCC)是基于人耳聽覺特性設計的,梅爾頻率倒譜頻帶劃分是在Mel 刻度上等距劃分的,頻率的尺度值與實際頻率的對數分布關系更符合人耳的聽覺特性,所以可以使得語音信號有著更好的表示。Filterbank 特征參數的提取方法就是在梅爾倒譜特征參數提取過程中去掉最后一步的離散余弦變換。與梅爾倒譜特征參數相比,Filterbank 特征參數保留了更多的原始語音信息,且提取該特征參數時計算耗時較短。頻譜圖特征參數表示隨著時間變化,頻率與能量之間的關系,可以直觀的看到靜態和動態的信息。
既然大多數研究者大多使用了單一特征參數來進行說話人識別研究,同時也證明了這種單一特征參數的方式是有效的,那么將這些單一特征進行融合而生成的融合特征,其包含了更多的不同類型、不同維度的特征參數,理論上,這些特征參數更加有利于模型從中提取出更加深層(抽象)的說話人特征。基于這樣的假設,本文采取了多種特征融合方式,生成多種融合特征,來進行對比研究。
對語音信號進行分析,提取特征參數時,首先要進行分幀和加窗處理。語音信號具有短時平穩性,對語音信號的分析和處理須建立在“短時”的基礎上,即將一段語音信號分為多幀來分析其特征參數,幀長一般取為10-30 毫秒。為了使幀與幀之間平滑過渡,保持其連續性,前一幀和后一幀會保留重合部分。后一幀對前一幀的位移量,簡稱為幀移。本文選取的幀長為25 毫秒,幀移為10 毫秒。分幀之后就要進行加窗操作,本文采用漢明窗函數來進行加窗操作。
語音進行預處理之后就可以開始提取語音的特征參數,本文提取了7 組不同的特征參數來進行特征參數提取研究,它們分別是:20 維的MFCC 特征參數、20維的Filterbank 特征參數、128 維的語譜圖特征參數、40 維的MFCC 與Filterbank 融合特征參數、128 維的MFCC 與語譜圖融合特征參數、128 維的Filterbank 與語譜圖融合特征參數、128 維的全融合特征參數。各特征信息說明見表4。
本文為研究適合于深度學習說話人識別的語音特征參數,基于卷積神經網絡(Convolutional Neural Networks,CNN)[8]構建了一個淺層的說話人識別模型。整個模型由輸入層、卷積層、特征維度轉換層、平均池化層和全連接層構成。其中,卷積層用于提取說話人的深層(抽象)特征,平均池化層用于將幀級特征轉換為語句級特征,全連接層主要用于特征降維。在訓練時,以交叉熵作為損失函數,最后一層采用Softmax 作為激活函數,進行一個多分類模型訓練;在預測時,去除Softmax 層,將最后一個隱藏層得到的向量用來表示該語句對應說話人的特征向量。根據輸入特征的參數維度的不同,模型的參數設置也有細微的不同。
輸入特征參數為128 維時的識別模型的結構及其參數設置如表1 所示。

表1 128 維輸入特征時的識別模型參數配置
輸入特征參數為20(40)維時的識別模型的結構及其參數設置如表2 所示。

表2 20(40)維輸入特征時的識別模型參數配置
為了研究不同的語音特征參數作為模型輸入時對模型性能的影響,本文首先對數據集進行處理,得到最終的實驗數據集;然后設計不同的語音特征,提取出各自的特征參數;接著搭建說話人識別模型,將不同的語音特征作為模型的輸入,經過訓練得到不同的模型;最后對各個模型進行測試和分析,得出結論。
本文實驗數據采用Free ST Chinese Mandarin Corpus 公開數據集[9]。該數據集一共有855 個說話人的語音數據,每個說話人120 條語音數據,共計102600 條語音數據。對數據進行預處理,首先檢查每條語音是否有效,去除其中損壞語音;接著進行語音端點檢測(Voice Activity Detection),去除語音中的靜音部分,盡可能使每條語音中包含較多的說話人信息,本文使用的VAD 工具為:Google WebRTC VAD[10];最后去除時長小于1 秒的語音數據,得到最終的數據集,包含854 位說話人,共計101974 條語音數據。為準確驗證不同語音特征對說話人識別效果的影響差異,將數據集按照8:2 的比例劃分為訓練集和測試集(訓練集和測試集中的說話人沒有任何交集)。訓練集和測試集的統計如表3 所示。

表3 數據集統計結果
實驗采用準確率(Acc)、F1 值和等錯誤率(EER)對識別結果進行評價。準確率(Acc)和F1 值的計算方式如下:

其中,tp 為模型正確將受試語音(該語音為注冊者語音)識別為注冊者的個數;tn 為模型正確將受試語音(該語音非注冊者語音)識別為非注冊者的個數;fp 為模型錯誤將受試語音(該語音非注冊者語音)識別為注冊者語音的個數,fn 為模型錯誤將受試語音(該語音為注冊者語音)識別為非注冊者語音的個數。
在評定說話人識別系統時,有兩個非常重要的指標:錯誤拒絕率(False Rejection Rate,FRR)和錯誤接受率(False Acceptance Rate,FAR),其計算方式如下:

其中,Nfr和Nfa分別指測試中錯誤拒絕次數和錯誤接受的次數,Ntarget和Nnon_target分別指測試中總的類內測試(真實測試)次數和類間測試(冒認測試)次數。當系統中的閾值一定,FRR 與FAR 便確定。EER 為FRR等于FAR 時的錯誤率。
實驗采用TensorFlow 深度學習框架搭建了基于卷積神經網絡的說話人識別模型。為了研究不同的語音特征參數作為模型輸入時對識別結果的影響,本文共設計了7 組不同的語音特征數據來作為模型的輸入數據,訓練7 個說話人識別模型。其詳細的信息如表4所示。

表4 模型及其對應輸入的語音特征說明
訓練集設置:訓練集中共683 位說話人,為了保證訓練出的模型可靠,以及便于觀察模型訓練過程,進一步將訓練集按照8:2 的比例劃分為訓練集和驗證集,劃分后訓練集共65163 條語音數據,驗證集共16344 條語音數據。
測試集設置:測試集中共171 位說話人,對每一位說話人進行驗證測試,即共有171 組測試。對于某一個說話人的測試,本文隨機選擇該說話人的1 條語音作為注冊語音,再隨機選取該說話人的50 條語音(不包含注冊語音)和150 位其他說話人的語音(3 條/人)作為驗證語音,共計500 條驗證語音。為了保證測試結果的準確、可靠,本文采用隨機選取的方式選取了3組測試集。在后續的測試中,將這3 組測試集分別經過每一個模型測試。
模型訓練結束之后,根據之前的實驗設置分別對每個模型在3 組測試集上進行測試,以3 組測試結果的平均值作為該模型最終的測試結果。測試結果采用3.2 小節中所提到的公式計算,測試結果如表5 所示。

表5 模型測試結果
使用單語音特征參數作為模型的輸入數據時,128維的語譜圖特征:Spec_128 的效果最佳,在F1 得分和準確率上均高于20 維的MFCC 特征與20 維的Filterbank 特征,在等錯率上也比其他兩項特征值的結果低。Spec_128 與MFCC_20 特征相比,在F1 分值上分別高1.56%,在準確率上高出0.38%,在等錯率上降低了0.38%;Spec_128 與Fbank_20 特征相比,在F1 分值上高了3.83%,在準確率上高了0.8%,在等錯率上降低了1.26%。使用多特征融合參數作為模型的輸入數據時,由三類單特征融合后形成的融合特征:Integration_MFS_20-20-88 具有最優的效果,無論是與單特征相比,還是與其他融合特征相比,均取得了最優的測試結果。與Integration_MF_20-20 特征相比,在F1 分值上高了4.57%,在準確率上高出0.38%,在等錯率上降低了1.18%。與比Integration_MS_20-108 特征相比,在F1 分值上高了1.06%,在準確率上高出0.22%,在等錯率上降低了0.29%。與比Integration_FS_20-108 特征相比,在F1 分值上高了2.41%,在準確率上高出0.52%,在等錯率上降低了0.77%。
上面通過在三組測試集上的計算均值的方式給出了各個模型的測試結果,接下來觀察各個模型分別在三組不同測試集上的表現。在3 組測試集上分別繪制出DET 曲線,其繪制出的結果如圖1、圖2、圖3 所示。
通過在三組不同測試集上繪制出的DET 曲線,可以明顯看到,在三組測試集上,由MFCC 特征、Filterbank 特征、頻譜圖特征融合而成的128 維特征:Integration_MFS_20-20-88 均取得了最小的等錯率值。也再次證明了Integration_MFS_20-20-88 是最優結果。
通過以上分析,可以得出結論:由MFCC 特征、Filterbank 特征、頻譜圖特征融合而成的128 維特征:Integration_MFS_20-20-88 能夠包含更多的淺層的說話人信息,有利于基于卷積神經網絡的說話人模型從這些淺層信息中抽取出深層的說話人信息,從而得到一個優秀的說話人識別模型。該語音特征可以用于后續的基于深度學習的說話人識別研究。

圖1 測試集1的DET曲線

圖2 測試集2的DET曲線

圖3 測試集3的DET曲線
本文研究了深度學習說話人識別中用于模型構建時輸入的語音特征參數,得到了可以用于深度學習說話人識別中作為輸入的語音特征:Integration_MFS_20-20-88。通過理論分析和實驗證明了該特征方案是有效的。但這只是做了一小部分工作,后續還會在以下方面進行深入研究:①該融合特征只在基于卷積神經網絡構建的說話人識別模型上驗證了其有效,還并未在其他的神經網絡來進行驗證,后續還會進一步測試該特征在其他網絡上的有效性;②由于本文構建的說話人識別模型比較簡單,所以取得的測試結果都未達到一個較高的水平,后續也將會在模型結構上進行深入研究。