李政儀, 宮二玲
(1.長沙民政職業(yè)技術(shù)學(xué)院 軟件學(xué)院,湖南 長沙 410004; 2.國防科技大學(xué) 智能科學(xué)學(xué)院,湖南 長沙 410073)
每個人的聲音特征與說話習(xí)慣存在差異,語音具有明顯的區(qū)分性,因此可以作為身份識別工具。這涉及到聲紋識別技術(shù),即通過對一種或多種語音信號的特征分析對未知聲音進行辨別,簡而言之就是辨別某一句話是否是某一個人所說的方法[1]。根據(jù)在驗證階段的說話內(nèi)容是否是識別系統(tǒng)所規(guī)定的,可以分為與文本相關(guān)的和與文本無關(guān)的,前者是識別系統(tǒng)規(guī)定說話人所說的內(nèi)容為已知,也就是說話人的語句是固定的或者是由系統(tǒng)提示的,后者則不限制說話人所說的內(nèi)容[1]。
本文旨在利用聲紋識別技術(shù),設(shè)計一個文本相關(guān)的嵌入式語音鎖,并分析不同的聲紋特征、噪聲水平對于識別結(jié)果準(zhǔn)確性的影響,為下一步的實際應(yīng)用奠定基礎(chǔ)。
一個嵌入式的對講設(shè)備,配置一個麥克風(fēng),擬增加一個語音鎖的功能。注冊時,自動生成一個隨機的8位數(shù)密碼,注冊人錄入2遍作為訓(xùn)練樣本;驗證時,設(shè)備顯示密碼,并由驗證人讀出,判斷是否通過驗證。
目前常用的聲紋識別算法可以分為三大類[1]:1)模板匹配法:利用距離測度,對訓(xùn)練好的特征矢量集合和待測矢量進行比較,距離越近,說明一致性越好。常用的算法有動態(tài)時間規(guī)整、矢量量化(vector quantization,VQ)等。2)概率模型法:根據(jù)特征矢量的統(tǒng)計特性建立數(shù)學(xué)模型,從統(tǒng)計學(xué)的角度進行匹配識別。常見方法包括隱馬爾可夫模型、高斯混合模型等。3)人工智能算法:以深度學(xué)習(xí)方法為主,如深度神經(jīng)網(wǎng)絡(luò)、支持向量機等方法。這種方法需要海量數(shù)據(jù)支持,是一種數(shù)據(jù)驅(qū)動方法。
由于嵌入式系統(tǒng)的計算能力有限,因此,對于本問題而言,計算量小的模板匹配法是最為適合的。本文擬采用VQ方法進行聲紋鎖的設(shè)計。
VQ算法的基本原理是將若干個標(biāo)量數(shù)據(jù)組構(gòu)成一個矢量,然后在矢量空間進行整體量化,能夠壓縮了數(shù)據(jù)而不損失過多信息。1980年,Linden Y等人提出一種基于訓(xùn)練序列的VQ設(shè)計算法,繞開了多維積分的求解,由于其廣泛的適用性,該方法被命名為LBG-VQ的算法[2,3]。
VQ算法中的基本概念包括碼矢和碼書。碼矢是所有特征矢量的分類中心矢量,可用一個k維向量cn=(cn,1,cn,2,…,cn,k),n=1,2,…,N表示。所有碼矢的集合稱為碼書,用C={c1,c2,…,cN}表示。VQ算法的核心就是在給定訓(xùn)練樣本集合T和碼矢數(shù)量N的前提下,找到能夠使得平均失真度最小的碼書C。LBG-VQ算法交替地調(diào)整空間劃分P和碼書C,使失真度不斷地趨向于局部最小值。在算法初始化階段,可通過分裂方法得到一個初始的碼書C(0)。具體流程可參見文獻[2,3]。
典型的聲紋識別流程包括語音信號預(yù)處理、特征提取、模型訓(xùn)練和特征識別。語音信號預(yù)處理包括預(yù)加重、加窗分幀和端點檢測等;特征提取包括特征選擇和頻域變換等;模型訓(xùn)練就是根據(jù)提取到的特征,訓(xùn)練出說話者的模型;特征識別則是針對一個輸入的語音,判斷屬于哪個說話者。
2.2.1 語音信號預(yù)處理
首先,對語音信號進行預(yù)加重,提升高頻部分,使得在低頻到高頻的整個頻帶中,信噪比基本一致。通常是將語音信號通過一個高通濾波器H(z)=1-μz-1。本文中,μ=0.975。其次,進行語音加窗分幀。通常認(rèn)為語音信號在10~20 ms內(nèi)是平穩(wěn)的。因此,可按照這一個時間段進行分幀,分幀過程通常取重疊分段,重疊部分稱為幀移。本文幀移設(shè)定為50 %。加窗可以減少截斷效應(yīng)對于分幀的影響,避免頻譜泄漏,本文采用漢寧窗。最后,進行端點檢測,消除噪聲段、靜音段等無效片段,保留有效語音片段。本文采用雙門限檢測方法,根據(jù)短時能量和短時過零率進行聯(lián)合檢測,具體方法可參見文獻[1,4]。
2.2.2 特征提取
常用的語音特征參數(shù)包括線性預(yù)測倒譜系數(shù)、梅爾頻譜倒譜系數(shù)(Mel frequency Cepstrum coefficient, MFCC)和感知線性預(yù)測系數(shù)等[5]。其中,MFCC是最為常用的,首先通過Mel濾波器組轉(zhuǎn)換為Mel頻譜,再進行倒譜計算,具體過程可參見文獻[5~8]。MFCC可反映語音信號的靜態(tài)特性,但人耳對語音信號的動態(tài)特性比較敏感,所以,可以取MFCC的差分來增強特征參數(shù)的動態(tài)特性,包括一階差分和二階差分。本文采用了12階MFCC系數(shù)和12階MFCC一階差分作為特征,組成一個24維特征矢量。
2.2.3 模型訓(xùn)練與識別
利用2.1節(jié)中提到的VQ算法,針對提取到的特征矢量進行訓(xùn)練,得到該說話者的模型,即碼本。碼本模型的訓(xùn)練算法可參見文獻[9],此處不再贅述。
利用對講設(shè)備的麥克風(fēng)錄制了10個人聲音,6男4女,每人讀一個各不相同的,8位數(shù)字,重復(fù)3遍。前兩遍作為訓(xùn)練數(shù)據(jù),最后一遍作為測試數(shù)據(jù)。采樣頻率為8 kHz,編碼位數(shù)為16位。
首先,對數(shù)據(jù)進行預(yù)處理,幀長設(shè)定為256,幀移為50 %,進行端點檢測,某一個語音段端點檢測結(jié)果如圖1所示??梢钥闯?,在第一段語音中,漏檢了部分語音段,但在第二段語音中得到了較好的彌補。同時,基本上排除了絕大部分靜音段。由于是貼近麥克風(fēng)錄音,語音信號的信噪比較高。
圖1 語音端點檢測結(jié)果
接下來,提取MFCC及其一階差分,組成24維的特征矢量,利用VQ算法進行訓(xùn)練。碼矢數(shù)量N需要通過調(diào)試確定,令N=8,16,32,48,46,分別訓(xùn)練模型,利用測試數(shù)據(jù)進行測試,N=8時,部分說話者的測試數(shù)據(jù)無法通過驗證;其他碼矢數(shù)量均能準(zhǔn)確通過測試。10個說話者均開展50次測試,每驗證成功一次則記一次識別成功;如果將說話者A識別為10個說話者中的其他9人,則記一次誤識(錯誤接受);如果認(rèn)為說話者不屬于10個人中的任意一個,則記一次拒收。統(tǒng)計結(jié)果如表1所示。
表1 不同碼書數(shù)量下的識別效果
可以看出,碼書數(shù)量增加,識別效果明顯提升,當(dāng)N≥48之后,識別效果提升并不明顯,甚至還出現(xiàn)稍微下降,可能是存在過擬合的原因。此外,碼書數(shù)量的增加,會導(dǎo)致訓(xùn)練和識別的計算量增加。因此,綜合考慮識別效果和計算效率,將碼書數(shù)量設(shè)定為N=48。
將聲紋特征由“MFCC+一階差分”調(diào)整為單純的MFCC,碼書數(shù)量N=48,繼續(xù)進行上述測試,可得識別成功率為88.2 %,說明一階差分的加入,對于提升識別準(zhǔn)確率是非常有幫助的。
理論上說,訓(xùn)練信號和測試信號的信噪比越高,識別效果就會越好。當(dāng)信噪比下降時,語音端點檢測會出現(xiàn)問題,導(dǎo)致噪聲段被當(dāng)作語音段進入了訓(xùn)練模型。通過人為給10段訓(xùn)練數(shù)據(jù)增加白噪聲,使其信噪比分別為20,10,0,-10,-20 dB時進行訓(xùn)練,并利用原始測試數(shù)據(jù)進行測試,可得不同信噪比下準(zhǔn)確識別次數(shù),如圖2所示??梢姰?dāng)信噪比下降時,準(zhǔn)確率明顯下降,當(dāng)下降到一定程度(0 dB)時,基本上無法正常訓(xùn)練和識別了。這說明在錄入訓(xùn)練數(shù)據(jù)時,必須保證一定的信噪比??刹捎孟胨惴ㄟM行適當(dāng)處理[10]。
圖2 信噪比與識別率之間的關(guān)系
將算法移植到嵌入式平臺后,可以正常運行,證明算法的運算量可以滿足嵌入式平臺的需求。
設(shè)計了一種文本相關(guān)的語音鎖。通過提取語音的MFCC及其一階差分特征,利用VQ算法,訓(xùn)練說話者的語音特征模型,并據(jù)此開展說話者識別。實驗結(jié)果表明,在一定的信噪比下,碼本數(shù)量N=48時,識別準(zhǔn)確率可保證在95 %的水平,滿足工程實用性要求。