Android下PocketSphinx的离线语音识别


这篇文章对工具包有比较详细的介绍:
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  
  1. 在PocketSphinxDemo项目中使 RecognizerTask.java里c.setString函数中的参数符合6中存放的文件和文件夹。
  2. 构建运行。
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐