語音識別技術在手機上應用得相當廣泛,人類日常最頻繁的溝通方式是語音,而在手機應用中,大部分是通過硬件手動輸入,目前這依然是主要與手機互動的方式。但是隨著手機軟硬件功能的不斷提升,可以預見在不久的將來,語音交流將是人機交互的主要方式。IPhone手機內置的Siri語音助手就是一個很好的例子。而鮮為人知的是其使用的語音識別技術來自於Google。而想而知,作為Google力推的Android自然被植入了最核心的語音識別技術,其還整合了Google的雲端技術以更好的實現人機語音互動。
更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11
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來開始語音,代碼如下:
當然,如果找不到設置,就會拋出ActivityNotFoundException,所以我們需要捕捉這個異常。在以下的例子中,我們實現了一個簡單的語音識別程序,當我們點擊“點擊使用語音識別”按鈕之後,開始語音,然後在onActivityResult方法中取得結果並顯示出來,其中如果當前手機沒有連接到互聯網則會顯示連接問題,運行效果如以下所示:
點擊按鈕後: 如果沒聯網會出現連接錯誤:
向話筒說完“電腦”一詞後: