android 离线语言识别
16lz
2021-12-04
要做一个在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平台使用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(安卓)Framework 框架系列之 Android.mk
- NDK编译Android字符界面的可执行程序
- Android的子线程能更新UI吗?
- Android(安卓)中.aar文件生成方法与用法
- android-RecycleView的导入之旅
- Gradle在Android中的简单使用
- Android初始化语言 (init.*.rc、init.conf文件格式)
- Android(安卓)安全模型
- 基于ffmpeg的Android播放器开源代码