語音辨識在android上使用起來很方便也很簡單.
但是有個前提條件,就是android機器上必須預先安裝google的語音搜尋工具
語音辨識技術是在Android SDK1.5中才加入的(RecognizerIntent),這裡我們簡單的分析一下內建的api例子,其實它就是通過一個Intent的Action動作來完成的。主要有以下兩種模式:
ACTION_RECOGNIZE_SPEECH:一般語音辨識,在這種模式下我們可以捕捉到語音的處理後的文字列。
ACTION_WEB_SEARCH:網路搜尋
該例子同樣是使用ACTION_RECOGNIZE_SPEECH模式,我們需要實現onActivityResult方法,當語音辨識結束之後的回呼函數。
下面是核心代碼:
package com.ifeisu.test.voice;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.content.Intent;import android.content.pm.PackageManager;import android.content.pm.ResolveInfo;import android.os.Bundle;import android.speech.RecognizerIntent;import android.view.View;import android.view.View.OnClickListener;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.ListView;/*** * 語音辨識demo,在使用此demo之前需要確認手機或者模擬器上安裝了google的語音搜尋工具 * Voice_Search_2.1.4.apk或者更高版本 * @author guoxinzz@163.com * @website http://www.ifeisu.com * */public class VoiceRecognition extends Activity implements OnClickListener {private static final int VOICE_RECOGNITION_REQUEST_CODE = 1234;private ListView mList;/** * * Called with the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);Button speakButton = (Button) findViewById(R.id.btn_speak);mList = (ListView) findViewById(R.id.list);// Check to see if a recognition activity is presentPackageManager pm = getPackageManager();List<ResolveInfo> activities = pm.queryIntentActivities(new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0);if (activities.size() != 0){speakButton.setOnClickListener(this);}else{speakButton.setEnabled(false);speakButton.setText("Recognizer not present");}}public void onClick(View v){if (v.getId() == R.id.btn_speak){startVoiceRecognitionActivity();}}private void startVoiceRecognitionActivity(){// 通過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,"請說出需要開啟的網站名字.");// 開始執行我們的Intent、語音辨識startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);}// 當語音結束時的回呼函數onActivityResult@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data){if (requestCode == VOICE_RECOGNITION_REQUEST_CODE&& resultCode == RESULT_OK){// 取得語音的字元ArrayList<String> matches = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);mList.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, matches));}super.onActivityResult(requestCode, resultCode, data);}}
1.如果手機不支援語音搜尋,則需要下載google的語音搜尋工具包 Voice_Search_2.1.4.apk,這個可以到hiapk.com或者其他市集下載到.
2.源碼下載:demo.voice_recognition.rar 因為csdn不讓上傳附件,在串連上右鍵->串連另存新檔,下載回去將名字改為demo.voice_recognition.rar就能正常開啟了.