转自:http://blog.csdn.net/sununs11/article/details/8034294
这篇文章对工具包有比较详细的介绍:
http://www.cnblogs.com/huanghuang/archive/2011/07/14/2106579.html
官方的这篇教程http://cmusphinx.sourceforge.net/2011/05/building-pocketsphinx-on-android/很详细,另外还有这篇:http://0ucla.jamesyxu.com/?p=118,根据这两篇教程应该可以成功运行起PocketSphinxAndroidDemo。
其实我一开始找到的教程是这篇:
Android平台使用PocketSphinx做离线语音识别,小范围语音99%识别率
这个比较坑爹,第一个链接http://www.cnblogs.com/huanghuang/archive/2011/07/14/2106579.html说在线提交的方法对中文是没有用的,真心不知道他是怎么办到的。
另外,http://leiwuluan.iteye.com/blog/1287305这篇文章里有一个apk,装来能用,只对“中国,美国,英国”一类的词识别比较好。
http://www.cnblogs.com/yin52133/archive/2012/07/12/2588201.html这个博主比较厉害,这篇文章还没仔细看,等到有时间再研究中文的识别了,现在英文的离线语音识别已经搞定。
下面说具体方法:
1.搭建Android开发环境和NDK配置就不说了,网上教程很多。
2.下载sphinxbase – snapshot,pocketsphinx – snapshot和PocketsphinxAndroidDemo – snapshot,然后吧sphinxbase和pocketsphinx放到同一个文件夹下,用./autogen.sh &&./configure && make && make install的方法先安装sphinxbase,再安装pocketsphinx。
3.把PocketSphinxDemo导入Eclipse,进入PocketSphinxDemo/jni文件夹,把Android.mk里的SPHINX_PATH变量改成sphinxbase和pocketsphinx的父目录。
4.在jni文件夹运行ndk-build命令。(当然,需要先配置好ndk)
5.在Eclipse里,PocketSphinxDemo项目的Properties中,选择Builders,可以看到SWIG和NDK,NDK的build其实可以通过4中的命令来完成,也可以通过eclipse自动完成。
选择NDK,点击Edit按钮,出现的框中,在Location区域选择ndk文件夹,然后点击Refresh选项卡,选择“The project containing the selected resource”,点击Build Options选项卡,取消选择“Specify working set of relevant resources”。
选择SWIG,点击Edit,在Refresh选项卡中选择 “The folder containing the selected resource”,在Build Options选项卡中取消选择“Specifiy working set of relevant resources”。
6.把手机和电脑连接,把pocketsphinx/model/hmm/en_US里的hub4wsj_sc_8k,hmm/en_US,lm/en_US放入手机的某个文件夹,如用adb push把使手机存在如下文件或文件夹:
- /sdcard/Android/data/edu.cmu.pocketsphinx/hmm/en_US/hub4wsj_sc_8k
- /sdcard/Android/data/edu.cmu.pocketsphinx/lm/en_US/hub4.5000.dic
- /sdcard/Android/data/edu.cmu.pocketsphinx/lm/en_US/hub4.5000.DMP
7.在PocketSphinxDemo项目中使 RecognizerTask.java里c.setString函数中的参数符合6中存放的文件和文件夹。
8.构建运行。