kaldi apiai_decode分析研究1:链式模型下载与运行测试

故事扮演 提交于 2020-10-01 22:56:39

本系列预计包括3篇文章,分别如下:

1、链式模型下载与运行测试

2、脚本主要涉及工具参数分析

3、在线识别系统搭建

=================================================

1、链式模型下载与运行测试

研究完yesno例程后,感觉应该再看一些例程后再开始系统的学习kaldi结构和源代码更为靠谱,所以仔细分析了一下kaldi的例程目录,发现本例程较为简单,且有现成的模型可以下载,故开始了apiai_decode的学习。下面是具体的学习过程。

打开readme.md文件,发现首先应运行download-model.sh文件,下载链式模型文件,并完成解压工作。

然后回到win10系统,按照readme.md文件里面的提示录制了如下两句音频

(1)wake me up at 7 am

(2)wake me up at 4 pm

从readme.md文件可以看出,要求音频应为16kHz, 16 bit little-endian 格式,故用ffmpeg完成格式转换工作。

#!/bin/bash    
for FILE in *.m4a;  
	do  ffmpeg -i "$FILE" -ar 16000 "wav/${FILE%.*}.wav";  
done  

按照提示,执行语音识别

./recognize-wav.sh 1.wav

系统输出如下:

lattice-scale --acoustic-scale=10.0 ark:- ark:- 
apply-cmvn --norm-means=false --norm-vars=false --utt2spk=ark:data/test-corpus/utt2spk scp:data/test-corpus/cmvn.scp scp:data/test-corpus/feats.scp ark:- 
LOG (apply-cmvn[5.5.748~1-65ae41]:main():apply-cmvn.cc:81) Copied 1 utterances.
LOG (nnet3-latgen-faster[5.5.748~1-65ae41]:CheckAndFixConfigs():nnet-am-decodable-simple.cc:294) Increasing --frames-per-chunk from 50 to 51 to make it a multiple of --frame-subsampling-factor=3
1.wav WAKE ME OFF ON SALE IN AM 
LOG (nnet3-latgen-faster[5.5.748~1-65ae41]:DecodeUtteranceLatticeFaster():decoder-wrappers.cc:375) Log-like per frame for utterance 1.wav is 1.17882 over 140 frames.
LOG (nnet3-latgen-faster[5.5.748~1-65ae41]:main():nnet3-latgen-faster.cc:256) Time taken 2.73988s: real-time factor assuming 100 frames/sec is 0.652352
LOG (nnet3-latgen-faster[5.5.748~1-65ae41]:main():nnet3-latgen-faster.cc:259) Done 1 utterances, failed for 0
LOG (nnet3-latgen-faster[5.5.748~1-65ae41]:main():nnet3-latgen-faster.cc:261) Overall log-likelihood per frame is 1.17882 over 140 frames.
LOG (nnet3-latgen-faster[5.5.748~1-65ae41]:~CachingOptimizingCompiler():nnet-optimize.cc:710) 0.00654 seconds taken in nnet3 compilation total (breakdown: 0.00384 compilation, 0.00195 optimization, 0 shortcut expansion, 0.000373 checking, 3.1e-06 computing indexes, 0.000372 misc.) + 0 I/O.
LOG (lattice-scale[5.5.748~1-65ae41]:main():lattice-scale.cc:107) Done 1 lattices.

如输出,可看到识别为 wake me off on sale in am

对于上文第二句,识别为:wake me up at four pm

需要注意的是,如果要多次识别,每次识别前需要删除test-corpus目录,当然修改recognize-wav.sh脚本更方便。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!