无数据完成kaldi_lre07实验

kaldi/egs/lre07/v1/实验所需要的数据都是不开源,需要购买,所以在第一次做这个实验的时候,我是完全用自己的数据去摸索的。过程中踩了很多坑,记录一下。

首先需要将cmd.sh 中的queue.pl改成run.pl,并且将run.sh中训练数据准备的命令只保留local/make_sre_2008_train.pl $data_root/LDC2011S05 data。实验过程用的数据均为8k。

###################
run.sh需要sph格式的音频,可以用sox转换格式

sox -t wav file.wav -t sph file.sph

###########################
运动命令:sh run.sh

Cannot open /data00/home/fanzhiyun/kaldi-master/egs/lre07/v1/export/corpora/LDC/LDC2011S05/docs/NIST_SRE08_header_info.all.train.csv at local/make_sre_2008_train.pl line 42, <WAVLIST> line 776.

原因:这是因为缺少所提示的文件
解决: 在对应路径创建该文件,并按下面的格式写入内容
file.sph,language,speechtype

#################################

local/make_sre_2008_train.pl 中37行、66行用到/docs/NIST_SRE08_header_info.all.train.csv和 3sec.trn、10sec.trn、3 0sec.trn文件需要手动写入,格式如下:
3sec.trn、 10sec.trn、30sec.trn
fanzhiyun filename1:A,fiilename1:B,filename2:A,filename2:B

/docs/NISI_SRE08_header_info.all.train.csv
filename.sph,language,speechtype



####################################

运行sh run.sh ,报出语法错误

解决:使用bash run.sh 运行


#######################################

报错:Bad line in segments file fanzhiyun_sre08-1_A-1 fanzhiyun_sre08-1_A 0 -1
utils/validate_data_dir.sh: badly formatted segments file

原因:由于原来的脚本中句子允许的最大长度120s,我所给的句子都不用做切分,标记切分起始时刻为0,-1。而在validate_data_dir.sh中检测的时候,如果句子的终止时间小于开始时间会报错并终止程序


解决: 要么把句子的允许最大长度改小,保证所有句子被切割,要么改kaldi的脚本local/split_long_utts.sh的76行-1改为${len}。


至此数据准备完成,开始mfcc提取

################################################

抱错:subset_data_dir.sh: cannot subset to more utterances than you originally had.
解决:将run.sh中调用subset_data_dir.sh 的参数5000改为1

###############################################

抱错:
utils/subset_data_dir.sh: reducing #utt from 120 to 1
sid/train_diag_ubm.sh --nj 30 --cmd run.pl --mem 4G data/train_5k_novtln 256 exp/diag_ubm_vtln
Refusing to split data because number of speakers 1 is less than the number of output .scp files 30 at utils/split_scp.pl line 114, <I> line 1.

解决:将run.sh中调用subset_data_dir.sh 的参数1改为2,把所有的脚本的进程数量改为8

###################################################

报错:成功提取特征的句子数小于实际的句子数

原因:在重复运行run.sh时,因为train_novtln目录依旧保持了数据量改动前的信息,而train目录的feat.scp直接从该目录下复制文件。
解决:删除原先的train_novtln文件夹

########################################

抱错:

lid/train_diag_ubm.sh: for 20 iterations, using at most 500000 frames of data
bash: line 1: 2325507 Aborted (core dumped) ( gmm-global-init-from-feats --num-threads=32 --num-frames=500000 --min-gaussian-weight=0.0001 --num-gauss=2048 --num-gauss-init=1024 --num-iters=20 "ark,s,cs:apply-cmvn-sliding --norm-vars=false --center=true --cmn-window=300 scp:data/train_5k/feats.scp ark:- | add-deltas-sdc ark:- ark:- | select-voiced-frames ark:- scp,s,cs:data/train_5k/vad.scp ark:- |" exp/diag_ubm_2048/0.dubm ) 2>> exp/diag_ubm_2048/log/gmm_init.log >> exp/diag_ubm_2048/log/gmm_init.log
run.pl: job failed, log is in exp/diag_ubm_2048/log/gmm_init.log


解决:将run.sh中train_diag_ubm 的输入参数都改到小于16(说话人数)

##################################

抱错:
lid/train_ivector_extractor.sh --cmd run.pl --mem 4G --mem 35G --use-weights true --num-iters 5 exp/full_ubm_2048/final.ubm data/train exp/extractor_2048
Refusing to split data because number of speakers 16 is less than the number of output .scp files 40 at utils/split_scp.pl line 114, <I> line 64000.

解决:将lid/train_ivector_extractor.sh中的num_process由4改为1

######################################

在local/general_lr_closed_set_langs.txt中添加自己用到的语种标签

#######################################

运行命令行:lid/run_logistic_regression.sh --prior-scale 0.70 \
--conf conf/logistic-regression.conf

报错:
Use of uninitialized value in division (/) at lid/balance_priors_to_test.pl line 74, <LANGUAGES> line 17.
Illegal division by zero at lid/balance_priors_to_test.pl line 74, <LANGUAGES> line 17.

解决:将local/general_lr_closed_set_langs.txt中没有用到的语种行删除

############################################
运行命令行:local/lre07_eval/lre07_eval.sh exp/ivectors_lre07 \
> local/general_lr_closed_set_langs.txt

报错:
STATUS: Parsing command line arguments
STATUS: Computing errors
FATAL ERROR: No nontarget trials for target language 'arabic' and segment language 'bengali' 2

解决:由于lre07的测试数据中出现了,我们在训练中没有用到的语种,所以需要去除lre07中没有出现的那部分语种数据

#########################################

命令:lid/run_logistic_regression.sh --prior-scale 0.70 \
--conf conf/logistic-regression.conf

报错:Illegal division by zero at lid/balance_priors_to_test.pl line 74, <LANGUAGES> line 5.

解决:local/general_lr_closed_set_langs.txt列出的语种训练条数不能为0,删除没有出现的语种

################################

抱错:FATAL ERROR: No target language found 1

解决:在local/lre07_eval/lre07_targets.pl中的78行和94行添加en|french|hi(根据自己的语种情况而定)

#####################################

抱错:Illegal division by zero at local/lre07_eval/score_lre07.v01d.pl line 762.

原因:这是因为我测试数据的信息来自http://www.openslr.org/resources/23/lre07_key.txt,我只选了部分3秒的句子信息,10s、30s时长的语音一条都没利用。

解决:增加一些10s、30s的句子

######################################

本文主要罗列一些我在使用自己数据完成用kaldi/egs/lre07/v1完成语种识别踩过的坑,可能有些问题只针对我的实验存在,也存在一些问题的解决方案并不是很好,欢迎和我交流。



  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值