在服务器上运行kaldi说话人识别模型训练程序遇到的小问题

服务器上已开启安装了kaldi工具的docker容器,开启方法见上一篇博客。
说话人识别的例程用的是aishell提供的数据集,这里我的数据集已经下载到服务器了,所以后面我会再运行脚本里去掉下载数据集的命令。

1、容器开启的方法:
在上一篇博客的基础上用以下命令开启

docker run --runtime=nvidia --name [指定一个用于与其它容器区分的name] -it -v /home/ctyun:/home/ctyun [image名称kaldi]

2、去掉下载数据集命令
在……kaldi/egs/aishell/v1路径下
编辑run.sh脚本,注释下载数据集部分,并把data路径改成服务器上已有数据集的路径。
然后运行程序执行./run.sh
3、报错
queue.pl: error submitting jobs to queue (return status was 32512)
解决办法:
编辑cmd.sh

将命令:export train_cmd="queue.pl --mem 4G"
  改为->export train_cmd="run.pl --mem 4G"

4、运行失败后需要重新运行报错说什么id不匹配的问题
删掉上一次运行生成的文件:
……kaldi/egs/aishell/v1路径下的data exp mfcc文件
5、查找文件或文件夹的命令
在当前文件夹下查找:
find . -name “文件或文件夹名称”
根目录下查找:
find / -name “文件或文件夹名称”
6、运行程序时加上nohup以保存运行log
  运行命令:
  nohup ./run.sh &
  (& 指定后台运行)
  实时刷新查看运行时保存的log:
  tailf nohup.out
7、训练一段时间后报错:
run.pl: job failed, log is in exp/extractor_1024/log/acc.0.10.log
run.pl: job failed, log is in exp/extractor_1024/log/acc.0.1.log
run.pl: job failed, log is in exp/extractor_1024/log/acc.0.4.log
…………
原因:内存不够
解决办法:修改run.sh里指定同时开启的进程数
train ivector部分

将sid/train_ivector_extractor.sh --cmd "$train_cmd --mem 10G" \
改为->sid/train_ivector_extractor.sh --nj 5 --num-threads 10 --cmd "$train_cmd" \

8、新终端下可以用top命令实时查询内存占用

猜你喜欢

转载自blog.csdn.net/buki26/article/details/83272598