android - RecognitionListener.onError() 是否自动 SpeechRecognizer.cancel()?

标签 android speech-recognition voice-recognition

出于各种原因,我需要使用原始的 SpeechRecognizer API 而不是更简单的 RecognizerIntent (RECOGNIZE_SPEECH) activity .

这意味着,除其他外,我需要自己处理 RecognitionListener.onError()

针对一些错误,我只是想重新开始听。这看起来很简单,但是当我只是在出错时调用 SpeechRecognizer.startListening() 时,这有时似乎会触发两个不同的错误:

 ERROR/ServerConnectorImpl(619): Previous session not destroyed

"concurrent startListening received - ignoring this call"

这暗示我应该在尝试再次调用 SpeechRecognizer.startListening() 之前做一些清理工作。

如果这是真的,这意味着在 RecognitionListener 错误时,监听不会自动停止和/或取消。

也有可能某些错误会停止/取消收听,而其他错误则不会。真的只有 9 SpeechRecognizer错误:

  1. ERROR_NETWORK_TIMEOUT
  2. ERROR_NETWORK
  3. ERROR_AUDIO
  4. ERROR_SERVER
  5. ERROR_CLIENT
  6. ERROR_SPEECH_TIMEOUT
  7. ERROR_NO_MATCH
  8. ERROR_RECOGNIZER_BUSY
  9. ERROR_INSUFFICIENT_PERMISSIONS

由于文档没有详细说明哪些错误会取消监听,哪些不会,您是否碰巧知道,根据您的经验,哪些错误需要在之前进行清理(以及在何种程度上) em> 再次尝试 SpeechRecognizer.startListening() 吗?

最佳答案

不,调用onError 时不会调用cancel。可以看源here .

关于android - RecognitionListener.onError() 是否自动 SpeechRecognizer.cancel()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5849063/

相关文章:

python - 资源已耗尽 Google Cloud Speech

java - 带有 MRCP 的谷歌语音 API

android - Facebook 无效的 key 散列错误

android - 使用 Retaining Data Source Supplier 播放动画图像

java - Sphinx4:recognize()不会第二次运行

macos - 是否有 API(或任何 hack)可以访问 Mac OS X Mavericks 中的增强听写功能?

java - 我应该使用哪种语言进行编码以通过语音控制运动?

javascript - 语音识别API

android - Android 何时给出 OutOfMemory 异常?

java - 无法序列化 Hashmap,java.io.NotSerializedException