說話人識別/聲紋識別學習路徑的資料整理,從零學聲紋識別

昨天幫新同事講解了一波說話人識別的理論,並且幫他整理了資料讓他學習,

這個博客就是把最具有代表性的資料記錄下來,前提,我假設你知道啥是MFCC,啥是VAD,啥是CMVN了.

說話人識別學習路徑無非就是 GMM-UBM -> JFA -> Ivector-PLDA -> DNN embeddings -> E2E

 首先 GMM-UBM, 最經典代表作: Speaker Verification Using Adapted Gaussian Mixture Models

從訓練普遍人聲紋特徵的UBM到經過MAP的目標人GMM-UBM到後面的識別的分數似然比,分數規整都有介紹,老哥Reynold MIT教授,這篇論文可以說是說話人識別開發者必讀

(然後,直接跳過JFA吧)JFA太多太繁瑣,但假如你是個熱愛學習的好孩子,那想必這篇論文你應該很喜歡 Patrick Kenny的: Eigenvoice Modeling With Sparse Training Data

 

接下來我們來看看Ivector, ivector的理論,ivector 總變化空間矩陣的訓練.

首先你需要知道Ivector的理論知識, 所以經典中的經典: Front-End Factor Analysis for Speaker Verification

訓練算法推薦: A Straightforward and Efficient Implementation of the Factor Analysis Model for Speaker Verification

但假如你很喜歡數學,Patrick Kenny的這篇結合Eigenvoice應該很適合你: A Small Footprint i-Vector Extractor

到這裏,基本上從GMM-UBM 到IVECTOR的理論和訓練,你只要讀完以上,再加上kaldi的一些小實驗,相信聰明的朋友們絕對沒問題.

Kaldi參考:train_ivector_extractor.sh和extract_ivector.sh,注意要看他們的底層C++,對着公式來,然後注意裏面的符號跟論文的符號是不同的,之前的博客有說過. 你會發現,跟因子分析有關的論文不管是JFA還是Ivector都會有Patrick Kenny這個人物!沒有錯,這老哥公式狂魔,很猛很變態,對於很多知識點,跟着它公式推導的思路來絕對會沒錯,但對於像我這種數學渣,我會直接跳過.

記下來我們來看看PLDA的訓練和打分

首先, 需要知道PLDA的理論,他從圖像識別發展而來的,也跟因子分析有關.參考:Probabilistic Linear Discriminant Analysis for Inferences About Identity

PLDA的參數訓練請主要看他的EM的算法,在該論文的APPENDIX裏面

接着是PLDA的打分識別,請參考:  Analysis of I-vector Length Normalization in Speaker Recognition Systems

將EM訓練好的PLDA參數結合着兩個IVECTOR進行打分, 這篇論文值得擁有,另外推薦Daniel Garcia-Romero,這老哥的論文多通俗易懂, 重點清晰不含糊, 並且這老哥在speaker diarization的造詣很高,在x-vector也很活躍,十分推薦.

接着來看看深度學習的東西

首先給個直覺,爲什麼要用深度學習,說話人能用DNN,如何借鑑語音識別在DNN的應用,參考: NOVEL SCHEME FOR SPEAKER RECOGNITION USING A PHONETICALLY-AWARE DEEP NEURAL NETWORK

有了DNN的技術後, 各種老哥們開始用embeddings的方法取代ivector的方法,最開始的是GOOGLE的 d-vector

d-vector: DEEP NEURAL NETWORKS FOR SMALL FOOTPRINT TEXT-DEPENDENT SPEAKER VERIFICATION

d-vector: End-to-End Text-Dependent Speaker Verification

 

然後衆所周知,說話人識別or聲紋識別對語音的時長是很敏感的,短時音頻的識別性能是決定能不商用的一個很關鍵的點,所以x-vector應運而生,也是JHU的那幫人,就是Kaldi的團隊

x-vector前身 : DEEP NEURAL NETWORK-BASED SPEAKER EMBEDDINGS FOR END-TO-END SPEAKER VERIFICATION

x-vector底座: IME DELAY DEEP NEURAL NETWORK-BASED UNIVERSAL BACKGROUND MODELS FOR SPEAKER RECOGNITION

x-vector正宮: X-VECTORS: ROBUST DNN EMBEDDINGS FOR SPEAKER RECOGNITION

 

然後然後呢,牛逼的Triplet Loss出來了, 輸入是一個三元組,目的就是提升性能,(但我實驗的過程經常會不收斂,攤手,本渣也不知道爲什麼)

Triplet Loss : TRISTOUNET: TRIPLET LOSS FOR SPEAKER TURN EMBEDDING

Triplet Loss : End-to-End Text-Independent Speaker Verification with Triplet Loss on Short Utterances

Deep speaker:  Deep Speaker: an End-to-End Neural Speaker Embedding System

 

emmm, 感覺看完這些論文加上實踐,大概若干年後,你已經能成爲一個牛逼的聲紋識別算法工程師

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章