白燕燕 ,胡曉霞,鄭三婷
(西安工業(yè)大學 北方信息工程學院,陜西 西安 710032)
聲紋識別技術(shù)(說話人識別技術(shù))是一種生物認證技術(shù),也是一項根據(jù)說話人波形反映其生理和行為特征的語音參數(shù)來自動識別測試的說話人身份的技術(shù)[1]。
在未來的生活中,說話人識別將會以它自身獨特的便捷性,實惠性和精準性受人矚目,并且逐漸普及在生物認證技術(shù)領(lǐng)域[1]。
說話人識別首要錄制聲音樣本和提取語音特征參數(shù),再把它們保存在數(shù)據(jù)庫中,最后把準備驗證的聲音和數(shù)據(jù)庫中的語音特征相匹配,利用匹配結(jié)果相似度來獲得說話人的身份。
目前,世界各國都很重視建設(shè)語音數(shù)據(jù)庫。最具代表的是美國建立的 LDC (Linguistic Data Consortium) 和 OGI(Oregon Graduate Institute),以及歐洲國家建立的 ELRA(European Language Resouces Association)組織。這些組織都是長期研究語音信號處理技術(shù)的。他們開發(fā)出規(guī)模巨大的語音研究資源[2]。
第一個高質(zhì)、大容量、高可信度的聲音數(shù)據(jù)庫是YOHO數(shù)據(jù)庫。表1是YOHO說話人數(shù)據(jù)庫。它是經(jīng)過數(shù)字化的數(shù)據(jù)庫,其輸入特征參照了第三代安全終端單位(STU-III)的安全語音電話。設(shè)計了與文本有關(guān)的說話人確認系統(tǒng),此系統(tǒng)是會提示用戶說什么話,在YOHO中使用的是:“合成塊”短語的語法[2]。
這個數(shù)據(jù)庫的環(huán)境是“辦公環(huán)境”。另一方面,它還滿足在噪聲的環(huán)境和遠距離麥克風的條件下對語音做測試。而這些均滿足了消費者的消費需要。
國內(nèi),浙江大學CCNT實驗室提出和建立了面向移動通信環(huán)境的說話人識別語音庫SRMC(speaker recognition in mobile communication)[2]。
生活中,如果要采集語音的話,就會常常使用計算機,麥克風,還有錄音功能電話機,此外還要有相應(yīng)的調(diào)制解調(diào)器。這些錄音設(shè)備都很普通且常見。
我們該怎樣去評價和使用一個標準的語音數(shù)據(jù)庫?我們需要對評價下個定義。如評價的細節(jié)、訓練和測試數(shù)據(jù)集的分割。在特定條件(如訓練和測試采用不同的麥克風)下進行系統(tǒng)性能評價,需要有足夠的錄音數(shù)據(jù)。
表1 YOHO語音數(shù)據(jù)庫Tab.1 YOHO speech database
由于實驗條件的限制,本課題的語音庫是自己創(chuàng)建的,實驗用來訓練和測試的說話人錄音,大部分是班級同學和同一實驗室的同學。在這個實驗中我們使用的是普通話,我們中每一個人說話速度和音量都處于正常情況。實驗語音是在兩天時間內(nèi)采集得到的。采集環(huán)境是實驗室,一共有十個同學進行錄音。男女比例是一比一。在本實驗中,我們盡量保持實驗室環(huán)境安靜,假設(shè)我們采集的聲音都是純音,沒有噪音。實驗中用到的錄音軟件是cool edit 2000,用的錄音設(shè)備是普通的立體聲麥克風和COMPAQ筆記本電腦,我們把采樣頻率定為8000Hz,每一幀的幀長定為256個點,幀之間的距離定為80點,用16比特量化方式進行量化。采樣之后,得到了標準化的數(shù)字語音,這個實驗中,用到的語料是阿拉伯數(shù)字。包含之間的數(shù)字,每個人的語音是1個阿拉伯數(shù)字,每個人每一天要有9次朗讀機會。我們把獲得的所有的數(shù)據(jù)樣本存儲在計算機的硬盤中,拿出第一天的語音來進行訓練使用,把第二天的語音用來做測試。每一個數(shù)字錄音看做一個單位來進行測試。本文的實驗中利用阿拉伯數(shù)字1~9的語音單元構(gòu)成的隱馬爾可夫模型,建立了與文本有關(guān)的身份確認系統(tǒng)。如圖1所示。
圖1 基于HMM的與文本有關(guān)的說話人身份確認系統(tǒng)Fig.1 Speaker identification system based on HMM with text-related
首先錄制語音,采集語音,建立語音模板庫,在實驗室環(huán)境下,采集參加訓練和識別的說話人語音。分別建立兩個數(shù)據(jù)庫。第一天錄音存儲為Xi,第二天錄音存儲為Ri。分別存儲在計算機的硬盤中的錄音DIY資料文件夾下。語音庫是用來存儲說話人的語音。當需要識別時可以用來識別說話人身份。隨后將語音送至預處理功能模塊。
其次對數(shù)字化語音進行預處理,此模塊的任務(wù)語音信號的數(shù)字化處理,把處理過的語音拿來端點檢測。預處理過程包含去除語音信號的噪聲、對信號進行預加重、加窗、分幀等。經(jīng)過加窗這一步驟之后,得到了一幀幀的語音序列,然后進行預加重處理。把信號做預加重處理是為了把信號中的高頻部分提取出來,這樣做整個頻譜就會變得平坦起來,然后在全部的頻帶中一直保持這種平坦,這個時候我們可以用相同的信噪比求得頻譜。這樣都完成之后就可以頻譜分析了。預加重濾波器的形式如:
式(1)中,μ的值在本實驗中選取0.937 5。引進了預加重參數(shù)μ,可以看出,有利于提高說話人的識別率。表2中可以看到不同預加重參數(shù)下的識別率。
表2 不同預加重參數(shù)下的識別率Tab.2 Recognition rate based on different parameters of pre-emphasis
由表2可知,μ值改變,識別率也在改變。μ=0.95時,識別率最高。本實驗選取的預加重參數(shù)值在0.93~0.95之間。
接下來是對語音信號分幀加窗。因為語音信號不是平穩(wěn)的信號,假定語音信號在10~30 ms之間是平穩(wěn)的。為了得到短時的語音信號,對語音信號進行加窗計算。本課題主要選用的是漢明窗。漢明窗顯示了一個好的窗口的優(yōu)點。其在時域中波形細節(jié)不容易丟失,且能防止泄露。漢明窗函數(shù)式:
經(jīng)過前面的一些處理之后,采集的語音信號就被分割成一幀幀的短時的加窗信號,把這些信號假設(shè)成隨機平穩(wěn)的信號,然后提取語音特征參數(shù)。
提取出來的語音參數(shù),對其端點檢測。此時,先設(shè)置門限,依據(jù)短時能量和過零率的公式,求出來短時能量值和過零率值。然后用手工方法在MATLAB上去除語音信號中的靜音段和噪音語段來進行端點檢測。
對系統(tǒng)的輸入信號進行判斷,準確地找到語音信號的起始點和終止點的位置。除去語音中的雜亂語音段,只有這樣才能采集到真正的語音數(shù)據(jù),減少數(shù)據(jù)冗余和運算量,并減少處理時間。如表3所示。在這里本課題用的是雙門限法[3]。將短時平均能量和短時平均過零率結(jié)合起來,進行端點檢測,可以很好的檢測語音是否開始和結(jié)束。
表3 起始點不同處理下的識別率Tab.3 Recognition rate under different treatments starting point
在本文的實驗系統(tǒng)中,語音特征參數(shù)依次使用了12階LPCC以及12階MFCC。最后選定12階MFCC參數(shù)。本課題建立的是與文本有關(guān)的聲紋身份確認系統(tǒng),用于測試模型是連續(xù)CHMM模型。
實驗中我們用的是30 ms的漢明窗,依次計算它的特征參數(shù),分別使用了12階LPCC和12階MFCC(24個Mel濾波器,語音信號的幀長度為256,信號的采樣頻率為8 000 Hz)和由此推導出的一階MFCC差分參數(shù)。LPCC特征和MFCC特征識別率比較如表4所示。
表4 LPCC和MFCC特征識別率比較Tab.4 The comparison of the feature recognition rates between LPCC and MFCC
表4顯示了在測試人數(shù)為10人時,在相同的幀長下,MFCC特征的識別性能高于LPCC特征。這個結(jié)論又一次證明了倒譜特征的可區(qū)分性測度優(yōu)于LPCC特征。
實驗中,我們把第一個說話人的語音“9”,作為實驗研究樣本。圖2是數(shù)字“9”的語音波形圖,圖3是數(shù)字“9”的語譜圖。
圖2 語音“9”的波形圖Fig.2 Waveform speech"9"
MFCC參數(shù)是按幀計算的,在這里語音幀長度是256,信號采樣頻率是8 kHz,采用24個濾波器,MFCC特征階數(shù)是12。MFCC的優(yōu)點是在噪聲的環(huán)境下,可以表現(xiàn)出對環(huán)境更強的魯棒性。接下來一步要做的是對語音特征矢量序列進行矢量量化,矢量量化的數(shù)據(jù)壓縮效果相當好,因此進行語音處理經(jīng)常要用到。在本文的實驗中,采用LBG法聚類生成碼書。矢量量化之后這些語音特征參數(shù)就轉(zhuǎn)變成語音模型。緊接著可以開始進行下一步的操作[4]。
圖3 數(shù)字“9”的語譜圖Fig.3 The number"9"spectrogram
在訓練階段,對數(shù)字1~9建立HMM模型,就要對10個人進行每個數(shù)字10遍訓練。第一天訓練,第二天檢測。每天一遍,一共兩遍,首先把語音信號做端點檢測,然后根據(jù)特征量計算出MFCC系數(shù)序列后,這里要用Baum-Welch算法建立各個說話人的HMM模型庫[5]。測試階段,先保持和訓練階段一樣,提取說話人測試語音中的特征矢量,然后根據(jù)維特比算法,并以各個說話人的HMM模板為參照,計算出來該輸入序列的生成概率,根據(jù)最大的輸出概率進行判決結(jié)果。對于本課題研究的身份確認系統(tǒng),把概率值與判決門限相比較,其值大于或等于判決門限的聲音作為受測者本人的聲音被接受,小于門限的被拒絕[6]。
本文的實驗是與文本有關(guān)的說話人身份確認系統(tǒng)。在實驗中,分別按照不同人數(shù)進行訓練,但是測試語音數(shù)保持不變[7]。任意抽3個人朗讀數(shù)字,在隨后的實驗中我們依次確定實驗人數(shù)為5,7和10時,這時可以看出識別率會有一些大的差異。其結(jié)果如表5所示。
表5 訓練人數(shù)不同時的識別比較Tab.5 The comparison of identification in different training number
實驗中的語音特征是MFCC,所用模型是連續(xù)CHMM,每一數(shù)字模型有4個狀態(tài)。在這個身份確認系統(tǒng)中,在二值判定的前提下,確認受測者是否是之前所認定的某人。從表5可以看到識別的時間比較短,當有10個人訓練時,識別率最大。為了訓練出可靠的參數(shù)模型,必須加大訓練集的數(shù)據(jù)。本實驗由于條件限制,實驗語音模板庫比較小,訓練數(shù)據(jù)不太充足,影響系統(tǒng)的一定性能。當訓練數(shù)據(jù)足夠大時,得修改補充一下程序的流程。本實驗中系統(tǒng)的識別率達到了90%以上。
本文的實驗達到了預期的實驗效果,基本完成了身份確認的目標。但是針對語音的特征提取和模式匹配,在實驗中難免會出現(xiàn)一些誤差,出現(xiàn)誤認識和拒認識的偏差。對于說話人確認系統(tǒng),雖然說從理論上來說,識別率和登錄的說話者量無關(guān),但是實際上對于二值判定的說話人確認系統(tǒng)也會隨著登錄人數(shù)的增減而有所改變,怎么樣才能確保有足夠多的登錄者,登錄到說話人確認系統(tǒng)中,而它的識別率問題仍然是一個很大的課題。
[1]趙力.語音信號處理 [M].北京:機械工業(yè)出版社,2003.
[2]吳朝輝,楊瑩春.說話人識別模型與方法[M].北京:清華大學出版社,2009.
[3]何強,何英.MATLAB擴展編程[M].北京:清華大學出版社,2002.
[4]張雪英.數(shù)字語音處理及MATLAB仿真 [M].北京:電子工業(yè)出版社,2010.
[5]韓紀慶,張磊,鄭鐵然.語音信號處理 [M].北京:清華大學出版社,2004.
[6]朱少雄.聲紋識別系統(tǒng)與模式匹配算法研究 [D].大連:大連理工大學,2005.
[7]王建勛,劉會金.基于AR譜估計和頻譜分析的間諧波檢測方法[J].陜西電力,2014(7):23-30.WANG Jian-xun,LIU Hui-jin.An interharmonic detection algorithm based on AR spectral estimation and spectrum analysis[J].Shaanxi Electric Power,2014(7):23-30.