支持Android在线语音识别的包括Google语音(需翻墙使用)、百度语音、科大讯飞、微软等,在线语音识别技术大多免费。而离线语音识别,Google离线语音识别需设置中下载Google离线语音包,目前Google还没有提供离线的API,百度语音、科大讯飞、微软等提供的离线语音识别需收取一定的费用。本文主要以开源项目PocketSphinx实现离线语音中文识别。
几个常见的语音交互平台的简介和比较
语音识别相关知识
开源PocketSphinx实现Android离线中文识别
- 首先Github上可以下载PocketSphinx-Android的Demo,此Demo为英文的离线语音识别示例,可以直接运行,参考官方教程
- 其中项目中的开发包,pocketsphinx-android-5prealpha-nolib.jar,可通过vn checkout下来的sphinxbase, pocketsphinx, pocketsphinx-android生成,可参考教程
- 使用官网的模型包括
声学模型:zh_broadcastnews_16k_ptm256_8000.tar.bz2
语言模型:zh_broadcastnews_64000_utf8.DMP
字典文件:zh_broadcastnews_utf8.dic - 编写自己的命令集,保存为command.txt
你好
打开
播放
浏览器
在语音模型生成工具上点Browse,提交command.txt,在线生成语言模型lm文件, - 由于4.生成的字典文件dic无法识别中文,因此废弃,按照 3.方法获取dic文件,搜索command.txt里面对应的词,然后替换相应的内容结果如下
|
|
- 至此声学模型、语言模型、字典文件都已获取,添加到assets相应的位置会自动生成md5文件,在build.gradle中添加ant自动脚本,assets.xml会自动拷贝assets下模型文件到手机里。
- 更改代码添加声学语音字典模型
|
|
结论
PocketSphinx测试后发现,无论是原github上英文的离线识别示例,还是更改后的中文离线识别体验都不是很好,一个是识别率的问题,一个是反映过于灵敏,如果大家有时间可以使用语言模型训练工具CMUCLMTK和声学模型训练工具sphinxtrain,自己训练得到语言模型和声学模型,来提高识别率。