這是學習時的筆記,包含相關資料鏈接
歡迎感興趣的小伙伴一起討論,跪求大神指點~
聲紋識別
tags: voice
聲音特性
- 語音的特殊性。發音器官分為聲門上系統、喉系統、聲門下系統,每個人都有自己的一套發音器官,它們的形態、構造各有差別,每次發音需要眾多發音器官相互配合、共同運動。這決定了語音的物理屬性(也稱語音四要素):音質、音長、音強、音高。這些物理量人各不同,因而語音在聲紋圖譜上呈現不同的聲紋特征,根據這些聲紋特征參數,我們不但可以區分語聲,而且可以認定同一人的語聲。
- 語音的穩定性。一個人的發音器官發育成熟后,其解剖結構和生理狀態是穩定不變的,加之發音人的言語習慣等語音的社會心理屬性,使得每個人在不同時段所說的相同文本內容的話,基本語音特征是穩定不變的。因此,你可以把人的聲道看做管樂中的號,長號、短號雖然都是號,但由於聲道的形狀、長短不同,吹出來的音質也不同。
聲紋識別綜述
發展歷史
新加坡的I2R實驗室發布了一套用於評測文本相關識別的 標准數據集RSR2015,涵蓋了文本相關領域的多個應用場景。
在聲紋識別,包括語音識別領域,傳統的聲學特征包括梅爾倒譜系數MFCC、感知線性預測系數PLP、近幾年的逐漸受到關注的深度特征Deep Feature、以及15年公開發表的能量規整譜系數PNCC等,都能作為聲紋識別在特征提取層面可選且表現良好的聲學特征。
1. GMM
GMM中高斯分量的數量足夠多的時候,GMM可以模擬任意的概率分布。
從模式識別的相關定義上來說,GMM是一種參數化(Parameterized)的生成性模型(Generative Model),具備對實際數據極強的表征力;但反過來,GMM規模越龐大,表征力越強,其負面效應也會越明顯:參數規模也會等比例的膨脹,需要更多的數據來驅動GMM的參數訓練才能得到一個更加通用(或稱泛化)的GMM模型。
2. UBM
DA Reynolds的團隊,提出了一種改進的方案:既然沒法從目標用戶那里收集到足夠的語音,那就換一種思路,可以從其他地方收集到大量非目標用戶的聲音,積少成多,我們將這些非目標用戶數據(聲紋識別領域稱為背景數據)混合起來充分訓練出一個GMM,這個GMM可以看作是對語音的表征,但是又由於它是從大量身份的混雜數據中訓練而成,它又不具備表征具體身份的能力。
這個混合GMM類似於貝葉斯框架的先驗模型,它對語音特征在空間分布的概率模型給出了一個良好的預先估計,我們不必再像過去那樣從頭開始計算GMM的參數(GMM的參數估計是一種稱為EM的迭代式估計算法),只需要基於目標用戶的數據在這個混合GMM上進行參數的微調即可實現目標用戶參數的估計,這個混合GMM叫**通用背景模型**(Universal Background Model,UBM)。
UBM的一個重要的優勢在於它是通過最大后驗估計(Maximum A Posterior,MAP)的算法對模型參數進行估計,避免了過擬合的發生。MAP算法的另外一個優勢是我們不必再去調整目標用戶GMM的所有參數(權重,均值,方差)只需要對各個高斯成分的均值參數進行估計,就能實現最好的識別性能。
但是,待估參數還是太多了,檢測時需要輸入的語音片段太長,不符合實際使用需求。
GMM-UBM缺乏對應於信道多變性的補償能力,直白點說就是它不抗干擾。
UBM受訓練時長、混合度、信道類型、男女比例等因素影響比較大。
3. 支持向量機
WM Campbell將支持向量機(Support Vector Machine,SVM)引入了GMM-UBM的建模中,通過將GMM每個高斯分量的均值單獨拎出來,構建一個高斯超向量(Gaussian Super Vector,GSV)作為SVM的樣本,利用SVM核函數的強大非線性分類能力,在原始GMM-UBM的基礎上大幅提升了識別的性能,同時基於GSV的一些規整算法,例如擾動屬性投影(Nuisance Attribute Projection, NAP),類內方差規整(Within Class Covariance Normalization,WCCN)等,都在一定程度上補償了由於信道易變形對聲紋建模帶來的影響。
4. FA因子分析
在MAP框架下,我們都是單獨去調整GMM的每一個高斯分量,參數太多太累了,那有沒有辦法同時調整一串高斯分量呢?
借助一種稱為因子分析(Factor Analysis,FA)的算法框架,只用數百個基向量的線性組合(每個基向量的權重就可以看作是在這個基坐標上的坐標點),就足夠能表征全體高斯超向量的變化了,也就是說,我們現在只需要幾百個變量(通常為400-600),就足夠表示一個50000維度的高斯分量均值集合!
基向量的估計是通過一種稱為基於概率的主成份分析的(Probabilistic Principal Component Analysis, PPCA)的類EM算法,基於海量的背景說話人數據學習而來。這樣少量的數據就能實現GMM高斯分量的整體參數估計,隨着數據量的增加,GMM會迅速趨於一個穩定的參數估計。
5. JFA聯合因子分析
加拿大蒙特利爾研究所(Computer Research Institute of Montreal,CRIM)的科學家兼公式推導帝Patrick Kenny在05年左右提出了一個設想,既然聲紋信息可以用一個低秩的超向量子空間來表示,那噪聲和其他信道效應是不是也能用一個不相關的超向量子空間進行表達呢?
基於這個假設,Kenny提出了聯合因子分析(Joint Factor Analysis,JFA)的理論分析框架,將說話人所處的空間和信道所處的空間做了獨立不相關的假設,在JFA的假設下,與聲紋相關的信息全部可以由特征音空間(Eigenvoice)進行表達,並且同一個說話人的多段語音在這個特征音空間上都能得到相同的參數映射,之所以實際的GMM模型參數有差異,都是由特征信道(Eigenchannel),即信道效應的干擾導致的,我們只需要同時估計出一段語音在特征音空間上的映射和特征信道上的映射,然后撇掉特征信道上的干擾就可以實現更好的聲紋環境魯棒性。
6. 全因子空間 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表現得卻並不比傳統的GMM-UBM框架更好。
因為i-vector簡潔的背后是它舍棄了太多的東西,其中就包括了文本差異性,在文本無關識別中,因為注冊和訓練的語音在內容上的差異性比較大,因此我們需要抑制這種差異性;但在文本相關識別中,我們又需要放大訓練和識別語音在內容上的相似性,這時候牽一發而動全身的i-vector就顯得不是那么合適了。
在文本相關識別應用中,安全性最高的仍然是隨機數字聲紋識別。
趨勢 && 問題
經常用的有gmm-ubm,ivector-plda,deep feature,bottleneck feature 還有一些d-vector對數據量要求比較大的,主流的還是用nn去提取特征
再補充幾個,MFCC、Fbank、BNF特征,GMM-UBM、ivector+PLDA/CDS、GMM+SVM、d-vector最近也挺火的自從谷歌帶起來
http://www.leiphone.com/news/201611/ISBPJpacXH5bI7hE.html?_t=t
轉wav、去靜音VAD,MFCC提取、CVN歸一化等等根據語料的情況做出要用哪些怎么處理;接着是訓練GMM-UBM,訓練出每個高斯分量的參數(均值方差權值),當中是使用EM和MAP;接着是訓練總體變化子空間T,使高斯分量從高維映射到低維的i-vector,得到i-vector矢量以后要繼續從400維降到200維,比較多用的是LDA,然后用WCCN對類內空間歸一化來提升類間的差異;這樣就可以得到該speaker的均值和方差作為一個對比的根據。最后把待識別的speaker也經過上面的步驟,得到待識別的參數,再和訓練speakers進行打分判斷哪個相似度更高;打分的方法可以用PLDA概率形式LDA或者CDS余弦距離打分。要實現更低的EER適應復雜噪聲環境,可以用到DNN的Bottleneck方法提取speaker的充分統計量,而且各種算法合理組合優化也成了目前趨勢。
- 存在的問題
跨信道、短語音、背景噪聲、健康狀況、說話人情感變化等
文本無關的聲紋識別
語音--預處理--提取特征向量--模式匹配(根據特征向量訓練聲紋模型庫)--后處理--識別結果
模式匹配方法概論
(1)模板匹配方法:利用動態時間彎折(DTW)以對准訓練和測試特征序列,主要用於固定詞組的應用(通常為文本相關任務);在訓練過程中從每個說話人的訓練語句中提取相應的特征矢量來描述各個說話人的行為,在測試階段,從說話人的測試語音信號中用同樣的方法提取測試模板,主要有動態時間規整方法和矢量量化方法。
(2)最近鄰方法:訓練時保留所有特征矢量,識別時對每個矢量都找到訓練矢量中最近的K個,據此進行識別,通常模型存儲和相似計算的量都很大;
(3)神經網絡方法:有很多種形式,如多層感知、徑向基函數(RBF)等,可以顯式訓練以區分說話人和其背景說話人,其訓練量很大,且模型的可推廣性不好;
(4)隱式馬爾可夫模型(HMM)方法:通常使用單狀態的HMM,或高斯混合模型(GMM),是比較流行的方法,效果比較好;
(5)VQ聚類方法(如LBG,K-均值):效果比較好,算法復雜度也不高,和HMM方法配合起來更可以收到更好的效果;
(6)多項式分類器方法:有較高的精度,但模型存儲和計算量都比較大。
表征說話人確認系統性能的兩個重要參數是錯誤拒絕率和錯誤接受率,前者是拒絕真正說話人而造成的錯誤,后者是接受集外說話人而造成的錯誤,二者與閾值的設定相關。在現有的技術水平下,兩者無法同時達到最小,需要調整閾值來滿足不同應用的需求,比如在需要“易用性”的情況下,可以讓錯誤拒絕率低一些,此時錯誤接受率會增加,從而安全性降低;在對“安全性”要求高的情況下,可以讓錯誤接受率低一些,此時錯誤拒絕率會增加,從而易用性降低。
聲紋提取及識別
[MFCC+GMM]
-
對輸入的語音數據序列(PCM 碼流)進行預處理。
a) 去除非語音信號 和 靜默語音信號;
b) 對語音信號分幀,以供后續處理。 -
提取每一幀語音信號的MFCC 參數 並保存。
1)預增強(Pre-Emphasis) :差分語音信號。
2)音框化(Framing) :對語音數據分幀。
3)漢明窗(Hamming Windowing) :對每幀信號加窗,以減小吉布斯效應的影響。
4)快速傅立葉變換(FFT) :將時域信號變換成為信號的功率譜。
5)三角帶通濾波器(Triangle Filters) :三角濾波器覆蓋的范圍都近似於人耳的一個臨界帶寬,以此來 模擬人耳的掩蔽效應。
6)離散余弦轉換(DCT) :去除各維信號之間的相關性,將信號映射到低維空間。 -
用第2 步提取的 MFCC 參數訓練話者的 GMM (高斯混合模型),得到專屬某話者的 GMM 聲紋模型。
-
聲紋識別。提供輸入話音與GMM 聲紋模型的匹配運算函數,以判斷輸入話音是否與聲紋匹配。
GMM-UBM系統框架
- [ ] 不大明白
高斯混合模型GMM將空間分布的概率密度用多個高斯概率密度函數的加權和來擬合,可以平滑地逼近任意形狀的概率密度函數,並且是一個易於處理的參數模型。在具體表示上,這個模型實際上就是把高斯混合模型的每個高斯分量的均值向量排列在一起組成一個超向量作為某一個說話人的模型,稱為均值超矢量。
在訓練說話人模型的時候,由於注冊時說話人的數據稀疏,通常利用一個通用背景模型(Universal Background Model,UBM)和少量的說話人數據,通過自適應算法(如最大后驗概率MAP,最大似然線性回歸MLLR等)得到目標說話人模型。
對數似然比的評價指標。用測試數據分別與模型和UBM進行似然度比較,然后將這兩個似然相除再取對數,用得到的值作為打分來評價一條測試數據是否和模型匹配。由於UBM代表了最最普遍的平凡的語音特征,而模型代表了屬於這一個說話人的特征。用對數似然比來表示,就是評價測試數據到底和模型更接近還是和UBM最接近。最后設定一個閥值,用來進行最后的分類判斷。
UBM平均每個混合得到100幀左右訓練樣本時,能夠獲得較高且較穩定識別率
聯合因子分析
信道魯棒
聯合因子分析認為,在GMM-UBM系統中的高斯模型均值超矢量,大體上可以分為跟說話人本身有關的矢量特征和跟信道以及其他變化有關的矢量特征的線性疊加。也就是,將說話人GMM均值超矢量所在的空間划分為本征空間,信道空間,最后還有一個殘差空間。這樣,如果我們能抽取出跟說話人本身相關的特征而去掉和信道相關的特征,就能很好地克服信道影響進行識別了。
I-vector特征
受聯合因子分析理論的啟發,Dehak提出了從GMM均值超矢量中提取一個更緊湊的矢量,稱為I-Vector。這里的I是身份(Identity)的意思,出於自然的理解,I-Vector相當於說話人的身份標識。
信道補償算法
信道補償主要分三個層次:基於特征的補償,基於模型的補償和基於得分的補償。
LDA線性鑒別分析
LDA至多可生成C-1維子空間(C為分類類別數),LDA降維后的度區間在 [1,C-1] ,與原始特征數n無關,因此二分類問題至多可以降維到一維,導致有些線性不可分數據分布情況無法分類。在說話人識別中,大部分情況是二分類問題,所以這里LDA的作用是將原始高維特征數據降維到一維,這樣每一個樣本特征向量映射為一維上的一個點,這個點的數值表示該點到原點的距離。
當一個說話人有很多語音時,表現為這些語音在說話人空間中聚集為一簇。如果這些語音收到信道的影響,那么就表現為這個說話人的語音的方差很大。然后,LDA嘗試着找到一個新的方向,將原來的所有數據投影到這個方向,使得在這個方向中同一說話人的數據具有最小的類內方差,同時不同說話人之間的距離盡量大。這樣,就達到減小信道差異的影響了。
LDA其實也是一種降維方法。它盡量去移除不需要的方向,最小化類內的方差信息量。也就是,LDA尋找一個新的方向去更好地對不同的類做出分類。可見,LDA非常適合作為說話人識別系統的信道補償算法。
當使用LDA對測試數據和模型的I-vector進行重新投影后,然后計算它們之間的cosine距離,就可以作為最后的得分。
最后簡單說一下,LDA如何找到這個映射方向。前面不是說LDA的目的是最大化類間距離,最小化類內距離么。我們很容易認為只要定義一個目標函數然后去用一般的最優化方法去求近似解就好了。其實,不用這么麻煩的,LDA是可以直接求取解析解的。具體方法就是對目標函數求導並且令導數為零。但是在求導之前,記得對分母進行歸一化,因為如果不歸一化的話,映射方向擴大任意倍等成立,所以不好確定映射方向的具體值。
OK,求解析解的過程中,經過一系列變化,我們最終只要求出原始樣本的均值和方差就可以最佳映射方向 w,這就是Fisher 於 1936年提出的線性判別分析。
PLDA(概率線性判別分析)算法
Paper
- DNN方法
- Speaker Recognition Using Wavelet Packet Entropy(小波包熵), I-Vector, and Cosine Distance Scoring
- An overview of text-independent speaker recognition:From features to supervectors
GMM+UBM
i-vector
-
PLDA in the i-supervector space for text-independent speaker verification: GOOD HELPFUL
-
基於短語音和信道變化的說話人識別研究: 全面 清楚
Blog
-
中科院不公開論文摘要(2016.5)
聲紋識別是根據語音對說話人進行自動區分,從而進行說話人身份鑒別以及認證的生物特征識別技術。其中,文本無關的聲紋識別更是由於其應用環境的靈活性,成為學術界以及工業界的一個研究熱點。本文將以文本無關的聲紋識別為研究重點,致力於完成一個完善的且性能良好的聲紋識別系統。主要采用四種建模方法進行研究以及系統實現,包括:
1、介紹基於GMM-UBM的聲紋識別系統,以此為基礎,研究並實現了基於TVM-I-Vector的聲紋識別系統。混合高斯-通用背景模型(Gaussian Mixture Model-Universal Background Model,GMM-UBM)將聲學特征投影到高維空間上,得到高維的均值超矢量。UBM采用大規模的說話人語料訓練完成,並因此可以被采進行說話人的共性特征的描述。然后,以UBM為初始模型,采用目標說話人數據進行基於最大后驗概率(Maximum A Posterior, MAP)的自適應訓練,得到目標說話人的混合高斯模型(GMM)。通過計算似然值的方法進行說話人打分,進而進行識別判決。說話人矢量因子(Identity-Vector,I-Vector)模型以GMM-UBM為基礎,基於的假設是所有的說話人信息隱含在高維的均值超矢量中。它的基本思想是將高維的均值超矢量投影至低維空間中進行建模,即將長短不一的語音文件通過全局差異空間建模(Total Variable space Model, TVM)的方式,得到長度一致的低維向量作為說話人模型。這個低維矢量即為I-Vector。由於I-Vector建模中沒有區分語音中說話人信息以及信道信息,為了降低信道對識別的影響,本文分別采用了線性判別分析(Linear Discriminant Analysis,LDA)以及概率線性判別分析(Probability Linear Discriminant Analysis,PLDA)對I-Vector進行信道補償,提高識別效果。
2、研究並實現了基於DNN統計量提取的I-Vector聲紋識別系統。在基於TVM-I-Vector的聲紋識別系統中,采用UBM計算后驗概率,提取相關統計量,從而進行全局差異空間的估計。考慮到UBM數據驅動的建模方式可能會導致后驗概率計算的誤差較大,從而影響識別性能,本文采用自動語音識別(Automatic Speech Recognition, ASR)任務中訓練得到的深度神經網絡(Deep Neural Network, DNN)模型作為計算后驗概率的模型替代UBM,以得到更准確的統計量進行模型估計,從而提高識別效果。
3、研究並實現了基於深度瓶頸特征(Deep Bottleneck Feature, DBF)的I-Vector聲紋識別系統。深度瓶頸層(Deep Bottleneck Layer)在語音識別中的成功應用證明了DBF在特征表示上的優勢。低維的DBF在網絡結構中能夠實現高維輸入至輸出的重現,說明它是一種抽象、凝練且更具區分性的特征。相比於聲紋識別中的Mel頻率倒譜系數 (Mel Frequency Cepstral Coefficients, MFCC)特征,DBF在聲紋識別上也表現出了一定的優勢。在本文中,實現了基於DBF的I-Vector模型的估計。此外,考慮到MFCC以及DBF的互補作用,進行了基於DBF以及MFCC特征融合的I-Vector建模,進一步提高聲紋識別系統的性能。
有些可能記錄時忘記記錄獲取信息的網站地址,有不當之處請指正~~
(若非特別聲明,文章均為Vanessa的個人筆記,轉載請注明出處。文章如有侵權內容,請聯系我,我會及時刪除)