由于毕设要用到离线语音识别的东西,所以上网找了好多例子。本文主要参考了以下两篇博文中的内容,在此表示感谢:
通过其中的例子应该可以在Android上顺利搭建一个demo。如果这个过程中出错的可以下载第二篇博文中的代码,然后在Eclipse中导入工程,导入后可能会报错,这是需要右键项目名,选properties-builders,删掉出错的builder即可。代码编译成功后,在运行之前需要将语言模型文件放入手机SD卡中,主要有一下三个文件:
/sdcard/Android/data/test/hmm/tdt_sc_8k
/sdcard/Android/data/test/lm/test.dic
/sdcard/Android/data/test/lm/test.lm
可以从第二篇博文中的data链接下载。如果想修改路径的话,需要修改RecognizerTask.RecognizerTask()里的如下代码
c.setString("-hmm", "/sdcard/Android/data/test/hmm/tdt_sc_8k");
c.setString("-dict", "/sdcard/Android/data/test/lm/test.dic");
c.setString("-lm", "/sdcard/Android/data/test/lm/test.lm");
对于语言模型文件的生成,可以从http://www.speech.cs.cmu.edu/tools/lmtool-new.html这个地址生成。但是上传的命令文件要十分小心,只能上传utf8格式的文件,最好在linux系统下生成该文件。第二篇博文中给出的命令文件中命令字符串都用标签包含,我尝试过,但生成的lm文件并不能识别,然后将标签去掉上传,反而能成功识别,因此需要注意。lm文件下载后,需要对比标准dic文件,生成对应命令集的dic文件,这一步很简单。