聲紋識別(說話人識別)技術


說話人識別(Speaker Recognition,SR),又稱聲紋識別(Voiceprint Recognition,VPR),顧名思義,即通過聲音來識別出來“誰在說話”。語音識別(Automatic Speech Recognition,ASR)是通過聲音識別出來“在說什么”。為了簡便,后文統一稱為VPR。

說話人識別(或聲紋識別)是根據語音信號中的說話人個性信息來識別說話人身份的一項生物特征識別技術。

傳統的VPR多是采用MFCC特征以及GMM模型框架,也取得了非常優秀的結果,不再贅述。后續也出現了基於i-ivector,深度神經網絡的等更多的算法框架。

基礎

聲紋識別的理論基礎是每一個聲音都具有獨特的特征,通過該特征能將不同人的聲音進行有效的區分。

這種獨特的特征主要由兩個因素決定,第一個是聲腔的尺寸,具體包括咽喉、鼻腔和口腔等,這些器官的形狀、尺寸和位置決定了聲帶張力的大小和聲音頻率的范圍。因此不同的人雖然說同樣的話,但是聲音的頻率分布是不同的,聽起來有的低沉有的洪亮。每個人的發聲腔都是不同的,就像指紋一樣,每個人的聲音也就有獨特的特征。

第二個決定聲音特征的因素是發聲器官被操縱的方式,發聲器官包括唇、齒、舌、軟齶及齶肌肉等,他們之間相互作用就會產生清晰的語音。而他們之間的協作方式是人通過后天與周圍人的交流中隨機學習到的。人在學習說話的過程中,通過模擬周圍不同人的說話方式,就會逐漸形成自己的聲紋特征。

因此,理論上來說,聲紋就像指紋一樣,很少會有兩個人具有相同的聲紋特征。

美國研究機構已經表明在某些特點的環境下聲紋可以用來作為有效的證據。並且美國聯邦調查局對2000例與聲紋相關的案件進行統計,利用聲紋作為證據只有0.31%的錯誤率。目前利用聲紋來區分不同人這項技術已經被廣泛認可,並且在各個領域中都有應用。

目前來看,聲紋識別常用的方法包括模板匹配法、最近鄰方法、神經元網絡方法,VQ聚類法等。

語譜圖是聲音信號的一種圖像化的表示方式,它的橫軸代表時間,縱軸代表頻率,語音在各個頻率點的幅值大小用顏色來區分。說話人的聲音的基頻及諧頻在語譜圖上表現為一條一條的亮線,再通過不同的處理手段就可以得到不同語譜圖之間的相似度,最終達到聲紋識別的目的。

目前公安部聲紋鑒別就采用類似方法,而且語譜圖還是用的灰度來表示。主要抽取說話人聲音的基音頻譜及包絡、基音幀的能量、基音共振峰的出現頻率及其軌跡等參數表征,然后再與模式識別等傳統匹配方法結合進行聲紋識別。

美國和國內都有不少企業生產聲紋識別的設備,公安部為采購這些設備還正式頒布了《安防聲紋識別應用系統技術要求》的行業標准。

但是這種方法是一種靜態檢測的方法,存在很大的弊端,實時性不好,動態檢測聲紋的需求實際上更大。

經過數十年的研究,說話人識別系統取得了不俗的性能表現,現已被廣泛應用於包括安防、金融、社保等不同領域中。然而,受各種不確定性因素的制約,當前說話人識別系統仍難言可靠!這些不確定性因素包括非限定的自由文本、各種各樣的傳輸信道、復雜多變的背景噪音、說話人自身的生理波動等等。這些不確定性因素對說話人識別系統提出了巨大的挑戰。

原理特性

                       

典型的聲紋識別模型可以分為兩種:template model和 stochastic model,即模板模型和隨機模型。也稱作非參數模型和參數模型。

模板模型(非參數模型)將訓練特征參數和測試的特征參數進行比較,兩者之間的失真(distortion)作為相似度。例如VQ(Vector quantization矢量量化)模型和動態時間規整法DTW(dynamic time warping)模型。

DTW 通過將輸入待識別的特征矢量序列與訓練時提取的特征矢量進行比較,通過最優路徑匹配的方法來進行識別。而 VQ 方法則是通過聚類、量化的方法生成碼本,識別時對測試數據進行量化編碼,以失真度的大小作為判決的標准。

隨機模型(參數模型)用一個概率密度函數來模擬說話人,訓練過程用於預測概率密度函數的參數,匹配過程通過計算相應模型的測試語句的相似度來完成。(參數模型采用某種概率密度函數來描述說話人的語音特征空間的分布情況,並以該概率密度函數的一組參數作為說話人的模型。)例如(GMM和HMM)高斯混合模型和隱馬爾科夫模型。

 

GMM-UBM

高斯混合模型仍然是與文本無關的說話人識別中效果最好也是最常用的模型之一,因為在說話人識別系統中,如何將語音特征很好地進行總結及測試語音如何與訓練語音進行匹配都是非常復雜難解決的問題,而GMM將這些問題轉為對於模型的操作及概率計算等問題,解決了這些問題。

高斯混合模型可以逼近任何一個連續的概率分布,因此它可以看做是連續型概率分布的萬能逼近器。之所有要保證權重的和為1,是因為概率密度函數必須滿足(+∞,-∞)在內的積分值為1。

GMM-UBM系統利用大量的說話人語音訓練出一個全局背景模型(UBM),因此在較小的訓練集情況下仍然可獲得較為精確的模型,識別性能及魯棒性都很好。

雖然GMM模型作為一種通用的概率模型,對說話人識別的效果很好,但是實際上,我們經常會遇到訓練語音比較短、或者語料比較少的情況,這樣就不能訓練出好的GMM模型,從而使識別率變低。所以在GMM模型的基礎上,Reynolds等人提出了高斯混合模型-全局背景模型(GMM-UBM)。

所謂全局背景模型,就是采用許多人的語音,包括所有目標的語音一起訓練而成的一個高階通過利用UBM模型,由於訓練語音有限而不能覆蓋到的所有說話人特征的部分就可以通過UBM來自適應得到。UBM模型就是一個大型的GMM模型,所以UBM模型也可以利用EM算法來訓練,並且UBM模型只需要訓練一次,在后面便可反復利用。在訓練過程中,通過MAP自適應,可得到毎個說話人的GMM模型。加入UBM后的系統流程如下圖所示。

在計算每個說話人的聲紋模型時,我們采用最大后驗概率MAP算法。

實驗表明,在其他參數都相同的條件下,采用GMM-UBM模型進行識別的結果要優於普通的GMM模型,並且在實驗過程中還可發現,雖然訓練UBM模型較為費時但自適應時卻非常迅速,總體時間比依次訓練GMM模型所花費的時間要少。

GMM模型是一個有監督的訓練過程。它的基本思想就是利用已知的樣本結果來反推最有可能(也就是最大概率)導致該個結果的參數值,在這個原則之下,GMM通常采用最大期望算法(EM)模型進行迭代直到收斂來確定參數。

對於高斯混合模型,也可以使用最大似然估計確定模型的參數,但每個樣本屬於哪個高斯分布是未知的,而計算高斯分布的參數時需要用到這個信息;反過來,樣本屬於哪個高斯分布又是由高斯分布的參數確定的。因此存在循環依賴,解決此問題的辦法是打破此循環依賴,從高斯分布的一個不准確的初始猜測值開始,計算樣本屬於每個高斯分布的概率,然后又根據這個概率更新每個高斯分布的參數。這就是EM算法求解時的做法。

EM算法是一種迭代算法,因為現實的數據經常會有一些含有隱變量或者數據不完整等問題,很難求出極大似然函數,所以利用EM法來解決。

TVM-i-vector

說話人識別中的經典方法是i-vector,其建模方式稱為全局差異空間建模(Total Variability Modeling, TVM),采用該方法提取的i-vector記為TVM-i-vector

基於TVM-i-vector的聲紋識別系統中,我們一般可以分為三個步驟。第一步是統計量的提取,第二步是提取i-vector,第三步是進行信道補償技術。統計量的提取是指將語音數據的特征序列,比如MFCC特征序列,用統計量來進行描述,提取的統計量屬於高維特征,然后經過TVM建模,投影至低維空間中得到i-vector

TVM-i-vector建模中,統計量的提取是以UBM為基礎的,根據UBM的均值及方差進行相應統計量的計算。

基於DNN的說話人識別的基本思想是取代TVM中的UBM產生幀級后驗概率。即采用DNN進行幀級對齊的工作,繼而計算訓練數據的統計量,進行全局差異空間的訓練以及i-vector的提取。

最近使用神經網絡來進行聲紋識別的論文已經改進了傳統的i-vector方法(參考Interspeech教程的原始論文或者幻燈片)。i-vector方法認為說話內容可以被分為兩個部分,一個部分依賴於說話者和信道可變性,另一個部分依賴於其它的相關因素。i-vector聲紋識別是一個多步過程,其涉及到使用不同說話者的數據來估計一個通用的背景模型(通常是高斯混合模型),收集充分的統計數據,提取i-vector,最后使用一個分類器來進行識別任務。

一些論文用神經網絡代替了i-vector流水線的方法。其它研究者要么訓練了一個文本相關(使用者必須說同樣的話)的端對端語者識別系統,要么訓練了文本獨立(這個模型與說話內容不相關)的端對端語者識別系統。

目前沒有詳細證據證明深度神經網絡或組合i-vector的深度神經網絡性能一定優於i-vector方法,可能原因是說話人識別中信道干擾較多,難以搜集足夠數據訓練深度神經網絡。

i-vector概述

傳統的聯合因子分析建模過程主要是基於兩個不同的空間:由本征音空間矩陣定義的說話人空間,由本征信道空間矩陣定義的信道空間。受聯合因子分析理論的啟發,Dehak提出了從GMM均值超矢量中提取一個更緊湊的矢量,稱為i-vector。這里的I是身份(Identity)的意思,出於自然的理解,i-vector相當於說話人的身份標識。

i-vector方法采用一個空間來代替這兩個空間,這個新的空間可以成為全局差異空間,它即包含了說話者之間的差異又包含了信道間的差異。所以i-vector的建模過程在GMM均值超矢量中不嚴格區分話者的影響和信道的影響。這一建模方法的動機來源於Dehak的又一研究: JFA建模后的信道因子不僅包含了信道效應也夾雜着說話人的信息。

現在,主要用的特征是i-vector。這是通過高斯超向量基於因子分析而得到的。是基於單一空間的跨信道算法,該空間既包含了說話人空間的信息也包含了信道空間信息。相當於用因子分析方法將語音從高位空間投影到低維。

可以把i-vector看做是一種特征,也可以看做是簡單的模型。最后,在測試階段,我們只要計算測試語音i-vector和模型的I-vector之間的consine距離,就可以作為最后的得分。這種方法也通常被作為基於i-vector說話人識別系統的基線系統。

數據之間都具有相關性,但絕對的獨立同分布的假設又是一個過於強的假設。
09年,Kenny的學生,N.Dehak,提出了一個更加寬松的假設:既然聲紋信息與信道信息不能做到完全獨立,那干脆就用一個超向量子空間對兩種信息同時建模;即正交獨立性沒有辦法滿足,那我們就干脆用一個子空間同時描述說話人信息和信道信息。 
這時候,同一個說話人,不管怎么采集語音,采集了多少段語音,在這個子空間上的映射坐標都會有差異,這也更符合實際的情況。這個即模擬說話人差異性又模擬信道差異性的空間稱為全因子空間(Total Factor Matrix),每段語音在這個空間上的映射坐標稱作身份向量(Identity Vector, i-vector),i-vector向量通常維度也不會太高,一般在400-600左右。 
I-vector的出現使得說話人識別的研究一下子簡化抽象為了一個數值分析與數據分析的問題:任意的一段音頻,不管長度怎樣,內容如何,最后都會被映射為一段低維度的定長i-vector。
我們只需要找到一些優化手段與測量方法,在海量數據中能夠將同一個說話人的幾段i-vector盡可能分類得近一些,將不同說話人的i-vector盡可能分得遠一些。
Dehak在實驗中還發現i-vector具有良好的空間方向區分性,即便上SVM做區分,也只需要選擇一個簡單的余弦核就能實現非常好的區分性。
截至今日,i-vector在大多數情況下仍然是文本無關聲紋識別中表現性能最好的建模框架,學者們后續的改進都是基於對i-vector進行優化,包括線性區分分析(Linear Discriminant Analysis, LDA),基於概率的線性預測區分分析(probabilistic linear discriminant analysis,PLDA)甚至是度量學習(Metric Learning)等。

雖然i-vector在文本無關聲紋識別上表現非常好,但在看似更簡單的文本相關聲紋識別任務上,i-vector表現得卻並不比傳統的GMM-UBM框架更好。

因為i-vector簡潔的背后是它舍棄了太多的東西,其中就包括了文本差異性,在文本無關識別中,因為注冊和訓練的語音在內容上的差異性比較大,因此我們需要抑制這種差異性;但在文本相關識別中,我們又需要放大訓練和識別語音在內容上的相似性,這時候牽一發而動全身的i-vector就顯得不是那么合適了。

在文本相關識別應用中,安全性最高的仍然是隨機數字聲紋識別。

d-vector

ICASSP 2014年的論文《Deep neural networks for small footprint text-dependent speaker verification 》研究了深度神經網絡(DNNs)在小型文本相關的說話者驗證任務的應用。在開發階段,DNN經過訓練,可以在幀級別對說話人進行分類。在說話人錄入階段,使用訓練好的的DNN用於提取來自最后隱藏層的語音特征。這些說話人特征或平均值,d-vector,用作說話人特征模型。在評估階段,為每個話語提取d-vector與錄入的說話人模型相比較,進行驗證。實驗結果表明基於DNN的說話人驗證與常用的i-vector相比,系統在一個小的聲音文本相關的說話人驗證任務實現了良好的性能表現。此外,基於DNN的系統對添加的噪聲更加穩健,並且在低錯誤拒絕操作點上優於i-vector系統。最后,組合系統在進行安靜和嘈雜的條件分別優於i-vector系統以14%和25%的相對錯誤率(EER)。參考博客

簡而言之,DNN訓練好后,提取每一幀語音的Filterbank Energy 特征作為DNN輸入,從Last Hidden Layer提取Activations,L2正則化(對於兩個向量的l2-norm進行點積,就可以得到這兩個向量的余弦相似性),然后將其累加起來,得到的向量就被稱為d-vector

因為d-vector是從Last Hidden Layer提取的,通過移除Softmax Layer,可以縮減Model Size。而且,這也可以讓我們在不改變Model Size的情況下,在訓練過程中使用更多的說話人數據來做訓練(因為Softmax Layer被移除了,不用考慮Softmax Layer的節點數)。

x-vector

x-vector的訓練速度很快,識別率也不錯。參考論文《X-VECTORS: ROBUST DNN EMBEDDINGS FOR SPEAKER RECOGNITION》【ICASSP 2018】

文章使用數據增廣來提高深度神經網絡(DNN)embedding對於說話人識別的性能。經過訓練以區分說話者的DNN將可變長度的語料映射到我們稱為x-vector的固定維度embedding。

之前的研究發現,embedding比i-vector更好地利用大規模訓練數據集。然而,收集大量用於訓練的標記數據可能具有挑戰性,因此使用數據增廣,包括增加噪聲和混響,作為一種廉價的方法來增加訓練數據的數量並提高魯棒性。

將x-vector與wild和NIST SRE 2016 Cantonese中的i-vector基線進行比較。我們發現雖然增強在PLDA分類器中是有益的,但它對於i-vector提取器沒有幫助。然而,由於其受監督的訓練,x-vector DNN有效地利用了數據增加。因此,x-vector在評估數據集上實現了卓越的性能。

下圖中的左圖為X-vector的網絡結構,前5層是幀級別,然后做了池化后插入兩層段級別的embedding,使用segment6這層作為提取x-vector特征,該特征可以當做i-vector進行plda打分,最后一層是softmax層對於訓練集中所有的說話人目標。比起BNF特征提取要容易的多,BNF需要訓練基於音素的聲學模型,而且提取后的特征又需要進行UBM-i-vector過程,相當耗時。

                        

參考論文《A Study on Pairwise LDA for X-vector based Speaker Recognition》,上圖中的右圖展示了x-vector的提取流程圖。

一些總結

上述方法中,GMM-UBM和GMM-i-vector都屬於統計模型,;d-vector和x-vector屬於深度學習方法。

d-vector(深度神經網絡最后一個隱藏層作為embeddings特征)、x-vector(從TDNN網絡中提取embeddings特征)。

i-vector和x-vector都可以在kaldi中找到相關實驗。

知乎PUePN】GMM-UBM, i-vector, x-vector都是針對文本無關說話人識別提出來的,他們都有normalize phoneme 的隱式操作(average, pooling等等)。但是我們發現在文本相關任務上表現也還ok,但是還ok的前提是我們限定了訓練數據,或者至少限定了plda的數據是文本相關的。

聲紋識別的一些基礎可參考:https://www.cnblogs.com/Vanessa-Feng/p/7465352.html

開源工具

聲紋識別主要的開源工具有:

1.MSR Identity Toolkit ,微軟開源的工具箱,MATLAB版本,包含GMM-UBM和i-vector的demo,簡單易用。

2.Alize,主要包括GMM-UBM、i-vector、JFA三種傳統的方法,C++版,簡單易用。

3.kaldi, 流行的語音識別工具包,也包括聲紋識別:覆蓋了主流的聲紋識別算法(i-vector 、x-vector等),腳本語言,使用不易。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM