关于Android的离线语音识别的技术,遍观若干厂家唯有科大讯飞和百度有离线的语音识别功能,但是科大讯飞是收费的,百度的离线语音识别就是关键词唤醒,但是只接受3个自定义的唤醒词,而且必须经过评定3分以上唤醒词才可以成功提交,内容限制和数量限制都是很大的局限,可用性很低,大公司的开源技术全部Pass掉了。这个pocketSphinx经过实践准确率还是很不错的,根本上讲实际操作还是关键词唤醒识别,但是能利用pocketSphinx其自定义的语音模型和声音模型的特性,随心所欲的定制想识别的关键词。
关于PocketSphinx的学习主要是根据这篇文章来的,集成方面很详细很具体:https://www.jianshu.com/p/4310ae932fdd,照着这个来就可以了,其实对于实际开发来说,中文唤醒词仅仅只需要替换language Model(.lm文件)语言模型,和字典模型(.dic文件) 这两个文件就行了,将想要监听的唤醒词txt根据上面贴出的教程链接,上传到网站并下载压缩包,就得到了这两个文件,但是要注意的是,.dic文件并不是想当然的拼音而已,比如设置这个词,其实是: 设置 sh e zh ib,如果碰到这个词了不按照官方的字典文档,pocketsphinx-0.7\model\lm\zh_CN/mandarin_notone.dic去找实际的拼音的话(压缩包解压完的文件夹名是pocketsphinx-0.7),很可能是不能看到正确是识别效果的。
最重要的一点:dic文件中文字和拼音之间相隔2个空格,字母之间间隔是一个空格,间距不对很可能也不能如预期所愿。
自己做了个Demo,里面有4个自定义的唤醒词:“下一个界面”,“下一个页面”,“设置界面”,“设置页面”, 画了2个Layout:红色的下一个界面和白色的设置