Android本地语音识别引擎PocketSphinx-语言建模


Java代码
  1. text2wfreq<weather.txt|wfreq2vocab>weather.tmp.vocab

最近研究Android上的语音识别,在此记录下遇到的问题。

先引用一篇博文,http://leiwuluan.iteye.com/blog/1287305。根据这篇博文的内容,要是没遇到问题的话,应该可以生成一个apk,在手机上可以运行,能进行识别,但是效率很低,识别率也不咋地。现在我们需要自己来构建识别的库。

根据代码

Java代码
  1. c.setString("-dict",
  2. "/sdcard/Android/data/edu/edu.cmu.pocketsphinx/lm/zh_CN/mandarin_notone.dic");
  3. c.setString("-lm",
  4. "/sdcard/Android/data/edu/edu.cmu.pocketsphinx/lm/zh_CN/gigatdt.5000.DMP");

程序会引用到两个文件,第一个是字典文件,第二个是声音模型文件,程序先将输入的声音和声音模型文件对比,生成音节编码,再将音节编码在字典中查找,返回最后的字符结果。Sphinx是个很完善的引擎,除了开源之外,官方还提供了各种工具供开发者构建自己的声音对比模型,字典,记忆语言模型。本文参考http://cmusphinx.sourceforge.net/wiki/tutoriallm,用CMUCLMTK构建自己的语言模型。

1.首先,假设你已经根据本文开头的那篇博文成功编译了PocketSphinx并且成功在手机上运行。

2.下载CMUCLMTK,http://sourceforge.net/projects/cmusphinx/files/cmuclmtk/0.7/cmuclmtk-0.7.tar.gz/download

3.将下载的文件解压到Sphinx根目录,参见开篇引用博文。

4.命令行下进入到CMUCLMTK目录,我的为

Java代码
  1. /workspace/VoiceRecognition/cmuclmtk-0.7#

我的电脑系统是linux,如果是windows需要用cgwin

5. ./configure

6.make install

7.cd src

8.make install

9.在4的目录下,新建weather.txt,输入

Java代码
  1. <s>generallycloudytodaywithscatteredoutbreaksofrainanddrizzlepersistentandheavyattimes</s>
  2. <s>somedryintervalsalsowithhazysunshineespeciallyineasternpartsinthemorning</s>
  3. <s>highesttemperaturesninetothirteenCelsiusinalightormoderatemainlyeastsoutheastbreeze</s>
  4. <s>cloudydampandmistytodaywithspellsofrainanddrizzleinmostplacesmuchofthisrainwillbe
  5. lightandpatchybutheavierrainmaydevelopinthewestlater</s>

10.命令行下输入,

Java代码
  1. text2wfreq<weather.txt|wfreq2vocab>weather.tmp.vocab

这时报错,如下

Java代码
  1. text2wfreq:errorwhileloadingsharedlibraries:libcmuclmtk.so.0:cannotopensharedobjectfile:Nosuchfileordirectory

参考error while loading shared libraries解决。

11.输入

Java代码
  1. text2idngram-vocabweather.tmp.vocab-idngramweather.idngram<weather.txt

12.输入

Java代码
  1. idngram2lm-vocab_type0-idngramweather.idngram-vocabweather.tmp.vocab-arpaweather.arpa

如果无误,在目录下会生成weather.tmp.DMP文件。

官网说在http://www.speech.cs.cmu.edu/tools/lmtool.html也可以在线提交txt文件,在服务器生成DMP文件,但是我在试的时候,发现访问不了,可能是太多人用了,CMU把这个服务给关了?

哈哈,在查资料的时候,又发现有这方面的博文,再引用一下,http://www.cnblogs.com/huanghuang/archive/2011/07/14/2106579.html,http://archive.cnblogs.com/a/2111834/,http://www.cnblogs.com/huanghuang/archive/2011/07/18/2109101.html,这三篇应该讲的很全面了。

更多相关文章

  1. NPM 和webpack 的基础使用
  2. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  3. Android编译系统二
  4. android的数据存储和访问 附源码
  5. Android中图像变换Matrix的原理、代码验证和应用
  6. Android常见Exception解决方法
  7. [连载 4/15] Android(安卓)从入门到精通Example 之 Save a File
  8. android studio使用快捷键大全
  9. Android(安卓)- 文件读写操作 总结

随机推荐

  1. Android(安卓)studio gradle 生成字段属
  2. Android(安卓)制作 升级包
  3. 网络时间同步
  4. android 算定义布局xml
  5. Android默认时区、语言设置
  6. 【翻译】(1)何为Android?(2012-06-30废弃)
  7. Android实现圆形头像-使用自定义控件
  8. Android组件学习笔记(连接互联网)
  9. 启动android默认浏览器
  10. android中取消ActionBar的两种方式