Android開發之語音識別


2013-07-03

語音識別

2008年Google語音搜索在iphone平台上線,Android 1.5 將語音識別應用到搜索功能上。

手動輸入是目前主要與手機互動的方式,語音搜索宗旨是最大限度地改善人機交互的便捷性。

在玩游戲時,通過語音來控制操作,更顯得人性化,體驗更佳。

Android 中主要通過RecognizerIntent來實現語音識別。

RecognizerIntent包括的常量

ACTION_RECOGNIZE_SPEECH

ACTION_WEB_SEARCH

EXTRA_LANGUAGE

EXTRA_LANGUAGE_MODEL

EXTRA_MAX_RESULTS

EXTRA_PROMPT

EXTRA_RESULTS

LANGUAGE_MODEL_FREE_FORM

LANGUAGE_MODEL_WEB_SEARCH

RESULT_AUDIO_ERROR

RESULT_CLIENT_ERROR

RESULT_NETWORK_ERROR

RESULT_NO_MATCH

RESULT_SERVER_ERROR

// 打開語音識別

Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);

intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);

intent.putExtra(RecognizerIntent.EXTRA_PROMPT, “開始語音");

startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);

在模擬器上找不到語音設備,會拋出異常ActivityNotFoundException。

示例:

點擊“開始使用語音識別”按鈕后,開始語音輸入,然后在onActivityResult方法中取得結果並顯示出來

protect void onActivityResult(int requestCode, int resultCode, Intent data) {

  if(requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK) {

    ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);

    StringBuffer sb = new StringBuffer();

    for(int i=0; i<results.size; i++) {

      sb.append(results.get(i));

    }

    Toast.makeText(this, sb.toString(), Toast.LENGTH_LONG).show();

    super.onActivityResult(requestCode, resultCode, data);

  }

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM