Google语音识别超时

Hec*_*tor 27 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
Run Code Online (Sandbox Code Playgroud)

我一直在不断更改我的应用程序,但这些更改都与语音识别器无关.

我可以采用任何方法来缩短语音识别器切换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()
Run Code Online (Sandbox Code Playgroud)

bra*_*all 20

编辑 - 显然已在2016年8月即将发布的版本中修复您可以测试测试版以确认.

这是谷歌'现在'V6.0.23.*发布的一个错误,并且仍然存在于最新的V6.1.28中.*

自V5.11.34发布以来.*谷歌的实施SpeechRecognizer一直困扰着虫子.

您可以使用此要点复制其中的许多内容.

您可以使用此BugRecognitionListener来解决其中一些问题.

我已将这些直接报告给Now团队,所以他们知道,但到目前为止,还没有修复任何问题.Google Now没有外部错误跟踪器,因为它不是AOSP的一部分,所以没什么可以为我担心的.

您最近详细说明的最新错误会使其实现无法使用,正如您正确指出的那样,将忽略控制语音输入计时的参数.根据文件:

此外,根据识别器实现,这些值可能无效.

是我们应该期待的......

如果您不说话或发出任何可检测到的声音,识别将无限期地继续.

我目前正在创建一个项目来复制这个新bug和所有其他bug,我将在此处转发并在此处链接.

编辑 - 我希望我可以创建一个解决方法,使用部分或不稳定结果的检测作为触发器来知道用户仍在说话.一旦他们停下来,我可以recognizer.stopListening()在一段时间后手动打电话.

不幸的是,stopListening()它也被打破了并且实际上并没有停止识别,因此没有解决方法.

围绕上述尝试,破坏识别器并仅依赖于部分结果直到那一点(当onResults()没有调用识别器时),无法产生可靠的实现,除非你只是关键字定位.

在Google解决此问题之前,我们无能为力.您唯一的出路是发送电子邮件至apps-help@google.com报告问题,并希望他们收到的音量给他们一个轻推.....


小智 7

注意!这仅适用于在线模式. 启用听写模式并禁用部分结果:

intent.putExtra("android.speech.extra.DICTATION_MODE", true);
intent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, false);
Run Code Online (Sandbox Code Playgroud)

在听写模式下,speechRecognizer仍会调用,onPartialResults()但是你应该将partials视为最终结果.