android 离线语言识别

要做一个在android上离线语言识别功能。搜索了一下只有Sphinx比较适合,资料也有。Sphinx库的编译和使用方法在网上比较多的资料都是源自http://ucla.jamesyxu.com/?p=118这个老外写的,但是时间较早2011年的。这个编译是在linux下的,windows下的可以参考http://gaebolg.blog.163.com/blog/static/19826906820136232810723/。目前2015在官网http://cmusphinx.sourceforge.net/wiki/tutorialandroid上的的编译和使用方法已经太不一样。


最后,我并没有编译,而是在 Android平台使用PocketSphinx做离线语音识别,小范围语音99%识别率 这篇文章中找到了可以直接使用的APK源码,里边已经包含了Sphinx 编译出来的库文件,文章里也说了制作语言模型的方法。直接使用该源码和制作出适合自己的语言模型就达到目的了。


对于制作语言模型的方法,这里要说一下。按照博客里说的方法是不完全的。我在windows下制作语言模型并没有成功,查看到评论里Tinux的回复,原来是字符编码的问题。


原来语言模型里的test.lm和test.dic文件,他们的字符编码和换行符有要求,字符编码需要是UTF-8,换行符需要是\n(即0x0A)。Unix 系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回车 >”,即“\n\r”;Mac系统里,每行结尾是“<回车>”。根据Tinux的回复中方法,我的解决办法是在linux里编辑,里边换行是0x0A。中文通过在mandarin_notone.dic文件中搜索并拷贝生成command.txt和test.dic。

你可能感兴趣的:(android,android,对讲开发中问题)