2013-08-06 20 views
16

我試圖用Android的包括android.speech.SpeechRecognizer類的代碼沒有成功。不斷在語音識別只聽一個關鍵字

基本上,我試圖做的是讓我的應用程序不斷偵聽一個關鍵字,只要關鍵字被識別,就會觸發一個意圖。 我知道這會使用很多電池。

例如 - 你正在與一個人交談。正常的談話。手機正在積極傾聽並識別每一個單詞並聆聽關鍵字。

讓我們假設在這種情況下關鍵字是「奶酪」。

無論何時您說「奶酪」,應用程序都會觸發啓動應用程序另一部分的意圖。

我試圖使用語音識別作爲服務,但事情並沒有按計劃進行。也許我犯了一個錯誤,我不知道。

我一直試圖完成這一連續2天,現在超過24小時的工作時間合併。如果我太寬泛或違反SO的任何規則,我誠懇道歉並要求刪除我的問題。

我的問題是 - 這怎麼可能?當然,包含在android本身中的SpeechRecognition應該是,最好是,但它肯定會很麻煩,因爲它甚至沒有設計爲長時間工作。

+0

考慮CMUSphinx,但實際上最好的解決方案取決於你沒有提供的細節。例如,它應該是一個任意的單詞還是某個預定義的單詞。您是否希望讓用戶記錄該字詞,或者您想要一些預定義的關鍵字或隨機的關鍵字用戶類型。你需要支持哪些語言。 –

+0

這將是一個預定義的單詞。記錄單詞和檢查輸入與記錄文件是不是真的那麼準確,我估計。我需要它是發現。僅限英語。 –

回答

8

從我的研究中,沒有辦法使用標準的谷歌語音識別服務器來做到這一點。它們的工作方式是一旦聲音/詞被識別出來,識別器就會返回一個它認爲聽到的清單以及相關的置信度分數。

做你的要求,你會:

  1. 必須不斷重新激活每次發射的識別事件時識別服務,直到你想要的字相匹配。

  2. 您的應用程序必須「保持清醒」識別服務。您可以通過創建定期喚醒手機並恢復服務/活動的服務來實現此目的。

考慮到電池使用時間真的會因爲語音識別服務不斷被打開而降低,我不會推薦這些選項。

+1

但是有什麼其他的選擇是可能的?我研究了其他可能的語音識別API無濟於事。 –

+0

我見過的大多數應用程序(包括我的一個應用程序)依靠用戶啓動語音識別器,無論是手動還是對我來說,作爲對語音合成器的響應。例如,點擊這裏發表意見,或者「你想說點什麼嗎?」。 – droideckar

+1

Google搜索如何執行此操作?它不斷地收聽「OK Google」 – regretoverflow

0

Google沒有爲「OK GOOGLE」公開API提供API支持,並且讓供應商將其更改或傳遞給消費者。 我認爲在這個時候最好的選擇是自己構建源代碼,然後調用API。作爲下面的例子,谷歌圖書館具有實現識別器的低級細節。我不確定爲什麼谷歌不公開。 我看不到一個簡單的方法來實現和測試它。

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.3_r2.1/android/speech/srec/Recognizer.java

1

不幸的是,我不認爲有將充分滿足您的需求的任何原生Android的API。我會推薦檢查pocketsphinx。 這是一個來自CMU的非常健壯的與講話人無關的語音識別API,更適用於此類任務。您也可以查看一個教程,開始使用here

+0

pocketsphinx庫不對android負責。它並沒有將明確的詞彙捕捉爲「OK Google」。還有其他圖書館嗎? –