构建语法

MSC SDK 识别语法主要为两种:ABNF 和 BNF 格式。前者用于在线语法识别,后者用于离线语法识别。本文只对构建和使用语法的 SDK 调用过程进行介绍,关于语法的规则说明,请参考语法开发指南;关于上传应用级(对同一APPID所有设备均生效)语法文件,参考讯飞开放平台,以及MSC 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 模式下)。

Copyright © iflytek.com 2018 all right reserved,powered by Gitbook该文件修订时间: 2018-04-16 14:50:49

results matching ""

    No results matching ""