周玥媛,孔 欽
(南京大學金陵學院,江蘇 南京 210089)
聲紋識別(voiceprint recognition),又稱說話人識別(speaker recognition),是生物身份認證技術的重要分支之一。聲紋識別是由計算機自動識別說話人身份的技術,實現的關鍵點在于從語音信號中提取語音特征參數,此參數具備表征特定的說話人生理層面特征與行為層面特征的能力。
從實際應用的角度分類,聲紋識別分為說話人辨認(speaker identification)和說話人確認(speaker verification)[1]。前者判斷某段語音信號來自于若干參考說話人中的哪一位,是“多對一”的問題。后者確定某段語音信號是否符合其所聲稱的說話人身份,是“一對一”的判別問題。兩者的性能評價指標計算方法并不相同。
高斯混合模型(Gaussian mixture model,GMM)是單一高斯密度函數的延伸,高斯混合模型能夠平滑地近似任意形狀的密度分布,所以被廣泛應用在模式識別、數據分析等領域[2]。GMM規模愈大表征能力愈強,但參數規模也等比例膨脹。具備泛化性的模型必須通過更龐大的訓練數據加以驅動。
實際應用中,每位說話人的語音數據普遍有限,以致無法訓練出高效的GMM,大幅降低聲紋識別系統的性能。此背景下,DA Reynolds提出了通用背景模型(universal background model, UBM)的概念。基于語音特征觀察向量,依據最大后驗準則(maximum a posteriori,MAP),通過UBM自適應目標模型的方法[3],得到目標說話人的GMM。
文中討論了GMM模型訓練算法和識別算法,并與自適應算法相結合。在此基礎上,針對說話人確認與說話人辨認兩種應用角度,分別設計并實現了基于Matlab的特征參數性能測試系統與聲紋識別交互系統,探討與驗證不同的參數選擇會對識別算法性能產生的影響。
聲紋識別算法首先對語音信號進行預處理,然后提取語音特征參數。特征參數在提取完成后,需用數據模型表示出來,故建立模型并進行模型訓練,最后進行識別。
語音信號預處理[4]步驟如下:
(1)能量歸一化處理(normalization)。排除發音聲音大小對語音幀能量值的影響。
(2)預加重(pre-emphasis)。原始信號采樣變換得到數字語音信號。為凸顯高頻分量,依次通過一個一階高通濾波器H(z):
H(z)=1-az-1
(1)
其中,a=0.9~1,文中a取0.937 5。
(3)語音分幀。文中取幀長N為512點(51.2 ms),幀移為160點(16.0 ms)。
(4)加窗處理。加漢明窗(Hamming window)削減幀兩端的不連續性,然后通過低通濾波器去除異常高起的噪聲。
(2)
其中,h(n)為窗函數,N為幀長。
(5)計算短時能量(short-time energy)。短時能量表征聲音的大小,文中設置短時能量門限值為10,以過濾掉語音信號中的微弱噪聲。短時能量計算公式如下:
(3)
經語音信號預處理后,處理對象轉變成若干個離散的語音幀。
文中主要對線性預測系數(LPC)、線性預測倒譜系數(LPCC)、梅爾頻域倒譜系數(MFCC)以及結合差分參數的MFCC進行比較研究。
1.2.1 線性預測系數(LPC)
線性預測系數[5](linear predictive coefficient,LPC)是線性預測方程的一組解。設語音樣點之間相互關聯,則一個語音信號可由過去p個取樣值的線性組合預測。
實際應用中,常用一個只有極點沒有零點的自回歸模型(AR)表示聲道模型[6]:
(4)
其中,ak是維數為p的LPC,G是激勵增益。
(5)
基于一個語音幀中的所有取樣值,可決定唯一的一組LPC,使得實際抽樣和預測抽樣的誤差e(n)平方和達到最小值。對LPC的計算方法有自相關法、協方差法、格型法等等。計算上的快速有效保證了這一聲學特征的廣泛使用[7]。文中采用自相關法求解。
1.2.2 線性預測倒譜系數(LPCC)
線性預測倒譜系數(LPC-cepstrum,LPCC)是使用LPC分析方法計算倒譜特性。
c1=a1
(6)
(7)
其中,cn為倒譜系數,其中的ai為多項式A(z)的系數。
1.2.3 梅爾倒譜系數(MFCC)
梅爾頻率倒譜系數(Mel-frequency ceptral coefficients,MFCC)[8]是在梅爾刻度頻率域提取出來的倒譜系數,其對人體聽覺系統感知頻率的非線性特征進行了刻畫。
MFCC的提取過程如下:
(1)語音信號預處理;
(2)乘上漢明窗函數,然后進行快速傅里葉變換(FFT),將信號從時域轉換到頻域;
(3)計算頻譜幅度的平方,獲取能量譜;
(4)將能量譜通過M個按照梅爾頻率分布的三角濾波器:

i=1,2,…,M
(8)
其中,Xk是第k個頻譜點的能量,Yi是第i個濾波器的輸出值,fi是第i個濾波器的中心頻率。文中M取24。
(5)將每個濾波器的輸出取對數;
(6)經離散余弦變換(discrete cosine transformation,DCT)過渡到倒譜域。
(9)
其中,p是MFCC階數,{Ck},k=1,2,…,p即為MFCC特征參數。
1.2.4 MFCC的差分譜
MFCC良好刻畫了人耳聽覺特征,但其僅為語音的靜態特征。語音的動態特性可由靜態特征的差分譜反映。動靜特征結合,具備對語音更全面的描述。
設X(k)為離散函數,則其一階差分可表征相鄰兩項之間的動態關系,定義為:
Y(k)=X(k+1)-X(k)
(10)
同理,函數X(k)的二階差分可表征相鄰三幀之間的動態關系,定義為:
Z(k)=Y(k+1)-Y(k)=
X(k+2)-2×X(k+1)+X(k)
(11)
GMM表示為M個單一高斯函數的加權平均和:
(12)
其中,x是維度為D的特征向量,αi,i=1,2,…,M是混合權重,且必須滿足所有混合權重的和為1,gi(x),i=1,2,…,M是D維單一高斯密度函數:
(13)
其中,μi是平均值向量,Σi是協方差矩陣。GMM的模型參數記為λ={αi,μi,Σi},i=1,2,…,M。
1.3.1 GMM的訓練
說話人模型訓練結束后,每一位說話人使用一個λ來唯一表示[9]。常用的參數估計方法是最大似然(maximum likelihood,ML)估計,GMM的似然函數[10]如下:
(14)
EM算法的每次迭代都由E-step和M-step組成。反復重估參數λ,直到模型收斂。定義函數Q(λ,λ'):
(15)
其中,i為高斯分量序號,或稱隱狀態號。
(16)
其中
(17)
E-Step:求訓練數據落在假定的隱狀態i的概率。
(18)
M-Step:分別求Q函數中三個參數αi,μi,Σi,i=1,2,…,M的偏導為0時的參數值。
1.3.2 GMM的識別
根據一段測試語音的特征向量序列,在已訓練出的N個GMM中找對數似然函數最大者[11],即對應識別出的說話人i*。
(19)
1.4.1 模型描述
將結合UBM的GMM稱作GMM-UBM模型,本質是GMM的一種改進算法。
所謂通用背景模型(UBM),就是采用許多人的語音,包括男聲和女聲(也就是男女共用一個通用模型)一起訓練而成的一個高階GMM[10],可視作某特定說話人GMM的先驗模型。UBM同樣采用EM算法訓練,且僅需訓練一次,之后反復使用。
此改進算法不僅避免了過擬合現象的出現,且在抑制通道及背景噪聲影響的同時,使得待估參數的數目減少超過半數[12]。
1.4.2 最大后驗準則(MAP)算法
自適應的過程即將UBM的每個高斯分布向目標說話人數據偏移。最大后驗準則(maximum a posteriori,MAP)算法是最為常用的自適應算法,計算過程如下:
(1)與EM算法中的E-Step相同。對矢量特征序列X={x1,x2,…,xT}計算每個向量與UBM中每個單一密度高斯函數的后驗概率分布:
(20)
ni=P(i|xt,λ)
(21)
其中,T是訓練語音幀數,ni是落在第i個高斯分量上的矢量特征個數。
(2)據特征矢量xt及概率分布統計出最優的訓練模型參數:
(22)
(23)
(24)
由ni得到修正因子以更新UBM參數λ:
(25)
(26)
(27)
其中,βi是高斯分量參數的修正因子。
(28)
βi越大,表明重估參數可靠度越高。式(28)中,γ是關系因子,用于約束修正因子βi的變化尺度,保證所有混合權重的和為1。γ通常取8~20,文中γ取10。
文獻[13]已證明更新的權重及協方差矩陣不會對系統產生很大影響,只更新均值向量時系統性能最佳。故文中在說話人模型訓練時采用僅更新均值向量的方式。
文中使用Matlab語言,對基于GMM-UBM的聲紋識別算法進行具體實現。針對說話人確認與說話人辨認兩種應用角度,分別設計兩類系統進行探究。
對說話人辨認而言,系統識別率計算公式如下:

(29)
對說話人確認而言,系統性能常使用等錯誤率(equal-error rate,EER)來評價[14]:

(30)

(31)
識別率=1-等錯誤率
(32)
等錯誤率表征在門限值(Threshold)處算法的誤識率和拒識率之間的平衡關系。等錯誤率越低,則系統性能越高。
特征參數性能測試系統采用說話人確認的性能計算方式,針對文中探究的不同語音特征參數,又分為與特征參數一一對應且相互之間無干涉的多個測試子系統。各子系統運行流程相同,如圖1所示。輸出結果為該種特征參數下,系統的等錯誤率與門限值[15]。

圖1 性能測試子系統的系統流程
聲紋識別交互系統采用說話人辨認的性能計算方式,系統實現和輸出結果均類似于開集的說話人辨認,如圖2所示。聲紋識別交互系統與性能測試系統在代碼邏輯上并無關聯,但后者的運算結果為前者提供數據支撐,如UBM模型參數、門限值等。
模塊實現方面,劃分為5個處理模塊:數據集劃分模塊、語音預處理模塊、LPC與LPCC提取模塊、MFCC提取模塊、系統性能計算模塊。其中,(1)數據集劃分模塊的功能如下:①劃分數據集。②建立trails與labels文件。將一個參考模型與一條測試語音的一次匹配定義為一個trail,trails記錄每條測試語音與每個參考模型的一一匹配,labels標識每個trail是否為正確的匹配。(2)系統性能計算模塊的功能如下:①對每一個trail進行評分。文中用UBM的對數似然值對GMM下的對數似然值進行規整,即采用對數似然比的評分方式[14]。②將trails依據得分升序排序,基于labels計算系統的等錯誤率與門限值。
算法實現方面,(1)采用二元分裂(binary split)的EM算法[16]:①EM算法初始參數值的選取至關重要[9]。文中使用T個語音特征向量的總體均值與方差初始化GMM。②對迭代次數規定固定數值。GMM二元分裂時E-Step與M-Step的迭代次數與高斯混合度一一對應。③對完成迭代的高斯分量做二元分裂,故文中系統的高斯混合度只能取2的冪次方。此方式極大節省了模型訓練時間。(2)采用僅對UBM參數中的均值向量進行更新的MAP算法。

圖2 聲紋識別交互系統軟件流程
文中實驗基于VoxCeleb開源數據集,其特征如下:(1)與文本無關;(2)音頻從Youtube視頻節目中截取。采樣率16 kHz,16 bit,單聲道;(3)每人平均持有句子116句。每句平均時長8.2 s,多為短語音。
數據集劃分如下:(1)開發集:首字母A-D,共269人。每位說話人的每段視頻的第一條音頻用于UBM的訓練,總計4 797條。(2)訓練集:首字母E,共40人。每段視頻(除最后一段)的第一條音頻用于訓練GMM。(3)測試集:首字母E,共40人。每位說話人的最后一段視頻的第一條音頻作于測試。
測試計劃:目標說話人模型—訓練集40位說話人的GMM模型;測試語音—每位說話人1段測試語音,共計40×40=1 600 trials;參數設置—高斯混合度128;測試階數—取12階~24階語音特征參數。
測試基于性能測試系統進行,測試結果如表1所示。

表1 三種不同階數的特征參數下的系統等錯誤率
分析:(1)在模式識別方法不變的條件下,系統的識別率與語音特征參數的階數之間并不存在單調上升的對應關系,而是趨于不確定的波動。
(2)目前,特征參數的選擇主要有兩種方法[17]。第一種,根據實驗語音學和聽覺方面的知識將特征參數分為若干類,然后通過對比實驗從各類特征參數中選出一類。第二種,通過實驗,對一類特征參數確定其語音特征向量的階數,包括動態參數的階數。此處即使用了第一種方法。
(3)當三種特征參數的階數相同時,絕大多數情況下,MFCC使文中系統具有最佳識別效果,LPCC其次,LPC最次。
將測試系統運行時長進行劃分。三種特征參數下的測試系統,各項主要操作的耗時與階數的關系如圖3所示。

圖3 三種不同階數的特征參數下各項主要操作所用時長
分析:(1)對三種特征參數下的測試系統而言,絕大多數時間都消耗在獲取UBM模型上。可將計算trails對數似然得分近似視為說話人識別的步驟,其耗時遠小于獲取訓練集說話人的GMM。
(2)當三種特征參數的階數相同時,使用LPCC和LPC的測試系統,各項操作耗時基本持平。使用MFCC的系統訓練UBM的耗時遠高于前者,是前者所用時長的兩倍及其以上,其余項操作耗時差異不大。
(3)系統的運行時長均隨各特征參數階數的增加而呈上升趨勢。對于某一特定的特征參數而言,系統識別時長與識別率之間并無必然聯系。在選擇特征參數及確定其階數時,應綜合考慮系統識別效果和實時處理性能。
測試計劃:目標說話人模型—訓練集40位說話人的GMM模型;測試語音—每位說話人1段測試語音,共計40×40=1 600 trials ;參數設置—特征參數階數均取19。
測試基于性能測試系統進行。因文中系統實現采用二元分裂的EM算法,故高斯混合度只能取2的冪次方。測試結果如表2所示。

表2 不同高斯混合度下的系統等錯誤率
分析:(1)在文中系統中,高斯混合度取128及其以下時,三種特征參數所對應的系統等錯誤率的變化趨勢與理論相一致,即高斯混合度越高,擬合越精確,識別率就越高。當高斯混合度取到256及以上時,識別效果不升反降。
(2)在實際應用中,受訓練數據集大小約束,系統識別率并不會隨高斯混合度的增大而呈穩定上升趨勢。語音數據有限的情況下,能夠可靠估計的模型參數是有限的[18]。GMM中單一高斯密度函數的數目增加時到一定值時,GMM的參數過多,而良好估計的參數占比小,反而可靠性差,導致系統識別率下降。
將測試系統運行時長進行與3.2同樣的劃分,各項主要操作的耗時與高斯混合度的關系如圖4所示。
分析:(1)高斯混合度與系統運行耗時之間呈單調上升關系。聲紋識別時間過長會對實時處理造成負面影響。為達到最佳識別性能,應權衡高斯混合度對結果準確性和識別時長的利弊,以決定高斯分量的個數。文中系統的高斯混合度較佳取值為128。
(2)隨高斯混合度增大,系統中與高斯分量相關的操作耗時均延長,即高斯混合度越高,擬合就越精確,所需時間也就越長。

圖4 不同高斯混合度下各項主要操作所用時長
(3)MFCC下的測試系統運行耗時最長,LPCC與LPC基本持平。隨高斯混合度的增大,使用MFCC的系統在運行耗時上較LPCC與LPC的差距逐漸拉大,且差距絕大部分源于訓練UBM的操作,其次是計算trail得分的操作,提取特征參數和UBM自適應并無明顯時長差異。
測試計劃:目標說話人模型—訓練集40位說話人的GMM模型;測試語音—每位說話人1段測試語音,共計40×40=1 600 trials;參數設置—高斯混合度128;測試階數—取12階~18階MFCC進行測試。
測試基于性能測試系統進行。識別結果如表3所示。

表3 不同階數的特征參數下的系統等錯誤率
分析:(1)文中系統中,結合一階差分參數的MFCC較MFCC基本上有效地提升了系統識別效果。使用結合二階差分參數的MFCC的系統識別率常低于結合一階差分參數的MFCC,有時甚至低于MFCC。
(2)對特定的模式識別方法而言,動態參數階數的增加與提升系統識別效果之間沒有必然聯系。為提高系統識別效果而盲目堆疊靜態特征差分譜的方法并不可取,在選擇特征參數時,應通過實驗,對一類特征參數確定其語音特征向量的階數,包括動態參數的階數,即3.1中特征參數的選擇方法第二種。
(3)動態參數的階數越高,則組合參數的規模等比例膨脹,導致系統識別所需時間越長。在選擇靜態特征參數及確定其階數和動態參數階數時,應綜合考慮系統識別效果和實時處理性能。
測試計劃:目標說話人模型—訓練集40位說話人的GMM模型;訓練語音—選取訓練集每位說話人語音中的一部分,累積時長分別為15 s、30 s、45 s、60 s、90 s;測試語音—每位說話人1段測試語音,長度3 s;參數設置—特征參數階數均為19,高斯混合度128。
測試基于聲紋識別交互系統進行。識別效果如表4所示。

表4 不同訓練語音時長下的系統識別效果
分析:高斯混合度一定的情況下,訓練語音的時長越長,系統的識別效果越好。GMM表征特征向量真實分布的能力與模型訓練程度密切相關。觀察矢量越多,則訓練越充分。其中,特征參數的階數相同時,MFCC下的系統識別效果最好,LPCC其次,LPC最次。
測試計劃:目標說話人模型—訓練集40位說話人的GMM模型;訓練語音—選取每位訓練集說話人語音中的一部分,累積時長為60 s;測試語音—每位說話人4段測試語音,長度分別為3 s、5 s、7 s、9 s;參數設置—特征參數階數均為19,高斯混合度128。
測試基于聲紋識別交互系統進行。識別效果如表5所示。

表5 不同測試語音長度下的系統識別效果
分析:高斯混合度和訓練集數據不變的情況下,測試語音的時長越長,系統的識別效果越好。用于識別的觀察矢量少,則不能良好體現說話人的語音特征,匹配精度低。其中,特征參數的階數相同時,MFCC下的系統識別效果最好,LPCC其次,LPC最次。
基于GMM-UBM算法完成了兩類不同應用角度的文本無關的聲紋識別系統構建,并針對不同的研究內容,分別設計適合的測試計劃,選擇恰當的性能評價指標,對不同的靜態特征參數、同一靜態特征與結合不同階的動態特征參數進行研究分析,并探討與驗證了不同的參數選擇會對算法識別性能產生的影響。
進一步的研究工作可從語音特征參數F比和D比的性能評價方法,或是從不同的模式識別方式著手,探討特征參數與模式識別方式結合度的概念。此外,如何選擇多種靜態特征與動態特征的組合以及確定其階數仍是一大難題。求出組合特征參數與模式識別方式的較優解是進行研究工作的長遠目標。