在我的基於語音識別的應用程序中,我有時會收到ERROR_RECOGNIZER_BUSY。直觀地說,這需要... 重試,對吧?如何處理ERROR_RECOGNIZER_BUSY
的問題是,這個錯誤是非常無證,所以很明顯,我有疑問,也許有人在該領域更有經驗,能夠回答:
- 什麼引發了這樣的錯誤?是否 真的只有繁忙的服務器(在谷歌)? 或者這也可以暗示我的應用程序中的錯誤?
- 我必須在重試之前明確地關閉/重新打開 會話嗎?
- 重試次數?每 1秒?每5秒鐘?其他?
我們非常歡迎您提供有經驗的見解。謝謝。
在我的基於語音識別的應用程序中,我有時會收到ERROR_RECOGNIZER_BUSY。直觀地說,這需要... 重試,對吧?如何處理ERROR_RECOGNIZER_BUSY
的問題是,這個錯誤是非常無證,所以很明顯,我有疑問,也許有人在該領域更有經驗,能夠回答:
我們非常歡迎您提供有經驗的見解。謝謝。
我不是100%確定這一點,但是自從你發佈這麼久以來,我不妨給它一個機會。 看來你在代碼中做錯了什麼。正如評論者所說,如果您實際發佈了返回此錯誤的代碼,這將會很有幫助。 然而,在爲Android語音識別服務的源代碼在這裏找到:
http://source-android.frandroid.com/frameworks/base/core/java/android/speech/RecognitionService.java 我們有一個叫做dispatchStopListening
功能,似乎要結束了聽的過程中。但是,它實際上結束之前,有幾個檢查非法狀態,包括這個:
else if (mCurrentCallback.mListener.asBinder() != listener.asBinder()) {
listener.onError(SpeechRecognizer.ERROR_RECOGNIZER_BUSY);
Log.w(TAG, "stopListening called by other caller than startListening - ignoring");
}
這似乎意味着,你正在試圖通過一些其他人結束聽的過程比你開始吧,這引發了這個錯誤。 我希望這可以幫助,但如果您發佈代碼,這將非常有益。
當您已經在使用SpeechRecognizer對象時,經常會引發ERROR_RECOGNIZER_BUSY。 (或者你沒有完全關閉)。
只需將包添加到您的識別器意圖,它應該工作。這就是我所做的。
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
...
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, "com.package.name");
最有可能的原因是ERROR_RECOGNIZER_BUSY你還沒有從主線程停止識別服務和拋出的錯誤被忽略了。
你可以發表你正在用來與SpeechRecognizer交互的代碼嗎? – 2011-05-03 18:51:46