ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 构建语法 MSC SDK 识别语法主要为两种:ABNF 和 BNF 格式。前者用于在线语法识别,后者用于离线语法识别。本文只对构建和使用语法的 SDK 调用过程进行介绍,关于语法的规则说明,请参考[语法开发指南](http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=7595);关于上传应用级(对同一APPID所有设备均生效)语法文件,参考[讯飞开放平台](http://www.xfyun.cn/services/online_asr?tab_index=1),以及[《MSC Reference Manual.html》](http://mscdoc.xfyun.cn/android/api)关于 SpeechRecognizer 类的说明。 ### 构建ABNF语法 如前文所述,ABNF 语法为在线识别使用的语法,故在构建时,应指定引擎类型为在线引擎,构建时的语法类型为 ABNF,如: ~~~ // 设置引擎类型 mAsr.setParameter( SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD ); /* 其中 "abnf" 指定语法类型为 ABNF, grammarContent 为语法内容,grammarListener 为构建结果监听器*/ ret = mAsr.buildGrammar( "abnf", grammarContent, grammarListener ); ~~~ 构建语法状态通过监听器 grammarListener 获取,当构建成功时,将在回调中返回一个 grammarID,将在使用语法识别时用到。 ### 构建BNF语法 BNF语法为离线识别使用的语法,在构建时,除了指定引擎为本地引擎,语法类型为BNF外,还必须指定离线资源的路径(MSC模式下,需下载使用对应的离线识别SDK),语法构建的路径——本地语法构建结果文件保存的路径: ~~~ // 设置引擎类型 mAsr.setParamter( SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_LOCAL ); // 设置引擎模式 mAsr.setParamter( SpeechConstant.ENGINE_MODE, engineMode ); if( SpeechConstant.MODE_MSC.equals(engineMode) ){ // 设置语法结果文件保存路径,以在本地识别时使用 mAsr.setParameter( ResourceUtil.GRM_BUILD_PATH, grmPath ); //设置识别资源路径 mAsr.setParameter( ResourceUtil.ASR_RES_PATH, asrResPath ); } /* 其中 "bnf" 指定语法类型为 BNF, grammarContent 为语法内容,grammarListener 为构建结果监听器*/ ret = mAsr.buildGrammar( "bnf", grammarContent, grammarListener ); ~~~ 构建语法状态通过监听器 grammarListener 获取,当构建成功时,语法文件将保存到由 grmPath 指定的目录中,将在语法识别时用到(MSC 模式下)。