Kaldi中說(shuō)話人識(shí)別打分流程

參考腳本:egs/voxceleb/v2

提取Xvector

假設(shè)我們已經(jīng)完成了train.sh的訓(xùn)練,并生成了相應(yīng)的模型數(shù)據(jù),諸如:final.raw,mean.vec.plda.transform.mat等

確認(rèn)必要文件存在

模型目錄下須有final.raw、min_chunk_size、max_chunk_size
數(shù)據(jù)目錄下須有feats.scp、vad.scp

根據(jù)final.raw和extract.config生成新的網(wǎng)絡(luò)

extract.config文件中只有1行:output-node name=output input=tdnn6.affine,表示以第6層作為提取層,該文件是在local/nnet3/xvector/run_xvector.sh腳本stage7中設(shè)置的
final.raw:顧名思義,是訓(xùn)練網(wǎng)絡(luò)后的最終產(chǎn)物,通過(guò)nnet3-info fianl.raw可以查看具體配置

工具:/src/nnet3bin/nnet3-copy

按speaker劃分文件

在注冊(cè)enroll與驗(yàn)證test目錄下,有這些文件:feats.scp spk2utt utt2dur utt2num_frames utt2spk vad.scp wav.scp,因?yàn)槭遣⑿刑幚恚孕枰鶕?jù)設(shè)定的nj數(shù)將數(shù)據(jù)分塊。

工具:utils/split_scp.pl、utils/utt2spk_to_spk2utt.pl

1)用utils/split_scp.pl將utt2spk分在split40/目錄下的40個(gè)子文件夾下,每個(gè)speaker的所有utt必須都在同一個(gè)文件夾下
2)用utils/utt2spk_to_spk2utt.pl將各目錄下的utt2spk轉(zhuǎn)化為spk2utt(因?yàn)闆](méi)有以speaker為索引的文件,所以這步可以省略)
根據(jù)子目錄下的utt2spk,以u(píng)tt為索引,生成各自的feats.scp spk2utt utt2dur utt2num_frames vad.scp wav.scp

提取MFCC

工具:/src/featbin/apply-cmvn-sliding、/src/ivectorbin/select-voiced-frames
將每個(gè)子目錄下的feats.scp文件進(jìn)行CMVN與VAD(根據(jù)各自目錄下的vad.scp文件)

提取xvector

工具:/src/nnet3bin/nnet3-xvector-compute
根據(jù)nnet網(wǎng)絡(luò)和MFCC,提取出每個(gè)子目錄下的xvector并放至模型文件夾下

聚合x(chóng)vector并按speaker拆分

工具:/src/ivectorbin/ivector-mean
將所有utt的xvector都集中在xvector.scp中,并根據(jù)spk2utt取每個(gè)人的均值xvector,存放于spk_xvector.{scp,ark},并得到num_utts.ark文件,該文件記錄每個(gè)說(shuō)話人的utt數(shù)目

PLDA打分

準(zhǔn)備PLDA模型

復(fù)制train目錄下的PLDA模型,并對(duì)類內(nèi)協(xié)方差進(jìn)行平滑處理
工具:/src/ivectorbin/ivector-copy-plda

去中心化

對(duì)xvector去均值處理,均值使用mean.vec
工具:/src/ivectorbin/ivector-subtract-global-mean

向量投影

對(duì)去均值后的向量進(jìn)行投影以最大化類間差距,投影矩陣為transform.mat
工具:/src/bin/transform-vec

向量長(zhǎng)度歸一化

工具:/src/ivectorbin/ivector-normalize-length

計(jì)算相似度

注冊(cè)用的是spk_xvector.scp,也就是每個(gè)人的均值xvector(模型),但是測(cè)試使用的是xvector.scp,也就是每句話的xvector,比較兩個(gè)向量與plda模型的相似度
工具:/src/ivectorbin/ivector-compute-lda

流程圖整理如下:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容