2012-12-24 273 views
6

[可能重複]但我沒有找到我下面的問題的答案。Android:語音識別

我一直在做語音識別的一些研究,在過去兩天,我沒有得到回答我的問題:

  1. 是否可以運行語音識別作爲一種服務?我想實現這樣的事情:我需要撥打一個號碼,儘管我的手機通過語音識別處於睡眠模式。
  2. 當我在火車,公共汽車等時,語音識別是否正常工作以檢測詞語?
  3. 除了語音識別之外,是否有任何傳感器來檢測語音?
  4. 爲了讓語音識別正常工作,用戶是否需要靠近手機說話?
+7

你的意思是*語音*識別或*語音*識別? (閱讀[標籤:語音識別]摘錄:「語音識別意味着識別說話的人,並經常誤用意思是」語音識別「 - 識別所說的內容。」) –

+2

下次請嘗試搜索一個問題一次提出一個問題。這將幫助你找到答案。 –

回答

10

1)它是把語音識別成一個服務,就像是在谷歌的API,在回調方法來得到的結果進行了妥善的做法。爲了使其持續運行,服務必須處理能夠避免陷入睡眠模式的喚醒鎖。一些更多的信息在這裏提供Wake locks android service recurring它有一個很大的缺點 - 電池使用率高,CPU的連續工作和傳入聲音數據的連續計算造成的。 (可以用濾波器,閾值等減少)

2)語音識別不是一個簡單的任務。它需要大量的計算和數據參考。如果輸入音頻不清晰(噪聲,許多人聲等),則很難獲得正確的輸出。可以做些什麼來提高準確度:濾波器輸入音頻:噪聲抑制,低通濾波器等。你不能期望100%的精度,但可以達到80-95%。

更難的是過濾許多人類的聲音。但是可以使用一些簡單的幅度(音頻強度級別)算法和自適應閾值來決定何時開始和結束。想法是,正確的聲音是離電話/設備最近的聲音。所以根據4)當用戶靠近麥克風講話時,準確度會更好,因爲它是最響亮的聲音。

3)我不知道你是什麼意思的傳感器,但有算法只是簡單地檢測人類的聲音,而不是解碼單詞。這些算法被稱爲語音活動檢測(VAD)應該在Speex項目文檔中找到一些代碼http://www.speex.org/

最簡單的處理語音識別的方法是使用Google語音API,它非常好,它識別大量語言,但需要互聯網連接 - 並且需要一段時間才能獲得結果。
CMU Sphinx速度更快,但它的語言模型很少,需要更多的RAM內存和處理器計算,因爲所有解碼都是在設備上進行的。在我的意見中,當dicitionary(重新識別的單詞)像命令(左,右,後退,停止,開始等)一樣小時,它非常好。

+0

感謝您的意見。我想開發一個應用程序,當我說幫助時,無論我在哪裏,都會自動撥打緊急號碼。我可以在巴士,市場或其他地方。我沒有得到第一個問題的答案,請告訴他們,如果你有任何投入? –

+0

我更新了我的答案,因此它也涵蓋了您的第一個問題,在您的情況下,獅身人面像將會非常快速,而且非常快,因爲只需要識別一個單詞。 「幫助」 – MP23

+0

再次感謝您的意見。關於第四個問題和答案,正如您所提到的,我們需要靠近麥克風說話以獲得更好的準確性。假設我在巴士上,我需要一些幫助,因爲它太擁擠太嘈雜,它可能無助於識別正確的字? –