首页 > 代码库 > 基于讯飞语音API应用开发之——离线词典构建
基于讯飞语音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 = "你好\n我好\n大家好\n广州好迪\n"; 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开发文档
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。