您的位置:首页 > 移动开发 > Android开发

Android下PocketSphinx的离线语音识别

2012-09-30 22:41 489 查看
转自:/article/8280904.html

这篇文章对工具包有比较详细的介绍:

/article/5068774.html

官方的这篇教程http://cmusphinx.sourceforge.net/2011/05/building-pocketsphinx-on-android/很详细,另外还有这篇:http://0ucla.jamesyxu.com/?p=118,根据这两篇教程应该可以成功运行起PocketSphinxAndroidDemo。

其实我一开始找到的教程是这篇:

Android平台使用PocketSphinx做离线语音识别,小范围语音99%识别率

这个比较坑爹,第一个链接/article/5068774.html说在线提交的方法对中文是没有用的,真心不知道他是怎么办到的。

另外,/article/3851067.html这篇文章里有一个apk,装来能用,只对“中国,美国,英国”一类的词识别比较好。

/article/5712012.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.构建运行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: