【问题标题】:Android Speechrecognizer stopListening() has no effect?Android Speechrecognizer stopListening() 没有效果?
【发布时间】:2016-06-22 21:18:50
【问题描述】:

在调用 startListening() 后,我在 Android 上使用 SpeechRecognizer.stopListening() 时遇到问题。它似乎没有任何效果。继续处理音频,返回识别结果,就像没有调用 stopListening() 一样。

有没有其他人遇到过类似的问题?难道我做错了什么?

可能的线索:在调用 stopListening() 之后,立即使用 SpeechRecognizer.ERROR_CLIENT 调用 onError()。也许这意味着停止调用失败?

在检测到语音开始之前调用 stopListening() 或在处理语音时都会出现此问题。

startListening() 和 stopListening() 都是从主线程调用的。

在至少两个不同的设备上测试了 Android 5 和 Android 6。

【问题讨论】:

    标签: android speech-recognition


    【解决方案1】:

    您的解释中的stopListening() 的行为符合预期。此调用不会阻止识别器在此之前处理语音输入。

    还预计它将调用onError()SpeechRecognizer.ERROR_CLIENT。如果您不希望将此作为“错误”处理,请在代码中调用 stopListening() 的位置添加一个简单的布尔值:

    deliberatelyCalledStop = true;
    

    然后在错误处理中,您会知道这是否已作为预期结果抛出并且您可以忽略它。

    为了关闭识别服务并忽略目前检测到的所有语音输入,您需要调用:

    recognizer.cancel();
    recognizer.destroy(); // if you want to destroy it
    

    These methods 会实现你想要的。

    请注意,在撰写本文时,Google 的识别服务存在一些相当大的错误。

    我建议您阅读我的回答to this question,然后查看我已经报告的the gist of the bugs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多