❤ 运行thchs30
参考[4]
1. 数据准备
清华大学30小时的数据集,可以在http://www.openslr.org/18/下载
data_thchs30.tgz [6.4G] ( speech data and transcripts )
test-noise.tgz [1.9G] ( standard 0db noisy test data )
resource.tgz [24M] ( supplementary resources, incl. lexicon for training data, noise samples )
在egs/thchs30/s5下新建thchs30-openslr,然后把三个文件解压在里面
[root@n6 thchs30-openslr]# pwd
/ssd/yuansaijie/speech-recognition/tramphero/kaldi-master/egs/thchs30/s5/thchs30-openslr
[root@n6 thchs30-openslr]# ll
total 0
drwxr-xr-x 8 root root 103 Mar 22 14:29 data_thchs30
drwxr-xr-x 4 root root 45 Mar 22 14:29 resource
drwxr-xr-x 5 root root 90 Mar 22 14:30 test-noise
2. 训练
1.首先修改s5下面的cmd.sh脚本,把原脚本注释掉,修改为本地运行:
#export train_cmd=queue.pl
#export decode_cmd="queue.pl --mem 4G"
#export mkgraph_cmd="queue.pl --mem 8G"
#export cuda_cmd="queue.pl --gpu 1"
export train_cmd=run.pl
export decode_cmd="run.pl --mem 4G"
export mkgraph_cmd="run.pl --mem 8G"
export cuda_cmd="run.pl --gpu 1"
2.然后修改s5下面的run.sh脚本,需要修改两个地方:
第一个地方是修改并行任务的数量,可以根据逻辑cpu的个数来定
#n=4 #parallel jobs
n=10 #parallel jobs
第二个地方是修改数据集放的位置,例如我修改的为:
#thchs=/nfs/public/materials/data/thchs30-openslr
thchs=/ssd/yuansaijie/speech-recognition/tramphero/kaldi-master/egs/thchs30/s5/thchs30-openslr
3.运行run.sh
要跑很多个模型:monophone单音素训练, tri1三因素训练, trib2进行lda_mllt特征变换,trib3进行sat自然语言适应,trib4做quick,后面就是dnn(dnn会找GPU训练)
monophone 单音素模型是训练单音子隐马尔科夫模型,一共进行 40 次迭代;
- tri1 三音素模型是训练与上下文相关的三音子模型;
- tri2b 模型用来进行线性判别分析和最大似然线性转换;
- tri3b 模型用来训练发音人自适应,基于特征空间最大似然线性回归;
- tri4b 模型用来在现有特征上训练模型,它基于树统计中的计数的重叠判断的相似性来选择旧模型中最接近的状态。
exp目录下结果:
3. 测试
参考[5][6]
1.安装portaudio:首先我们cd到tools下面,执行:./install_portaudio.sh ; 然后在cd到src下面,执行:make ext
2.测试模型:
可以有以下模型的测试:tri1, trib2,trib3,trib4
从egs/voxforge
把online_demo拷贝到thchs30下,和s5同级,online_demo建online-data和work两个文件夹。online-data下建audio和models,audio放要识别的wav,models放模型
?tri1:models建tri1,将s5/exp/tri1
下的final.mdl和35.mdl拷贝过去,把s5/exp/tri1/graph_word
里面的words.txt和HCLG.fst也拷过去。(使用tri1训练出来的模型)
其中,final.mdl是训练出来的模型,words.txt是字典,和HCLG.fst是有限状态机。
修改online_demo的run.sh
a)将下面这段注释掉:(这段是voxforge例子中下载现网的测试语料和识别模型的。我们测试语料自己准备,模型就是tri1了)
if [ ! -s ${data_file}.tar.bz2 ]; then
echo "Downloading test models and data ..."
wget -T 10 -t 3 $data_url;
if [ ! -s ${data_file}.tar.bz2 ]; then
echo "Download of $data_file has failed!"
exit 1
fi
fi
b) 然后再找到如下这句,将其路径改成tri1
# Change this to "tri2a" if you like to test using a ML-trained model
# ac_model_type=tri2b_mmi
ac_model_type=tri1
c)把识别麦克风语音的代码修改:
online-gmm-decode-faster --rt-min=0.5 --rt-max=0.7 --max-active=4000 --beam=12.0 --acoustic-scale=0.0769 $ac_model/final.mdl $ac_model/HCLG.fst $ac_model/words.txt '1:2:3:4:5' $trans_matrix;;
d)把识别已经录好的语音代码修改:
online-wav-gmm-decode-faster --verbose=1 --rt-min=0.8 --rt-max=0.85 --max-active=4000 --beam=12.0 --acoustic-scale=0.0769 scp:$decode_dir/input.scp $ac_model/final.mdl $ac_model/HCLG.fst $ac_model/words.txt '1:2:3:4:5' ark,t:$decode_dir/trans.txt ark,t:$decode_dir/ali.txt $trans_matrix;;
运行该run.sh即可测试自己的wav文件(如果想要识别麦克风的语音,可以执行:./run.sh --test-mode live
,也是同样的效果)
? tri2:models建tri2,放入以下文件 12.mat 35.mdl final.mat final.mdl HCLG.fst words.txt
# run.sh的修改内容
ac_model_type=tri2
trans_matrix="$ac_model/12.mat"
# add --left-context=3 --right-context=3
online-gmm-decode-faster --rt-min=0.5 --rt-max=0.7 --max-active=4000 --beam=12.0 --acoustic-scale=0.0769 --left-context=3 --right-context=3 $ac_model/final.mdl $ac_model/HCLG.fst $ac_model/words.txt '1:2:3:4:5' $trans_matrix;;
online-wav-gmm-decode-faster --verbose=1 --rt-min=0.8 --rt-max=0.85 --max-active=4000 --beam=12.0 --acoustic-scale=0.0769 --left-context=3 --right-context=3 scp:$decode_dir/input.scp $ac_model/final.mdl $ac_model/HCLG.fst $ac_model/words.txt '1:2:3:4:5' ark,t:$decode_dir/trans.txt ark,t:$decode_dir/ali.txt $trans_matrix;;
? tri3:models建tri3,放入以下文件 35.mdl final.alimdl final.mat final.mdl full.mat HCLG.fst words.txt
# run.sh的修改内容
ac_model_type=tri3
trans_matrix="$ac_model/final.mat"
# 把识别的两句命令中的 final.mdl 改成 final.alimdl
? tri4:models建tri4,放入以下文件 20.mdl final.alimdl final.mat HCLG.fst words.txt
# run.sh的修改内容
ac_model_type=tri4
# 其他都同tri3
❤ 致谢
【4】Kaldi学习笔记(三)——运行thchs30(清华大学中文语料库)
【5】kaldi 在线中文识别系统搭建
【6】Kaldi学习笔记(四)——thchs30中文在线识别