1. 程式人生 > >訊飛語音SDK繼承簡單使用

訊飛語音SDK繼承簡單使用

//1.建立RecognizerDialog物件,第二個引數就是一個初始化的監聽器,我們用不上就設定為null
RecognizerDialog mDialog = new RecognizerDialog(this, null);
//2.設定accent、language等引數
mDialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn");//設定為中文模式
mDialog.setParameter(SpeechConstant.ACCENT, "mandarin");//設定普通話模式
//若要將UI控制元件用於語義理解,必須新增以下引數設定,設定之後onResult回撥返回將是語義理解
//mDialog.setParameter("asr_sch", "1");
//mDialog.setParameter("nlp_version", "2.0");
//建立一個裝每次解析資料的容器
StringBuilder mStringBuilder = new StringBuilder();
//3.設定回撥介面
mDialog.setListener(new RecognizerDialogListener() {
@Override//識別成功執行,引數recognizerResult 識別的結果,Json格式的字串
//第二引數 b:等於true時會話結束.方法才不會繼續回撥
//一般情況下通過onResult介面多次返回結果,完整識別內容是多次結果累加的
public void onResult(RecognizerResult recognizerResult, boolean b) {
//拿到訊飛識別的結果
String resultString = recognizerResult.getResultString();
System.out.println("訊飛識別的結果 " + resultString);
System.out.println("b引數是什麼 " + b);
//自定義解析bean資料的方法,得到解析資料
String content = parseData(resultString);
System.out.println("解析後的資料 "+ content);
mStringBuilder.append(content);
//對引數2b進行判斷,如果為true,代表這個方法不會對調,那麼我們容器的資料轉為字串,拿來使用即可
if (b) {
String result = mStringBuilder.toString();
System.out.println(result);
//回答物件,在沒有匹配到使用者說的話,預設輸出語句
String anwser = "不好意思,你說的我沒有聽清楚!!!";
if (result.contains("你好")) {
anwser = "你好,我是你的智慧語音助手,很高興為你服務";
} else if (result.contains("小明")) {
anwser = "和小明一塊玩";
} else if (result.contains("美女")) {
//定義一個String陣列,智慧語音根據美女這個資料,可能說的話
String [] answerList=new String[]{"500元,妹子陪你打一晚上游戲","你是壞人不和你玩了","小助手很純潔,不要帶壞我了"};
//小助手隨機回答,所以使用生成隨機數的類.random(因為此數是小數,乘以集合長度,再做int型別強轉,得到的數是0到集合長度-1)
int random = (int) (Math.random()*answerList.length);
anwser=answerList[random];
}
shuo(anwser);
}
}
@Override//識別失敗執行的方法,speechError錯誤碼
public void onError(SpeechError speechError) {
System.out.println("錯誤碼 " + speechError);
}
});
//4.顯示dialog,接收語音輸入
mDialog.show();