第三十章 kaldi 中文ASR实例

该实例基于thchs30开源数据集,且基于高斯统计模型,旨在了解训练过程和搭建在线识别系统的过程.

在线中文识别

原始数据下载

thchs30数据集下载链接

图1 数据集下载页面
图1 数据集下载页面

总共三个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文件: 图2 run.sh修改

然后执行run.sh,由于编译时间较长,可以参看run.sh文件跟踪过程;该文件进行了不同声学模型的训练。最简单的就是单音素模型了。 可以在任何时间停止,但是至少mono训练结束后停止,因为下面在线识别依赖至少一个模型。

训练过程

run.sh的剖析和上一章(13章)的yes/no类似,可参考上一章.

安装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

    • 注释 图3 run.sh脚本修改

    • 修改模型类型

      ac_model_type=tri2b_mmi 改成ac_model_type=tri1
      
    • 更改命令行 图4 注释掉tri2b模式时的命令调用

      -运行run.sh –test_mode live在线识别 图5 在线识别运行过程

单音素识别结果如上,基本不准,但是对“为什么”识别很好.

其它统计模型

运行tri2(tri3,tri4同理):把s5下的exp下的tri2b下的12.mat考到models的tri2b下,把final.mat考过来,再拷贝其他相应的文件,修改, 图6 更改模型

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,如何转换,上面的文章里有,再贴一下链接: dnn网络转换 nnet1->nnet2 网络转换case

results matching ""

    No results matching ""