**注:在線語法識別服務已下線,新用戶無法使用。**
~~~
//1.創建SpeechRecognizer對象
SpeechRecognizer mAsr = SpeechRecognizer.createRecognizer( );
// ABNF語法示例,可以說”北京到上海”
String mCloudGrammar = "#ABNF 1.0 UTF-8;
languagezh-CN;
mode voice;
root $main;
$main = $place1 到$place2 ;
$place1 = 北京 | 武漢 | 南京 | 天津 | 天京 | 東京;
$place2 = 上海 | 合肥; ";
//2.構建語法文件
mAsr.setParameter(SpeechConstant.TEXT_ENCODING, "utf-8");
ret = mAsr.buildGrammar("abnf", mCloudGrammar , grammarListener);
if (ret != ErrorCode.SUCCESS){
DebugLog.Log("語法構建失敗,錯誤碼:" + ret);
}else{
DebugLog.Log("語法構建成功");
}
//3.開始識別,設置引擎類型為云端
mAsr.setParameter(SpeechConstant.ENGINE_TYPE, "cloud");
//設置grammarId
mAsr.setParameter(SpeechConstant.CLOUD_GRAMMAR, grammarId);
mAsr.startListening(mRecognizerListener);
if (ret != ErrorCode.SUCCESS) {
DebugLog.Log("識別失敗,錯誤碼: " + ret);
}
//構建語法監聽器
private GrammarListener grammarListener = new GrammarListener() {
@Override
public void onBuildFinish(String grammarId, SpeechError error) {
if(error == null && !TextUtils.isEmpty(grammarId) ){
//構建語法成功,請保存grammarId用于識別
}else{
DebugLog.Log("語法構建失敗,錯誤碼:" + error.getErrorCode());
}
}
};
~~~