国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android編程之語音識別實現方法

2019-12-12 04:59:12
字體:
來源:轉載
供稿:網友

本文實例講述了Android編程之語音識別實現方法。分享給大家供大家參考,具體如下:

語音識別技術在手機上應用得相當廣泛,人類日常最頻繁的溝通方式是語音,而在手機應用中,大部分是通過硬件手動輸入,目前這依然是主要與手機互動的方式。但是隨著手機軟硬件功能的不斷提升,可以預見在不久的將來,語音交流將是人機交互的主要方式。IPhone手機內置的Siri語音助手就是一個很好的例子。而鮮為人知的是其使用的語音識別技術來自于Google。而想而知,作為Google力推的Android自然被植入了最核心的語音識別技術,其還整合了Google的云端技術以更好的實現人機語音互動。

Android中主要通過RecognizerIntent來實現語音識別,它主要包括一些常量來表示語音的模式等,如下表所示:


常量

描述

ACTION_RECOGNIZE_SPEECH

開啟語音活動

ACTION_WEB_SEARCH

開啟網絡語音模式,結果將以網頁搜索顯示

EXTRA_LANGUAGE

設置語言庫

EXTRA_LANGUAGE_MODEL

語音識別模式

EXTRA_MAX_RESULTS

返回的最大結果

EXTRA_PROMPT

提示用戶可以開始語音

EXTRA _RESULTS

將字符串返回到一個ArrayList中

LANGUAGE_MODEL-FREE_FORM

在一種語言模式上自由語言

LANGUAGE_MODEL-WEB_SEARCH

使用語言模型在Web上搜索

RESULT_AUDIO_ERROR

返回結果時,音頻遇到錯誤

RESULT_CLIENT_ERROR

返回結果時,客戶端遇到錯誤

RESULT_NETWORK_ERROR

返回結果時,網絡遇到錯誤

RESULT_NO_MATCH

沒有檢測到語音的錯誤

RESULT_SERVER_ERROR

返回結果時,服務器遇到錯誤


這里我們只需要通過Intent來傳遞一個動作以及一些屬性,然后通過startActivityForResult來開始語音,代碼如下:

Intent intent= new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);    intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "開始語音");

當然,如果找不到設置,就會拋出ActivityNotFoundException,所以我們需要捕捉這個異常。在以下的例子中,我們實現了一個簡單的語音識別程序,當我們點擊“點擊使用語音識別”按鈕之后,開始語音,然后在onActivityResult方法中取得結果并顯示出來,其中如果當前手機沒有連接到互聯網則會顯示連接問題,運行效果如以下所示:

點擊按鈕后:

如果沒聯網會出現連接錯誤:

 

向話筒說完“電腦”一詞后:

具體實現的代碼如下:

public class RecognizerIntent_TestActivity extends Activity {  private static final int VOICE_RECOGNITION_REQUEST_CODE = 1;  private ListView mList;  Button mButton;  @Override  public void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.main);    mButton = (Button) findViewById(R.id.button1);    mButton.setOnClickListener(new myRecognizerIntentListener());    mList = (ListView) findViewById(R.id.listView1);  }  public class myRecognizerIntentListener implements OnClickListener {    public void onClick(View v) {      try {        // 用Intent來傳遞語音識別的模式,并且開啟語音模式        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);      } catch (ActivityNotFoundException e) {        Toast.makeText(RecognizerIntent_TestActivity.this, "找不到語音設備",            Toast.LENGTH_LONG).show();      }    }  }  // 語音結束時的回調函數  @Override  protected 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);      // 設置視圖的更新      mList.setAdapter(new ArrayAdapter<String>(this,          android.R.layout.simple_list_item_1, results));      String resultsString = "";      for (int i = 0; i < results.size(); i++) {        resultsString += results.get(i);      }      Toast.makeText(this, resultsString, Toast.LENGTH_LONG).show();    }    super.onActivityResult(requestCode, resultCode, data);  }}

更多關于Android相關內容感興趣的讀者可查看本站專題:《Android多媒體操作技巧匯總(音頻,視頻,錄音等)》、《Android開發入門與進階教程》、《Android視圖View技巧總結》、《Android編程之activity操作技巧總結》、《Android操作SQLite數據庫技巧總結》、《Android操作json格式數據技巧總結》、《Android數據庫操作技巧總結》、《Android文件操作技巧匯總》、《Android編程開發之SD卡操作方法匯總》、《Android資源操作技巧匯總》及《Android控件用法總結

希望本文所述對大家Android程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 交城县| 鹤山市| 龙口市| 石楼县| 和顺县| 陵川县| 黄山市| 周至县| 百色市| 清镇市| 安康市| 迭部县| 林周县| 江永县| 新竹县| 德江县| 惠安县| 崇信县| 黄平县| 宿松县| 本溪市| 临武县| 嘉峪关市| 越西县| 怀来县| 济源市| 张家界市| 报价| 安溪县| 宁津县| 石首市| 新巴尔虎左旗| 阿坝| 调兵山市| 建湖县| 黔西| 卢龙县| 沙洋县| 韶山市| 临高县| 武山县|