kaldi中的xvector训练(aisell v1)

作一个记录。

总说明文档(kaldi团队官方)
https://david-ryan-snyder.github.io/2017/10/04/model_sre16_v2.html

github地址
https://github.com/kaldi-asr/kaldi/pull/1896/

网络结构是基于18年的这篇论文的
X-VECTORS: ROBUST DNN EMBEDDINGS FOR SPEAKER RECOGNITION

The system, built for speaker recognition, consists of a TDNN with a
statistics pooling layer. It’s trained to classify a list of speakers
using a multiclass cross entropy objective. In the future, this will
probably be extended to include “same vs different” training. After
training, the last few layers of the network are removed, and
variable-length utterances are mapped to fixed-dimensional embeddings
that are used in a PLDA backend (like ivectors). We’re calling these
embeddings “xvectors” in Kaldi speaker recognition recipes. This is
based on “X-vectors: Robust DNN Embeddings for Speaker Recognition”
which was persented at ICASSP 2018.

kaldi中的xvector训练(aisell v1)_第1张图片
——————————————————————————————————————————
下面开始操作
——————————————————————————————————————————

1. get trainning example

首先使用/home/hsh/kaldi/egs/aishell/v1/sid/nnet3/xvector/get_egs.sh
去prepare aishell数据集的xvector trainning example
修改了一些参数:
25行min_frames_per_chunk=30
26行max_frames_per_chunk=300
168行–randomize-chunk-length true
181行–randomize-chunk-length true
然后才成功-----Finished preparing training examples

2. trainning

由于前面已经得到trainning example,
所以不再需要stage4。
删掉~/kaldi/egs/sre16/v2/local/nnet3/xvector/tuning/run_xvector_1a.sh中的stage4的内容。
得到一个新的~/kaldi/egs/aishell/v1/sid/nnet3/xvector/run_xvector_1a.sh。

然而运行报错:
kaldi中的xvector训练(aisell v1)_第2张图片
估计是 num-jobs-final=8导致(前面在第一步的时候,好像看到archives=6)。
改成num-jobs-final=4试一试。

依旧报错,
kaldi中的xvector训练(aisell v1)_第3张图片
估计可能是依赖文件的路径有问题,因为这是从sre16里直接复制过来的。
将/home/hsh/kaldi/egs/aishell/v1/sid/nnet3/xvector/run_xvector_1a.sh里的依赖文件都改成sre16路径下的试一试
kaldi中的xvector训练(aisell v1)_第4张图片
改成:
kaldi中的xvector训练(aisell v1)_第5张图片
还是报错。

google后发现,在本地单机上训练时,无需使用queue,也就是cmd.sh里的train_cmd可以改成run.pl。
上面依赖文件的修改还是改回来吧。
kaldi中的xvector训练(aisell v1)_第6张图片
kaldi中的xvector训练(aisell v1)_第7张图片

再跑一次。
报错
在这里插入图片描述
google到dan povey的邮件解决方案
https://groups.google.com/forum/#!topic/kaldi-help/oVAXwIECg0A

change --num-jobs-{initial,final} to 1

改完之后,再跑~
依旧报错,不过这次只有一个log文件train.0.1.log(前面有3个,嫌碍眼扔trash了)
翻看log里的第一个error
在这里插入图片描述
没有0.raw这个文件。
翻看日志,是nnet3-train.cc里有问题,缺了参数。
google到这个raw-model是由nnet3-init.cc生成的(也对,毕竟没有“初始化”)。
所以单独执行一下~/kaldi/src/nnet3bin/nnet3-init
在这里插入图片描述
然后生成了(很困)
kaldi中的xvector训练(aisell v1)_第8张图片

再跑一边训练脚本看看。
成功训练了,记录一下。
kaldi中的xvector训练(aisell v1)_第9张图片

你可能感兴趣的:(kaldi中的xvector训练(aisell v1))