android - 谷歌语音识别超时

标签 android speech-recognition voice-recognition google-voice-search

我正在开发一个基于语音识别的 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/

相关文章:

python - 为什么在目录中循环访问.wav文件时显示错误,但在不循环时工作正常?

java - Microsoft 认知说话人识别注册

java - 即使在应用程序管理器中也使整个应用程序不可见

android - TextInput 布局在 API17 的中心显示编辑文本错误图标

java - ListView - CHOICE_MODE_MULTIPLE_MODAL - 正在选择随机项目

ios - 如果用户停止说话,如何自动停止语音识别

android - 如何在android项目中加载VS2010生成的自己的.dll库?

node.js - 如何存储语音并从数据库中识别?

linux - 在 Linux 上获取输入插入符号周围的文本

android - 如何将录制的音频文件保存在应用程序的原始文件夹中