陳奕成, 殳國華, 匡政睿, 余玟錚, 沈澤宇
(上海交通大學(xué) 電子信息與電氣工程學(xué)院,上海 200240)
隨著信息技術(shù)不斷發(fā)展,微信、QQ等手機(jī)APP和計(jì)算機(jī)應(yīng)用中包含了越來越多的個(gè)人和財(cái)產(chǎn)信息,一旦賬號(hào)被盜取,后果不堪設(shè)想。因此人們?cè)絹碓阶⒅貍€(gè)人信息和財(cái)產(chǎn)安全問題。然而,傳統(tǒng)的密碼識(shí)別方式存在被遺忘或泄露等風(fēng)險(xiǎn),具有一定安全隱患。因此,生物特征識(shí)別技術(shù)逐漸興起,從指紋識(shí)別到人臉、聲紋識(shí)別,該技術(shù)已經(jīng)越來越多地滲透到日常生活中。
聲紋是攜帶語音信息的聲波頻譜[1]。一方面,聲紋具有唯一性,任何兩個(gè)人的聲紋都有或多或少的差異;另一方面,聲紋采集方便,只需要一個(gè)錄音裝置就可以得到聲紋識(shí)別所需要的數(shù)據(jù)。因此聲紋識(shí)別技術(shù)具有廣闊的應(yīng)用前景和較高的市場(chǎng)價(jià)值。目前該技術(shù)已作為社保中的身份認(rèn)證手段[2],并應(yīng)用在了金融安全領(lǐng)域[3]中。
聲紋識(shí)別分為說話人辨認(rèn)和說話人確認(rèn)[4]。前者指根據(jù)一段語音來辨別屬于哪位說話人,屬于N選1的識(shí)別方法;后者指根據(jù)一段語音來確認(rèn)這段語音是否是聲稱的某人所說,屬于1對(duì)1的識(shí)別方法。說話人辨認(rèn)又分為文本相關(guān)和文本無關(guān)。文本相關(guān)要求所有說話人的訓(xùn)練語音和測(cè)試語音采用一樣的文本內(nèi)容,而文本無關(guān)則沒有此要求。本文研究的是說話人辨認(rèn)系統(tǒng),即在一個(gè)閉集的說話人集合中進(jìn)行文本無關(guān)的說話人辨認(rèn)。
本文所實(shí)現(xiàn)的系統(tǒng)框圖如圖1所示。
圖1 說話人辨認(rèn)系統(tǒng)框圖
在說話人辨認(rèn)系統(tǒng)模型的建立過程中,首先需要在系統(tǒng)中進(jìn)行聲紋錄入,利用計(jì)算機(jī)麥克風(fēng)為每個(gè)說話人錄入10段時(shí)長(zhǎng)約5 s的語音,加入訓(xùn)練語音庫,并對(duì)每一段語音進(jìn)行預(yù)處理,接下來提取其梅爾頻率倒譜系數(shù)(MFCC)特征矩陣,建立說話人聲紋的高斯混合模型,加入到聲紋模型庫中。在測(cè)試過程中,說話人需錄制一段長(zhǎng)約5 s的測(cè)試語音,經(jīng)過預(yù)處理、特性提取后得到待測(cè)語音特征矩陣,與之前建立好的聲紋模型庫進(jìn)行匹配打分,根據(jù)匹配不同說話人模型得到的最大似然分?jǐn)?shù),選取最大值,從而確定說話人身份。
系統(tǒng)軟件算法包括了語音信號(hào)預(yù)處理、聲紋特征提取和聲紋模型建立與匹配三個(gè)部分。
語音信號(hào)是由人類聲帶振動(dòng)或嘴唇發(fā)出的聲音或氣音,在工程上可建模為一個(gè)時(shí)間域上連續(xù)的波形函數(shù)。語音信號(hào)預(yù)處理流程如圖2所示。下面對(duì)預(yù)處理的步驟作詳細(xì)介紹。
圖2 語音信號(hào)預(yù)處理流程
2.1.1 語音檢測(cè)和降噪
麥克風(fēng)采集的語音不能直接用于特征提取,因?yàn)檎Z音中會(huì)有說話人或長(zhǎng)或短的停頓,而且錄音環(huán)境中難免有噪聲干擾,給聲紋特征模型帶來污染。因此,在建模和識(shí)別語音信號(hào)前,需要先進(jìn)行語音端點(diǎn)檢測(cè)(EPD)[5]和降噪處理[6]。
語音端點(diǎn)檢測(cè)采用時(shí)域的方法,主要根據(jù)能量大小進(jìn)行檢測(cè),通過設(shè)定閾值來判斷語音的有效部分。語音降噪算法采用頻譜相減法,它假設(shè)噪聲是加性噪聲,即直接加在語音上的,只要將其減去就可以得到干凈語音。頻譜相減法不僅降噪效果好,而且計(jì)算量小,易于實(shí)時(shí)實(shí)現(xiàn)。
2.1.2 語音信號(hào)采樣和預(yù)加重
為了將連續(xù)的語音信號(hào)變?yōu)殡x散的數(shù)字信號(hào),需要對(duì)信號(hào)進(jìn)行采樣,等間隔地取出連續(xù)信號(hào)上的點(diǎn)。
一般來說,人類正常說話聲音基頻在50~500 Hz范圍內(nèi),高于800 Hz的部分,信號(hào)功率會(huì)以6 dB/倍頻程跌落[7]。為了減少語音信號(hào)高頻部分信息的損失,需要對(duì)其進(jìn)行預(yù)加重,該過程可以通過一個(gè)高通濾波器來實(shí)現(xiàn)。高通濾波器的傳遞函數(shù)為:
H(z)=1-μz-1
(1)
式中:μ為預(yù)加重系數(shù),可以取0.9~1之間的值,一般取0.96。如果時(shí)刻n的采樣值為x(n),那么完成預(yù)加重之后的信號(hào)為:
y(n)=x(n)-μx(n-1)
(2)
2.1.3 分幀和加窗
數(shù)字語音信號(hào)是隨時(shí)間變化的離散函數(shù),在短時(shí)間內(nèi)可以認(rèn)為基本不隨時(shí)間變化,具有短時(shí)平穩(wěn)性,因此可以將語音信號(hào)分為若干小片段進(jìn)行處理,其中每個(gè)小片段叫作幀。在音頻處理中,一幀的時(shí)長(zhǎng)約為10~30 ms。為了使幀與幀之間平穩(wěn)過渡,兩幀之間會(huì)有部分重疊,一般重疊部分與幀長(zhǎng)之間的比值取0~0.5。分幀后需要對(duì)每一幀進(jìn)行加窗操作,加窗的作用是使每一幀開始和結(jié)束的時(shí)候漸變到0,可以提高后期傅里葉變換結(jié)果頻譜的分辨率。本文選用漢明窗。
聲紋特征提取是聲紋識(shí)別過程中的核心環(huán)節(jié)。目前已有的研究包括線性預(yù)測(cè)系數(shù)(LPC)、線性預(yù)測(cè)倒譜系數(shù)(LPCC)和梅爾倒譜系數(shù)(MFCC)[8],本文采用MFCC提取聲紋特征矩陣。
2.2.1 MFCC
梅爾倒譜分析是基于聲音頻率的非線性梅爾刻度的對(duì)數(shù)能量頻譜的線性變換。梅爾倒譜的頻帶是在梅爾刻度上等距劃分的,它比正常的對(duì)數(shù)倒頻譜中的頻帶更能模擬人類的聽覺系統(tǒng)。MFCC的提取流程如圖3所示。
圖3 MFCC提取流程
具體分為以下幾個(gè)步驟進(jìn)行:
(1) 傅里葉變換。首先要對(duì)每一幀進(jìn)行N點(diǎn)快速傅里葉變換(FFT)轉(zhuǎn)換為線性頻譜X(k),k=1,2,…,N-1。在聲紋識(shí)別應(yīng)用中,可以忽略FFT結(jié)果的相位信息,只取幅度|X(k)|進(jìn)行接下來的步驟。
(2) 梅爾濾波器濾波。梅爾濾波器是一系列(M個(gè))三角帶通濾波器Hm(k),其中心頻率為f(m),m=1,2,…,M。對(duì)每一幀信號(hào)加上M個(gè)三角濾波器之后,可以將這一幀信號(hào)由線性頻率轉(zhuǎn)換到梅爾頻率上,通常M取30左右。梅爾頻率和線性頻率的映射關(guān)系為:
(3)
式中:fMEL為梅爾頻率;fLIN為線性頻率。根據(jù)上述關(guān)系可以得到三角濾波器的傳遞函數(shù)為:
(4)
將M個(gè)此函數(shù)加在經(jīng)過N點(diǎn)FFT變換后的每幀信號(hào)上,然后將每個(gè)三角濾波器的結(jié)果累加起來,最終得到M個(gè)值,記為S1,S2,…,SM。
(3) 倒譜分析。由于人的聽覺在動(dòng)態(tài)范圍內(nèi)呈現(xiàn)對(duì)數(shù)壓縮,因此需要把每一幀的M個(gè)對(duì)數(shù)濾波器頻譜值log10(Sm)利用離散余弦變換(DCT)轉(zhuǎn)換為L(zhǎng)個(gè)倒譜系數(shù)。DCT變換函數(shù)為:
(5)
經(jīng)過DCT變換得到L個(gè)特征值,這L個(gè)特征值即為MFCC特征向量,一般來說L取12,當(dāng)n=0時(shí),c0代表的是一幀語音信號(hào)的平均對(duì)數(shù)能量,通常把c0和L個(gè)系數(shù)值一起組成一個(gè)13維的向量MFCC。假設(shè)一個(gè)語音信號(hào)由T幀組成,那么最終得到的一段語音的MFCC是一個(gè)T×(L+1)的二維矩陣。
2.2.2 高階MFCC
(6)
提取出聲紋特征矩陣后,需要對(duì)其進(jìn)行訓(xùn)練建立模型。目前機(jī)器學(xué)習(xí)領(lǐng)域在聲紋識(shí)別方面已有很多研究,常用建模方法有支持向量機(jī)(SVM)[9]、高斯混合模型(GMM)[10]和卷積神經(jīng)網(wǎng)絡(luò)(CNN)[11]等。對(duì)于閉集說話人辨認(rèn)系統(tǒng)來說,使用GMM即可得到很好的識(shí)別效果。
1) GMM原理
高斯概率密度函數(shù)即正態(tài)分布。自然界事物大多并不遵循正態(tài)分布,但是將多個(gè)正態(tài)分布函數(shù)按一定權(quán)重混合起來,可以精確地表示一個(gè)事物。高斯概率密度函數(shù)表達(dá)式為:
(7)
式中:μ為期望值,決定了曲線位置;σ為標(biāo)準(zhǔn)差;決定了分布的幅度。
(8)
(9)
2) EM算法
GMM三個(gè)參數(shù)(權(quán)重、均值和協(xié)方差)的選擇需要用期望最大化(EM)算法進(jìn)行優(yōu)化。
該算法采用K-means的方法生成高斯混合模型各項(xiàng)參數(shù)的初始值,并將期望值作為已知量,根據(jù)最大似然估計(jì)得到該分布的參數(shù),假設(shè)這個(gè)參數(shù)比原先的參數(shù)更能表達(dá)真實(shí)分布,即得到一組更好的參數(shù)。再通過這個(gè)參數(shù)確定的分布求隱含變量的期望,再求最大值,得到另一組更好的參數(shù),這樣迭代下去,直至收斂。
設(shè)樣本集X=x1,x2,…,xN,p(xi|θ)為概率密度函數(shù),表示抽到xi的概率,θ為待求參數(shù)。因此同時(shí)抽到N個(gè)樣本的概率就是它們各自概率的乘積。
(10)
對(duì)上述似然函數(shù)求對(duì)數(shù)logL(θ)得到:
(11)
式中:z為模型中的隱變量;p(x(i),z(i)|θ)為變換后的概率密度函數(shù)。在EM算法中此函數(shù)?。?/p>
Qi(z(i))=p(x(i),z(i)|θ)
(12)
式中:p(z(i)|x(i),θ)為隱變量z對(duì)應(yīng)的隱分布。
似然函數(shù)最大化得到新的參數(shù)值為:
(13)
(14)
(15)
(16)
3) 匹配打分
(17)
式中:P(λj|X)為X與每個(gè)說話人模型的后驗(yàn)概率,概率最高者即為預(yù)測(cè)的說話人。
試驗(yàn)的測(cè)試環(huán)境為基于Windows操作系統(tǒng)的計(jì)算機(jī),其中CPU為Intel Corei71.8 GHz,內(nèi)存為16 GB。語音庫中共采集30位說話人(20名男性,10名女性)數(shù)據(jù)。每人通過計(jì)算機(jī)麥克風(fēng)錄制10段語音,每段平均時(shí)長(zhǎng)約為5 s,語音內(nèi)容為隨機(jī)中文語句。
在本地主機(jī)進(jìn)行試驗(yàn)時(shí),根據(jù)不同訓(xùn)練語音長(zhǎng)度來測(cè)試識(shí)別準(zhǔn)確率。本文分為以下五種情況進(jìn)行試驗(yàn):訓(xùn)練語音5句,測(cè)試語音1句;訓(xùn)練語音6句,測(cè)試語音1句;訓(xùn)練語音7句,測(cè)試語音1句;訓(xùn)練語音8句,測(cè)試語音1句;訓(xùn)練語音9句,測(cè)試語音1句。測(cè)試結(jié)果如表1所示。
由表1試驗(yàn)結(jié)果可以看出,當(dāng)訓(xùn)練語句減少為7句(總時(shí)長(zhǎng)35 s)時(shí)可以達(dá)到30/30的識(shí)別準(zhǔn)確率,并且所用時(shí)間是所有試驗(yàn)中最短的。因此本系統(tǒng)最少可以使用7句語音進(jìn)行模型訓(xùn)練,即可以保證識(shí)別準(zhǔn)確率的條件下識(shí)別速度最快。
表1 不同訓(xùn)練語音長(zhǎng)度情況下識(shí)別結(jié)果
本文利用Python在Windows操作系統(tǒng)搭建了一個(gè)利用高斯混合模型識(shí)別梅爾倒譜系數(shù)的具有降噪功能的說話人辨認(rèn)系統(tǒng),包括了語音信號(hào)預(yù)處理、聲紋特征提取和聲紋模型建立與匹配等過程。語音庫中共采集30位說話人數(shù)據(jù),每人通過計(jì)算機(jī)麥克風(fēng)錄制10段語音,其中最少5句用于訓(xùn)練,1句用于測(cè)試。經(jīng)過試驗(yàn),此系統(tǒng)在閉集說話人測(cè)試集中可以達(dá)到30/30的識(shí)別準(zhǔn)確率。相比于傳統(tǒng)說話人識(shí)別系統(tǒng),該系統(tǒng)增加了降噪功能,應(yīng)用場(chǎng)景更加廣泛,并且訓(xùn)練語音長(zhǎng)度最短僅需要35 s即可達(dá)到30/30的識(shí)別效果,具有識(shí)別速度快、識(shí)別精度高的特點(diǎn),為未來的生物特征識(shí)別技術(shù)提供了新思路。