关于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:红色的下一个界面和白色的设置界面, 当说前两个唤醒词,识别之后跳转到红色的界面,当说后两个唤醒词,识别之后跳转到白色的界面,效果如下:

                                                                    

 

       

实际操作其实便是中规中矩的集成,集成进PocketSphinx后换成自己的字典模型和语言模型,仅仅替换dic和lm两个文件,然后在按钮的长按监听中打开语音识别引擎,在识别后的回调中关闭引擎并根据内容跳转

public AudioRecordButton(final Context context, AttributeSet attrs) {super(context, attrs);dialogManager = new AudioRecordDialog(getContext());setOnLongClickListener(new OnLongClickListener() {@Overridepublic boolean onLongClick(View v) {    //开启语音识别引擎                PocketSphinxUtil.get(context).start();isReady = true;dialogManager.showDialog();isSpeaking = true;return false;}});}
   @Override    public void onPartialResults(String b) {        //一次识别之后,停止语音引擎,下次长按再开启        PocketSphinxUtil.get(context).stop();        if(b.contains("下一个界面")||b.contains("下一个页面"))        {            Intent intent = new Intent(context,NextActivity.class);            startActivity(intent);        }else if(b.contains("设置界面")||b.contains("设置页面"))        {            Intent intent = new Intent(context,SettingActivity.class);            startActivity(intent);        }    }

  Demo已上传:https://download.csdn.net/download/crystal_xing/10843721

更多相关文章

  1. Android(安卓)API Guides---User Interface
  2. Android用户界面设计:框架布局
  3. 让你大开眼界的10款Android界面设计
  4. [Android]继承式UI界面布局设计
  5. Android(安卓)Studio实现一个点餐系统
  6. Android小项目之--前台界面与用户交互的对接 进度条与拖动条(附源
  7. Android用户界面设计学习之旅-第二站
  8. Eclipse导入Android文件出错!Project has no default.properties
  9. Android(安卓)Studio官方文档之使用布局编辑器来设计UI界面

随机推荐

  1. JavaScript:鼠标事件,动态创建导航下拉列
  2. jq:初学 与 getter/setter方法
  3. 换肤案例以及选项卡
  4. 新网站快速排名大量收录方法教程
  5. 【正则】整理详细JavaScript正则表达式入
  6. nginx开启日志,指定格式,查看执行时间
  7. 亿方云坚果云哪个办公好用?
  8. 比特币-架构原理
  9. 单点登录之ajax跨域实现
  10. Quartz定时任务框架