我正在开发一个基于语音识别的 Android 应用程序。
直到今天,一切都正常且及时,例如我会启动我的语音识别器,说话,然后在最多 1 或 2 秒内应用程序收到结果。
这是一个非常可接受的用户体验。
那么今天我必须等待十秒或更长时间才能获得识别结果。
我已尝试设置以下 EXTRAS,但都没有任何明显的区别
RecognizerIntent.EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS
RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS
RecognizerIntent.EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS
我一直在不断更改我的应用程序,但是这些更改都与语音识别器无关。
有什么方法可以减少语音识别器从 onBeginningOfSpeech()
切换到 onResults()
之间的时间吗?
这是一个需要多长时间的示例
07-01 17:50:20.839 24877-24877/com.voice I/Voice: onReadyForSpeech()
07-01 17:50:21.614 24877-24877/com.voice I/Voice: onBeginningOfSpeech()
07-01 17:50:38.163 24877-24877/com.voice I/Voice: onEndOfSpeech()
最佳答案
编辑 - 显然已在 2016 年 8 月发布的版本中修复 你可以 test the beta确认。
这是 Google 'Now' V6.0.23.* 版本中的一个错误,并且在最新的 V6.1.28.* 中仍然存在。
自 V5.11.34.* 发布以来,Google 的 SpeechRecognizer
实现一直存在错误。
您可以使用 this gist复制其中的许多。
您可以使用 BugRecognitionListener解决其中的一些问题。
我已将这些直接报告给 Now 团队,所以他们知道,但到目前为止,还没有解决任何问题。 Google Now 没有外部错误跟踪器,因为它不是 AOSP 的一部分,所以恐怕没有什么可以加星标的。
您详细介绍的最新错误几乎使它们的实现无法使用,正如您正确指出的那样,控制语音输入时间的参数被忽略了。根据the documentation :
Additionally, depending on the recognizer implementation, these values may have no effect.
是我们应该期待的......
如果您不说话或不发出任何可察觉的声音,识别将无限期地继续。
我目前正在创建一个项目来复制这个新错误和所有其他错误,我将很快转发并链接到这里。
编辑 - 我希望我可以创建一个解决方法,使用检测部分或不稳定的结果作为触发器来了解用户仍在说话。一旦它们停止,我可以在一段时间后手动调用 recognizer.stopListening()
。
不幸的是,stopListening()
也被破坏,实际上并没有停止识别,因此没有解决方法。
围绕上述尝试,销毁识别器并仅依赖部分结果直到该点(销毁识别器时 onResults()
未被调用)未能产生可靠的实现,除非你是 simply keyword spotting .
在 Google 解决此问题之前,我们无能为力。您唯一的出路是向 apps-help@google.com 发送电子邮件报告问题,并希望他们收到的数量能给他们带来帮助.....
关于android - 谷歌语音识别超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38150312/