## 语法识别
在使用在线语法识别时,如果要使用已经通过官网上传(参考上文)的语法文件,则不需要再设置语法ID参数;而使用离线语法识别时,需要设置本地语法名字(在语法文件中定义)。
**注:在线语法识别服务已下线,新用户无法使用。**
~~~
//设置引擎类型
mAsr.setParameter( SpeechConstant.ENGINE_TYPE, engineType );
if( SpeechConstant.TYPE_LOCAL.equals(engineType) ){
// 设置本地识别资源
mAsr.setParameter(ResourceUtil.ASR_RES_PATH, getResourcePath());
// 设置语法构建路径
mAsr.setParameter(ResourceUtil.GRM_BUILD_PATH, grmPath);
// 设置返回结果格式
mAsr.setParameter(SpeechConstant.RESULT_TYPE, mResultType);
// 设置本地识别使用语法id
mAsr.setParameter(SpeechConstant.LOCAL_GRAMMAR, grammarName );
}else{
//使用网站上传的语法文件时,只明确指定 SUBJECT,不用指定语法ID;使用在应用上传的则相反。
if( usingWebsideGrammar ){
mAsr.setParameter( SpeechConstant.CLOUD_GRAMMAR, null );
mAsr.setParameter( SpeechConstant.SUBJECT, "asr" );
}else{
mAsr.setParameter( SpeechConstant.CLOUD_GRAMMAR, cloudGrammarID );
}//end of if-else using grammar in webside or not
}//end of if-else local or not
ret = mAsr.startListening( mRecognizerListener );
~~~
此外,本地引擎在语法文件构建后,还可以通过更新词典,更新指定规则中的词语,如联系人等,见后面更新词典章节内容。此外,MSC SDK 还提供了录音交互的对话框控件,参考后面识别对话框的内容。