歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android語音識別

語音識別技術在手機上應用得相當廣泛,人類日常最頻繁的溝通方式是語音,而在手機應用中,大部分是通過硬件手動輸入,目前這依然是主要與手機互動的方式。但是隨著手機軟硬件功能的不斷提升,可以預見在不久的將來,語音交流將是人機交互的主要方式。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來開始語音,代碼如下:

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

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

點擊按鈕後:                                        如果沒聯網會出現連接錯誤:



    

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

Copyright © Linux教程網 All Rights Reserved