聲紋識別算法閱讀之x-vector


論文:
  X-VECTORS: ROBUST DNN EMBEDDINGS FOR SPEAKER RECOGNITION
思想:
  X-VECTORS是當前聲紋識別領域主流的baseline模型框架,得益於其網絡中的statistics pooling層,X-VECTORS可接受任意長度的輸入,轉化為固定長度的特征表達;此外,在訓練中引入了包含噪聲和混響在內的數據增強策略,使得模型對於噪聲和混響等干擾更加魯棒;
注: 該模型結構可參見作者17的論文[1]:Deep Neural Network Embeddings for Text-Independent Speaker Verification
模型:
  X-VECTORS包含多層幀級別的TDNN層,一個統計池化層和兩層句子級別的全連接層,以及一層softmax;損失函數為CE交叉熵
  • TDNN:從結構上看TDNN每一層仍然是DNN,只是其每層的輸入由歷史、當前和未來的特征拼接而層,從而引入時序信息;TDNN結構的優勢在於,其相對於LSTM可以並行化訓練,又相對於DNN增加了時序上下文信息
  • statistics pooling:該統計池化層將輸入序列所有幀的TDNN輸出取均值和標准差,再將二者拼接起來,得到句子級別的特征表達
  • embedding層:X-VECTORS的兩層embedding均具有較好的特征表達能力,在kaldi的SRE16、Voxceleb、SITW項目中均采用了embeding a作為說話人編碼
  • softmax:softmax的節點數為訓練集說話人個數
訓練:
  • 數據集:
  1. SWBD:2.6k spekaers 28k recordings
  2. SRE:4.4k speakers 63k recordings
  3. voxceleb:1191 speakers 20k recordings
  • 數據增強:
  1. 噪聲[2]

      babble(13-20dB SNR)

      music(5-15dB SNR)

      noise(0-15dN SNR)

  1. 混響[3]:RIRS
  • 預處理:基於能量的SAD,去靜音
  • 輸入特征:24維fbank
  • apply-cmvn-slide,滑窗長度3s
  • X-VECTORS結構參數:5*TDNN+1*stats pooling+2*DNN+softmax
  • 相似度得分計算:每個輸入序列輸入到X-VECTORS,第6層輸出的embedding作為其特征表達;計算test和enroll特征表達的PLDA[4]得分
實驗:
  • X-VECTORS取得較好結果的一個原因在於其數據增強策略,能夠提升模型的魯棒性
  • X-VECTORS在SRE和SITW上的表現均優於傳統框架i-vector,無論是錯誤拒絕率還是錯誤接受率方面,均具有明顯的優勢
 
結論:
  本文提出了一種稱為X-VECTORS的算法,該算法得益於多層TDNN結構和stats pooling層,能夠將幀級別的輸入特征轉化為句子級別的特征表達embeddding;在計算相似度時,參照i-vector,也采用了人臉識別中的經典算法PLDA來計算相似度得分;此外,論文在訓練時還引入了噪聲和模擬混響數據增強,提升了模型對噪聲和混響的魯棒性
幾個基於kaldi的x-vectors的項目開源模型,親測泛化能力都不錯,並作為了自己項目的初始化模型
Reference:
[3] RIRS_NOISES( http://www.openslr.org/28/)


免責聲明!

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



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