声纹识别算法阅读之self-attentive x-vector
論文:
Self-Attentive Speaker Embeddings for Text-Independent Speaker Verification
思想:
本文主要是對x-vector的統(tǒng)計池化結(jié)構(gòu)進行改進,引入self-attention機制,得到帶權(quán)重的均值和標準方差,這樣一方面可以學習時序特征的重要性,另一方面可以有效降低噪聲和靜音等干擾,因而取得了比之x-vector更好的效果
模型:本文模型大體采用x-vector結(jié)構(gòu),只是對統(tǒng)計池化層部分,引入了self-attention機制,將之前等權(quán)重的均值計算,優(yōu)化為帶self-attention權(quán)重的均值,得到句子級別的編碼
幀級別的TDNN:模型的前幾層采用TDNN結(jié)構(gòu)來提取輸入序列幀級別的特征表達,TDNN結(jié)構(gòu)實質(zhì)上就是DNN結(jié)構(gòu),只不過輸入為歷史幀、當前幀和未來幀之間的拼接,并且采用BN進行歸一化,激活為ReLU
self-attention:self-attention是一種非循環(huán)的注意力機制,常用于基于transformer的e2e語音識別任務;一般,self-attention由multi-head attention和feed-forward network串接而成,并且引入skip-connection保證訓練穩(wěn)定;
其中,H={h1,h2,...,hT},H尺寸為dh*T,W1尺寸為dh*da,g()代表激活函數(shù),W2尺寸為da*dr,這樣A尺寸為T*dr
A的每一列代表一個權(quán)重向量,不同的列代表self-attention中不同head學習不同的說話人區(qū)分性特征,E為權(quán)重均值
句子級別的DNN:self-attention后接兩層DNN,學習具有區(qū)分性的說話人編碼
PLDA:將不同的說話人編碼中心化,LDA降維并長度歸一化后進行PLDA計算,即計算兩個說話人編碼屬于同一說話人和不同說話人似然的比值,得到相似度得分
訓練:
數(shù)據(jù)集
訓練集
Switchboard 2 Phase 1, 2, 3 and Switchboard Cellular:2.6k speakers 28k utts
NIST SREs data from 2004 to 2010 along with Mixer 6: 4.4k speakers 63k utts
數(shù)據(jù)增強:MUSAN噪聲(babble, music, noise), and 模擬混響reverb
驗證集:SRE16,enroll segments 60s;test segments 10~60s
模型參數(shù)
輸入特征:包含上下文的115維特征
幀級別DNN:4*TDNN layer(512節(jié)點)+1*TDNN layer(1500節(jié)點)
self-attention:da=500
句子級別DNN:2*DNN(512)
LDA: 512->150
實驗:
基于self-attention的x-vector能夠提升說話人驗證效果;增加self-attention的head個數(shù)有助于學到更多更具區(qū)分性的說話人特征;從實驗效果來看,帶權(quán)重均值+標準差能夠更好的結(jié)果
從DCF曲線來看,self-attention相比x-vector能夠降低錯誤接受率和錯誤拒絕率;增加head個數(shù)或采用mean+stddev有助于進一步降低錯誤接受率和錯誤拒絕率
test segments越長時,包含說話人信息越多,相應的說話人確認效果越好
結(jié)論:
本文提出了基于self-attention的x-vector結(jié)構(gòu),將之前的等權(quán)重的均值轉(zhuǎn)化為帶權(quán)重的均值向量,并且通過增加head個數(shù)可以使模型學到更多具有說話人區(qū)分性的特征;在文本無關說話人驗證任務實驗中,該方法取得了比x-vector更好的效果。
Reference:
[1]http://speak.clsp.jhu.edu/uploads/publications/papers/1048_pdf.pdf(TDNN)
[2]http://www.danielpovey.com/files/2018_interspeech_xvector_attention.pdf(本文)
總結(jié)
以上是生活随笔為你收集整理的声纹识别算法阅读之self-attentive x-vector的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用于调试的printf函数和自定义log
- 下一篇: 即将到来的“分布式云”(DPaaS):分