## 語法識別
在使用在線語法識別時,如果要使用已經通過官網上傳(參考上文)的語法文件,則不需要再設置語法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 還提供了錄音交互的對話框控件,參考后面識別對話框的內容。