我的书:
淘宝购买链接
当当购买链接
京东购买链接
##原始数据下载
http://www.openslr.org/18/
总共三个tgz文件:
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 )
下载后随便解压到哪个目录文件夹下。
我解压的目录路径是:
/media/gsc/kaldi_data/thchs30-openslr
###训练生成模型
该example在我的电脑上的目录是:
/home/gsc/kaldi/egs/thchs30/s5
PC编译的cmd.sh
按如下方式更改以使用pc进行编译:
至少4核4G内存。
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"
#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"
修改run.sh
文件:
然后执行run.sh,由于编译时间较长,可以参看run.sh文件跟踪过程;
该文件进行了不同声学模型的训练。最简单的就是单音素模型了。
可以在任何时间停止,但是至少mono训练结束后停止,因为下面在线识别依赖至少一个模型。
###安装portaudio
gsc@X250:~/kaldi/tools$ ./install_portaudio.sh
./src/下 , make ext
###在线识别
####创建相关文件
从voxforge把online_demo拷贝到thchs30下,和s5同级,online_demo建online-data和work两个文件夹。online-data下建audio和models,audio放要识别的wav,models建tri1,讲s5下/exp/下的tri1下的final.mdl和35.mdl拷贝过去,把s5下的exp下的tri1下的graph_word里面的words.txt和HCLG.fst也拷过去。
####修改脚本
修改online_demo 下的run.sh
1.注释
2.修改模型类型
ac_model_type=tri2b_mmi 改成ac_model_type=tri1
3.更改命令行
图中注释掉的是tri2b模式时的命令调用格式
4.运行run.sh --test_mode live在线识别。
单音素识别结果如上,基本不准,但是对“为什么”识别很好。
###其它模型
运行tri2(tri3,tri4同理):把s5下的exp下的tri2b下的12.mat考到models的tri2b下,把final.mat考过来,再拷贝其他相应的文件,修改,
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;;
不截屏结果了,显示比前面一个好,且如果听过wav,就会发现wav文件里高频词汇,识别的结果相对准一些。
###dnn模型
运行dnn:首先要将nnet1转成nnet2,如何转换,上面的文章里有,再贴一下链接:http://kaldi-asr.org/doc/dnn1.html#dnn1_conversion_to_dnn2,https://sourceforge.net/p/kaldi/discussion/1355348/thread/1ff78ec8/
####syntaxnet(和文章标题无关,请跳过)
无关的两张图,syntaxnet
中文分词
在网上下载Chinese模型文件,http://download.tensorflow.org/models/parsey_universal/Chinese.zip
导出所在路径:
gsc@X250:~/envtensorflow/deep_learn/models/syntaxnet$ MODEL_DIRECTORY=~/Downloads/Chinese
执行如下命令,查看分词结果;
gsc@X250:~/envtensorflow/deep_learn/models/syntaxnet$ echo '然而,中国经历了30多年的改革开放' | syntaxnet/models/parsey_universal/tokenize_zh.sh $MODEL_DIRECTORY | syntaxnet/models/parsey_universal/parse.sh $MODEL_DIRECTORY