`
leiwuluan
  • 浏览: 704971 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

pocketsphinxAdroid离线语音识别---入门

阅读更多

       现在的语音识别大部分都是基于服务端的开发,需要网络的支持才能很好的工作。
想开发一个基于客户端的,不需要网络也可以识别的,识别服务。
可以在客户端的各种应用中进行使用。如谋种游戏进行语音控制,不会被网络所影响。
找到了一个开源的东西了。。。
可以识别英文,中文。

 

 

 

 

pocketsphinx --- 是什么?
      这是微软公司研究人员开发的最新的适用于嵌入式设备上的语言识别系统的源代码,继承了优秀语音识别软件sphinx的优点,用于开发嵌入式系统上的应用。

怎么做?
将这些c的源程序打包成.so,用java去调c接口 进行语音识别。


首先下载一个 PocketSphinxAndroidDemo
https://nodeload.github.com/cjac/cmusphinx/zipball/trunk

说明
http://ucla.jamesyxu.com/?p=118

 

下载一个swig  ---将c 接口转java 并生成java类.

 

下载一个NDK 将c打包成.so文件.

 

 

 

This is done with CMUSphinx 0.7 (so sphinxbase 0.7 and pocketsphinx 0.7). The files are archived at the end of the article. The process also require access to a linux machine and the Eclipse IDE.

  1. Download Sphinx base and pocket sphinx (http://cmusphinx.sourceforge.net/wiki/download/ )
  2. Create a directory somewhere, untar both to ./sphinxbase and ./pocketsphinx (lose the -0.x version suffix)
  3. For each of the two, do the usual ./autogen.sh ./configure, make, make install (make install require root)
  4. Check ./pocketsphinx/swig has libpocketsphinx_jni.so in it. If not, do a make in that directory
  5. Download the PocketSpinxAndroiDemo
  6. untar it to the same directory created in 2
  7. cp -r ./pocketsphinx/swig/edu ./PocketSphinxAndroidDemo/jni/
  8. cd ./PocketSphinxAndroidDemo/jni/
  9. Update SPHINX_PATH to the directory created in 2
  10. Open Android.mk, edit LOCAL_STATIC_LIBRARIES from whatever it was before to “pocketsphinx sphinxlm sphinxfeat sphinxfe sphinxutil” (without qoutes)
  11. Install Android NDK (http://developer.android.com/sdk/ndk/index.html )
  12. stay in the jni directory, do a ndk-build (see the ndk link about for instructions on building if it is not clear)

Now we are ready to open this in Eclipse

  1. Open eclipse and import the project, ignore any build warnings/errors
  2. Untick Project -> Build Automatically (This is personal choice, since the JNI build process is heavy I dont like it building all the time)
  3. Project -> Properties -> Builders
  4. Select SWIG -> Edit -> for Working Directory, select Browse Workspace and pick the jni directory, In the Refresh tab, select The folder containing the selected resource, in Build Options, untick Specify working set of relevant resources (This option may be hidden in the dialog, if you dont see it, maximize the Configuration window).
  5. Select NDK build -> Edit -> Set the correct location for ndk-build, select the correct Working directory (Browse workspace and then select the jni directory). In the Refresh tab, select The project containing the selected resource, in Build Options, untick Specify working set of relevant resources (This option may be hidden in the dialog, if you dont see it, maximize the Configuration window).
  6. Project -> Build Project. If you see any errors, check that step 4 and 5 are carried out correctly. The project should build without error. A console may appear with red texts, just confirm that they are warning messages from building the c code and you should be ok

We should now have a built Android application ready for testing

  1. In the emulator (or phone), create under primary storage (whatever is returned by the getExternalStorageDirectory). For example if you have a sdcard this would be /mnt/sdcard
  2. If using the emulator, call adb shell from a console window, and use mkdir command for the step below (to create directories on the emulator)
  3. Create directory structure: Android/edu.cmu.pocketsphinx/hmm/en_US/hub4wsj_sc_8k, Android/edu/edu.cmu.pocketsphinx/lm/en_US/
  4. Copy pocketsphinx/model/hmm/en_US/hub4wsj_sc_8k/* into the emulator/phone
  5. Copy pocketsphinx/model/lm/en_US/* into emulator/phone
  6. In eclipse, open the RecognizerTask.java file, look for c.setString(“-lm”
  7. Make sure the files loaded in the code around step 6 exists (especially the .dict file may have a different name)
  8. Now we can run the application!

If the app crashes for any reason, go to sdcard/Android/edu.cmu.pocketsphinx and there should be a log file (pocketsphinx.log) from the native library.

Misc thought

  • On my machine (OpenSuSE 11.3) the swig directory was empty after make. Go into swig directory and call make, the errors will be displayed (for me it was because I didn’t have swig installed)
  • By default make install installs to /usr/local/lib which can cause problems on some systems. If you get errors with any of the sphinx stuff saying some library is not found, use the ldd and strace commands to see where they are looking for the libs, and symlink them. Alternatively supply another install location to make install
  • While working in eclipse, if you see any errors along the lines of “Refresh scope invalid”, check step 4 and 5 are carried out from the Eclipse section above.

Files required **Before downloading these archives, try using the latest build from the official website first**:

 

 

下面的apk .demo  是中文的。[说 中国,美国,英国]识别得很好,但是说别的。呵呵、、、

 

 

 

有兴趣的,一起研究、、、   

 

 

相关资料:

http://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/

 

工程共享:https://github.com/cjac/cmusphinx

语音模型:http://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/

11
1
分享到:
评论
20 楼 潇寒听竹 2015-12-25  
你好,请问您上传的那个APK为什么每次只能识别一次,不能连续识别呢?
19 楼 adminwuhen 2013-12-11  
adminwuhen 写道
您好,请问我在pocketsphinx-0.7目录下面./autogen.sh,make,sudo make install,之后也没有报错,但是编译了几次都是无法编译出libpocketsphinx_jni.so文件,请问下是什么原因啊?折腾了一阵了,请指点一二,非常感谢!

注:
sphinxbase-0.7编译过程中没有报什么错,
另,我在pocketsphinx-0.7版本中编译就会报下面等错误,pocketsphinx-0.7不报错
../../src/libpocketsphinx/.libs/libpocketsphinx.so: undefined reference to `feat_array_realloc'
collect2: ld returned 1 exit status


已经可以编译出libpocketsphinx_jni.so文件了,但是在jni目录下面ndk-build的时候,报错,那个头文件在哪里啊?谢谢了
/PocketSphinxAndroidDemo/jni/pocketsphinx_wrap.c:760:26: fatal error: pocketsphinx.h: No such file or directory
compilation terminated.
make: *** [/home/likewise-open/SPREADTRUM/changhua.wu/Pis/Yuyin/Yuyin/PocketSphinxAndroidDemo/obj/local/armeabi/objs-debug/pocketsphinx_jni/pocketsphinx_wrap.o] Error 1
18 楼 adminwuhen 2013-12-11  
您好,请问我在pocketsphinx-0.7目录下面./autogen.sh,make,sudo make install,之后也没有报错,但是编译了几次都是无法编译出libpocketsphinx_jni.so文件,请问下是什么原因啊?折腾了一阵了,请指点一二,非常感谢!

注:
sphinxbase-0.7编译过程中没有报什么错,
另,我在pocketsphinx-0.7版本中编译就会报下面等错误,pocketsphinx-0.7不报错
../../src/libpocketsphinx/.libs/libpocketsphinx.so: undefined reference to `feat_array_realloc'
collect2: ld returned 1 exit status
17 楼 pinggle 2013-06-05  
高手,你好,我把你的项目源码放在Eclipse里面编译之后,出现: R cannot be resolved to a variable, 那个gen文件为空,我仔细看了你的源码,里面是没有gen文件的,请问怎么解决啊?
16 楼 白不二 2013-05-21  
楼主你好,我先在手机上安装了附件中的apk,但是在手机上打开的时候总是闪退,好不容易打开一次,一按hold键就退出了,这是怎么回事?
15 楼 leiwuluan 2013-02-25  
好长时间没空! - 我过几天发个apk上来给大家共享。 太忙了最近1
14 楼 leeshuai006 2013-02-23  
我没有编译,直接将您的APK里面的libpocketsphinx_jni.so文件放在了我的工程libs目录下面,然后生产APK文件,但是在手机上运行,一点hold就自动退出了,不知道什么原因,请教!
13 楼 jhengko 2013-02-19  
請問可以在WIN7上安裝使用嗎?
12 楼 秦皇cht 2013-02-19  
您好,我在ubuntu环境下编译的时候,进入了sphinxbase目录下,敲进命令./autogen.sh  ./configure之后正常没有报错,然后敲命令make,电脑就开始死机了,一直停在一个文件上不动了,这是什么原因,望指教!
11 楼 xhban520 2012-10-10  
你好,我这里生成的 pocketsphinx/swig/pocketsphinx_wrap.c 与在PocketSphinxAndroidDemo/jni/pocketsphinx_wrap.c文件相差相大,并且生成的Config.java和decoder.java中的也没有对应的类构造函数,生成的apk安装后,在new RecognizerTask时会产生signal 11,你可以帮我分析分析吗,急用(fedora 17 ,swig:2.0.8 )
10 楼 TangShangWen 2012-09-27  
请问那个全路径加在哪里?
9 楼 aqinh 2012-08-20  
Demo运行后在pocketsphinx.log日志中出现如下错误, 识别也没有成功

ERROR: "dict.c", line 194: Line 1: Phone 'Q' is mising in the acoustic model; word '前进' ignored
ERROR: "dict.c", line 194: Line 2: Phone 'H' is mising in the acoustic model; word '后退' ignored
ERROR: "dict.c", line 194: Line 3: Phone 'Z' is mising in the acoustic model; word '左转' ignored
ERROR: "dict.c", line 194: Line 4: Phone 'Y' is mising in the acoustic model; word '右转' ignored
ERROR: "dict.c", line 194: Line 5: Phone 'T' is mising in the acoustic model; word '停止' ignored
8 楼 cxksmyt003 2012-08-10  
你好,我按照您这里指导的步骤在linux系统下生成libpocketsphinx_jni.so文件时会提示sphinx.h文件找不到,请问这是什么原因。
7 楼 leiwuluan 2012-05-04  
leiwuluan 写道
lcfeng1982 写道
请问在win7环境下使用cygwin如何编译工程?我编译了几次都没能产生libpocketsphinx_jni.so文件,而且在swig文件下make的时候报错:
mkdir -p edu/cmu/pocketsphinx
swig -I../include -I../../sphinxbase/include \
        -java -package edu.cmu.pocketsphinx \
        -outdir edu/cmu/pocketsphinx pocketsphinx.i
cc -g -Wall -DPIC -fPIC -I/usr/lib/jvm/default-java/include `pkg-config --cflags sphinxbase pocketsphinx`  -c -o pocketsphinx_wrap.o pocketsphinx_wrap.c
Package sphinxbase was not found in the pkg-config search path.
Perhaps you should add the directory containing `sphinxbase.pc'
to the PKG_CONFIG_PATH environment variable
No package 'sphinxbase' found
Package pocketsphinx was not found in the pkg-config search path.
Perhaps you should add the directory containing `pocketsphinx.pc'
to the PKG_CONFIG_PATH environment variable
No package 'pocketsphinx' found
pocketsphinx_wrap.c:1:0: warning: -fPIC ignored for target (all code is position independent)
pocketsphinx_wrap.c:760:26: fatal error: pocketsphinx.h: No such file or directory
compilation terminated.
<builtin>: recipe for target `pocketsphinx_wrap.o' failed
make: *** [pocketsphinx_wrap.o] Error 1



你的路径有问题、、



写个全路径。。比如  D:/workspace/project/android_deom
6 楼 leiwuluan 2012-05-04  
lcfeng1982 写道
请问在win7环境下使用cygwin如何编译工程?我编译了几次都没能产生libpocketsphinx_jni.so文件,而且在swig文件下make的时候报错:
mkdir -p edu/cmu/pocketsphinx
swig -I../include -I../../sphinxbase/include \
        -java -package edu.cmu.pocketsphinx \
        -outdir edu/cmu/pocketsphinx pocketsphinx.i
cc -g -Wall -DPIC -fPIC -I/usr/lib/jvm/default-java/include `pkg-config --cflags sphinxbase pocketsphinx`  -c -o pocketsphinx_wrap.o pocketsphinx_wrap.c
Package sphinxbase was not found in the pkg-config search path.
Perhaps you should add the directory containing `sphinxbase.pc'
to the PKG_CONFIG_PATH environment variable
No package 'sphinxbase' found
Package pocketsphinx was not found in the pkg-config search path.
Perhaps you should add the directory containing `pocketsphinx.pc'
to the PKG_CONFIG_PATH environment variable
No package 'pocketsphinx' found
pocketsphinx_wrap.c:1:0: warning: -fPIC ignored for target (all code is position independent)
pocketsphinx_wrap.c:760:26: fatal error: pocketsphinx.h: No such file or directory
compilation terminated.
<builtin>: recipe for target `pocketsphinx_wrap.o' failed
make: *** [pocketsphinx_wrap.o] Error 1



你的路径有问题、、
5 楼 cs3230524 2012-04-20  
楼主知道中文乱码这个问题怎么姐姐吗?
4 楼 lcfeng1982 2012-02-08  
leiwuluan 写道
你配上全路径就可以了 
比如:c:/work_space/sphinxbase/include


大牛,这个问题我已经解决了,运行了一下试了试,识别正确率很低,正如你所说的“[说 中国,美国,英国]识别得很好”,其他的就不行;为了提高识别率,我在网上搜索了很久,也没有发现什么有价值的资料,我觉得应该可以建立自己的词语库来提高识别率,不知道你有没有这方面的经验?
3 楼 leiwuluan 2012-02-07  
你配上全路径就可以了 
比如:c:/work_space/sphinxbase/include
2 楼 leiwuluan 2012-02-07  
你配上全路径就可以了 
1 楼 lcfeng1982 2012-02-02  
请问在win7环境下使用cygwin如何编译工程?我编译了几次都没能产生libpocketsphinx_jni.so文件,而且在swig文件下make的时候报错:
mkdir -p edu/cmu/pocketsphinx
swig -I../include -I../../sphinxbase/include \
        -java -package edu.cmu.pocketsphinx \
        -outdir edu/cmu/pocketsphinx pocketsphinx.i
cc -g -Wall -DPIC -fPIC -I/usr/lib/jvm/default-java/include `pkg-config --cflags sphinxbase pocketsphinx`  -c -o pocketsphinx_wrap.o pocketsphinx_wrap.c
Package sphinxbase was not found in the pkg-config search path.
Perhaps you should add the directory containing `sphinxbase.pc'
to the PKG_CONFIG_PATH environment variable
No package 'sphinxbase' found
Package pocketsphinx was not found in the pkg-config search path.
Perhaps you should add the directory containing `pocketsphinx.pc'
to the PKG_CONFIG_PATH environment variable
No package 'pocketsphinx' found
pocketsphinx_wrap.c:1:0: warning: -fPIC ignored for target (all code is position independent)
pocketsphinx_wrap.c:760:26: fatal error: pocketsphinx.h: No such file or directory
compilation terminated.
<builtin>: recipe for target `pocketsphinx_wrap.o' failed
make: *** [pocketsphinx_wrap.o] Error 1

相关推荐

    转pocketsphinxAdroid离线语音识别---入门

    Pocketsphinx的Android版本包含了所有必要的库和资源,包括声学模型、语言模型以及字典,这些都是识别语音所必需的。 接着,你需要配置Pocketsphinx的设置。这包括指定搜索模式(例如关键词识别或自由格式语音识别...

    基于Qt开发的截图工具- 支持全屏截图, 支持自定义截图,支持捕获窗口截图,支持固定大小窗口截图,颜色拾取,图片编辑

    基于Qt开发的截图工具.zip 截图工具(QScreenShot) Qt编写的一款截图工具。 特点 - 支持全屏截图 - 支持自定义截图 - 支持捕获窗口截图 - 支持固定大小窗口截图 - 颜色拾取 - 图片编辑 - 图片上传到wordpress 环境 Qt6.2 QtCreate 8

    毕业设计&课设_ 校园活动管理系统,优化校园活动组织流程,涵盖多方面功能模块的便捷平台.zip

    该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

    毕业设计基于ASP.NET技术的班级展示网站构建(源代码+论文).zip

    基于ASP.NET技术的班级展示网站构建资源,是一套针对教育机构或学生团体,旨在通过ASP.NET框架开发班级风采展示平台的指导资料或教程。此资源详细介绍了如何利用ASP.NET的强大功能,快速搭建一个功能完善、界面友好的在线班级展示平台。 该资源涵盖了从需求分析、数据库设计、前端页面制作到后端逻辑实现的全过程。通过实例演示,指导用户如何设置班级信息、学生风采展示、活动公告、图片上传与浏览等核心功能模块。同时,结合ASP.NET的MVC架构,实现了前后端分离,提高了代码的可维护性和可扩展性。 此外,该资源还提供了丰富的代码示例和注释,帮助开发者深入理解ASP.NET框架的工作原理,掌握如何运用其强大的数据库操作、用户认证与授权等特性。对于初学者来说,这是一份难得的入门教程;而对于有一定经验的开发者,则是一份提升技能的参考资料。 总之,基于ASP.NET技术的班级展示网站构建资源,是教育机构和学生团体实现班级风采在线展示的理想选择,也是开发者学习ASP.NET框架应用的宝贵资源。

    基于springboot的流浪动物管理系统源码数据库文档.zip

    基于springboot的流浪动物管理系统源码数据库文档.zip

    基于springboot+vue的实践性教学系统源码数据库文档.zip

    基于springboot+vue的实践性教学系统源码数据库文档.zip

    基于Python+Django家居全屋定制系统源码数据库文档.zip

    基于Python+Django家居全屋定制系统源码数据库文档.zip

    Umi-OCR-main.zip

    Umi-OCR-main.zip

    基于springboot复兴村医疗管理系统源码数据库文档.zip

    基于springboot复兴村医疗管理系统源码数据库文档.zip

    基于springboot二手物品交易系统源码数据库文档.zip

    基于springboot二手物品交易系统源码数据库文档.zip

    2024年西安外事学院数学建模校赛题目.zip

    2024年西安外事学院数学建模校赛题目.zip

    基于springboot医疗废物管理系统源码数据库文档.zip

    基于springboot医疗废物管理系统源码数据库文档.zip

    colormaps.ipynb

    GEE训练教程

    Spring Boot设计实战:从入门到精通的语言教程、实战案例与项目资源

    内容概要:本文详细介绍了Spring Boot的设计和应用,涵盖了从基本概念到高级用法的全方位教学。首先通过环境搭建、首个项目创建、核心概念解析等步骤帮助读者快速上手。接着阐述了Spring Boot的设计原则与最佳实践,强调代码整洁和系统可维护性。最后,提供了两个实战案例:构建简单的RESTful API和电商网站后台管理系统,涉及项目结构、依赖配置、数据库设计、实体类与控制器的创建等内容,指导读者进行真实项目的开发。 适合人群:适合初学者到中级开发者的Java开发人员,尤其是对企业级应用开发感兴趣的人士。 使用场景及目标:①帮助开发者全面掌握Spring Boot的基本用法及其设计理念;②提供实用的实战案例和资源,使读者能够在实际项目中熟练应用Spring Boot技术。 阅读建议:跟随文章提供的步骤逐步操作,并结合实际开发需求灵活运用所学知识。建议多动手练习,加强对Spring Boot的理解和掌握。

    毕业设计&课设_基于 SSM 的城市公交查询系统,含多种信息及数据库脚本.zip

    该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

    课程考试系统设计与开发:从理论到实践的全方位指南

    内容概要:本文详细介绍了一个课程考试系统的设计与开发过程,涵盖语言教程、实战案例和项目资源。主要内容包括:选择Java作为开发语言,详细讲解Java基础语法和Web开发基础;实战案例包括用户管理、课程管理和考试管理模块的实现;提供了项目结构、数据库设计和依赖管理的详细示例。 适合人群:适用于初学者和有一定经验的开发者,希望通过实际项目掌握课程考试系统的设计与开发。 使用场景及目标:帮助学习者全面提升从理论到实践的能力,最终能够独立完成一个完整的课程考试系统。无论是学习编程基础还是进阶实战,本文都提供了全面的指导。 其他说明:项目涉及多个关键技术和知识点,如Servlet、JSP、JDBC、MVC模式等,有助于深入理解和应用这些技术。此外,还包括项目部署和运行的具体步骤,方便学习者快速搭建和测试系统。

    《伯牙鼓琴》教学课件.pptx

    《伯牙鼓琴》教学课件.pptx

    基于springboot面向社区的智能化健康管理系统研究源码数据库文档.zip

    基于springboot面向社区的智能化健康管理系统研究源码数据库文档.zip

    基于springboot+javaweb宿舍管理系统源码数据库文档.zip

    基于springboot+javaweb宿舍管理系统源码数据库文档.zip

    基于SpringBoot的遥感影像共享系统源码数据库文档.zip

    基于SpringBoot的遥感影像共享系统源码数据库文档.zip

Global site tag (gtag.js) - Google Analytics