Android語音辨識--->>RecongnizerIntent實現,
首先,咱得先說下注意點:
Android中主要通過RecognizerIntent來實現語音辨識,其實代碼比較簡單,但是如果找不到設定,就會拋出異常 ActivityNotFoundException,所以我們需要捕捉這個異常。而且語音辨識在模擬器上是無法測試的,因為語音辨識是訪問google 雲端資料,所以如果手機的網路沒有開啟,就無法實現識別聲音的!一定要開啟手機的網路,如果手機不存在語音辨識功能的話,也是無法啟用識別,我的話用的是那個科大的某某飛的語音軟體,一運行就可以自動調用這個軟體進行語音辨識。
RecognizerIntent的一些Summary(在Android API中也可以查到):
下面可以查下Android的這個類RecognizerIntent的用法,然後我們開始使用Intent傳遞訊息
1 try{ 2 //通過Intent傳遞語音辨識的模式,開啟語音 3 Intent intent=new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 4 //語言模式和自由模式的語音辨識 5 intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 6 //提示音開始 7 intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "開始語音"); 8 //開始語音辨識 9 startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE); 10 }catch (Exception e) { 11 // TODO: handle exception 12 e.printStackTrace(); 13 Toast.makeText(getApplicationContext(), "找不到語音裝置", 1).show(); 14 }
作為一個使用的模組使用。
RecognizerIntent.ACTION_RECOGNIZE_SPEECH 開啟語音
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);
主要的過程就是如上所示了,自然還需要回調使用者語音的資料。
1 @Override 2 protected void onActivityResult(int requestCode, int resultCode, Intent data) { 3 // TODO Auto-generated method stub 4 //回調擷取從google得到的資料 5 if(requestCode==VOICE_RECOGNITION_REQUEST_CODE && resultCode==RESULT_OK){ 6 //獲得語音輸入的字元 7 ArrayList<String> results=data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); 8 //獲得需要的字元 9 String resultString=""; 10 for(int i=0;i<results.size();i++){ 11 resultString+=results.get(i); 12 } 13 Toast.makeText(this, resultString, 1).show(); 14 } 15 super.onActivityResult(requestCode, resultCode, data); 16 }
這樣的結合就可以實現語音辨識了。