編輯:關於Android編程
本文實例講述了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 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程序設計有所幫助。
LinearLayout 類方法RelativeLayout 類方法TableLayout 類方法AbsoluteLayout 類方法
折騰了一陣,終於是安裝上了,臥槽,先在AndroidStudio裡面安裝permissiondispatcher插件,看圖:重啟完成之後就是配置build.gradle,
前言昨日,公司討論用什麼工具來統計Crash信息時,有提出友盟,TalkingData,Crashlytics等等工具。鑒於之前其他兄弟部門有使用Crashlytics和
Android之Http通信——1.初識Http協議Android之Http通信1初識Http協議 引言 正文 Http是什麼鬼 名詞解析 Htt