如何处理ERROR_RECOGNIZER_BUSY

srf*_*srf 25 android speech-recognition voice-recognition

在我的基于语音识别的应用程序中,我有时会收到ERROR_RECOGNIZER_BUSY.直觉上,这需要...... 重试,对吧?

问题是这个错误是非常无证的,所以很明显我有些问题可能是在该领域更有经验的人能够回答:

  1. 什么触发了这样的错误?它真的只是繁忙的服务器(在谷歌)?或者这也可以暗示我的应用程序中的错误?
  2. 在重试之前,我是否必须明确关闭/重新打开会话?
  3. 多久重试一次?每1秒一次?每5秒钟?其他?

我们非常欢迎您经验丰富的见解.谢谢.

小智 6

我不是百分之百确定这一点,但是因为你发布的时间已经很久了,所以我不妨试一试.看来你在代码中做错了.正如评论者所说,如果您实际发布了返回此错误的代码,将会很有帮助.但是,在此处找到的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");
        }
Run Code Online (Sandbox Code Playgroud)

这似乎意味着你试图结束一些其他人的监听过程,而不是你启动它,这引发了这个错误.我希望这会有所帮助,但如果您发布代码,那将是非常有益的.