訊飛語音Demo—java版
阿新 • • 發佈:2019-01-03
最近想用第三方api做點東西玩,一直在網上找不到,訊飛的java版的demo,就自己寫了一個供大家參考,比較簡陋,沒有介面,執行main函式,說話就行了,
這個工程師api自帶的,test的類是我的Demo
package com.iflytek.test; import com.iflytek.cloud.speech.RecognizerListener; import com.iflytek.cloud.speech.RecognizerResult; import com.iflytek.cloud.speech.SpeechError; import com.iflytek.cloud.speech.SpeechRecognizer; import com.iflytek.cloud.speech.SpeechUtility; import com.iflytek.util.DebugLog; import com.iflytek.util.JsonParser; public class VoiceTest { SpeechRecognizer speechRecognizer; String resultText = ""; public VoiceTest(){ this.speechRecognizer = SpeechRecognizer.createRecognizer(); } public void speech(){ if(!speechRecognizer.isListening()) speechRecognizer.startListening(listener); else speechRecognizer.stopListening(); } public String text(){ return resultText; } //編寫監聽器,建立匿名內部類 private RecognizerListener listener = new RecognizerListener() { /** * 當在說話的過程中音量發生變化時會多次呼叫此函式,顯示音量值 */ @Override public void onVolumeChanged(int arg0) { DebugLog.Log("onVolumeChanged enter "+arg0); } /** * 獲取聽寫結果. 獲取RecognizerResult型別的識別結果 */ @Override public void onResult(RecognizerResult result, boolean flag) { DebugLog.Log("onResult enter"); //這個result就是遠端解析的結果 String strResult = null; //這裡的捕獲異常是我自己修改了JsonParser的這個靜態方法,因為他在裡面捕獲了異常,所以我修改了,我在那裡面又拋了一個異常 //因為這個函式解析result的時候,如果不說話就會列印異常資訊,所以受不了,我就把他修改了 try{ strResult = JsonParser.parseIatResult(result.getResultString()); }catch(Exception e){ strResult = ""; } resultText = result.getResultString(); System.out.println(strResult); } /* * 事件 擴充套件用介面,由具體業務進行約定 * @see com.iflytek.cloud.speech.RecognizerListener#onEvent(int, int, int, java.lang.String) */ @Override public void onEvent(int arg0, int arg1, int arg2, String arg3) { } @Override public void onError(SpeechError arg0) { DebugLog.Log("onError enter"); } @Override public void onEndOfSpeech() { DebugLog.Log("onEndOfSpeech enter"); } /* * 結束聽寫,恢復初始狀態 * @see com.iflytek.cloud.speech.RecognizerListener#onBeginOfSpeech() */ @Override public void onBeginOfSpeech() { DebugLog.Log("onBeginOfSpeech enter"); } }; public static void main(String[] args) { //這句是必須的,註冊的時候必須建一個應用,會分配一個appid SpeechUtility.createUtility("appid=59b78833"); //初始化這個類的時候,這些函式就呼叫了,如果不初始化,那個匿名內部類就沒辦法監聽,監聽器的方法有的需要重寫,有的可以不重寫 VoiceTest speechTest = new VoiceTest(); //新版api當startListening被呼叫之後,自動判斷音量為靜音來自動停止,所以不需要關心停止的 speechTest.speech(); //System.out.println(speechTest.text()); } }