zoukankan      html  css  js  c++  java
  • 基于讯飞语音API应用开发之——离线词典构建

      最近实习在做一个跟语音相关的项目,就在度娘上搜索了很多关于语音的API,顺藤摸瓜找到了科大讯飞,虽然度娘自家也有语音识别、语义理解这块,但感觉应该不是很好用,毕竟之前用过百度地图的API,有问题也找不到人帮忙解决(地图开发者群里都是潜水的)...不得不说,科大讯飞在语音这块尤其是中文识别方面做的真心不错,而且Android还支持离线识别。

      讯飞官方给的文档内容很详细,在这我就不赘述了。在开发中,由于一些原因需要用到离线识别这块,就学习了一下。讯飞离线识别只支持Android系统,使用时需要安装讯飞语音+,同时还要自己写离现实别的字典(BNF)。关于BNF的文档,我会在后面放出下载连接。在这里先给个简单的BNF样例:

    1 #BNF+IAT 1.0 utf-8;
    2 !grammar call;
    3 !slot <list>;
    4 !start <speech>;
    5 <speech>:<list>;
    6 <list>:盲人听书|在线音乐|影音播放|小说;

      当要更新BNF时,确切的说应该是更新某个槽(<slot>)时,可以调用SpeechRecognize的updateLexicon。例如更新以上BNF的槽,用如下代码即可:

     1     String grammar = "你好
    我好
    大家好
    广州好迪
    ";
     2     mSpeechRecognize.updateLexicon("<list>",grammar,mLexiconListener);
     3     /**
     4     * 初始化词典更新完成回调接口
     5     */
     6     private LexiconListener mLexiconListener = new LexiconListener() {
     7 
     8         @Override
     9         public void onLexiconUpdated(String grammarId, SpeechError errorCode) {
    10             if (errorCode == null) {
    11                 Log.d(TAG, "词典更新成功!Grammar ID:" + grammarId);
    12             } else {
    13                 Log.d(TAG, "词典更新失败!Error Code:" + errorCode.getErrorCode());
    14             }
    15         }
    16 
    17     };

      嗯,就是这样,语法文件其实不难写,离线词典动态更新其实也不难。

      相关资源:BNF开发文档

    作者:登天路

    转载请说明出处:http://www.cnblogs.com/travellife/

    作者:登天路

    转载请说明出处:http://www.cnblogs.com/travellife/
    GitPages:http://www.littlejie.com/
  • 相关阅读:
    a标签上window.location.href无法跳转
    Directive指令的scope配置项使用说明
    Echarts 里面获取纵坐标刻度的间距
    使用 Supervsior 守护进程
    linux 下的快捷键操作
    前端必须掌握的 nginx 技能(4)
    在 vue 中用 transition 实现轮播效果
    前端必须掌握的 nginx 技能(3)
    前端必须掌握的 nginx 技能(2)
    前端必须掌握的 nginx 技能(1)
  • 原文地址:https://www.cnblogs.com/travellife/p/3922236.html
Copyright © 2011-2022 走看看