訊飛語音SDK繼承簡單使用
阿新 • • 發佈:2019-02-14
//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();