SpeechRecognizer onEndOfSpeech有时不会被解雇

时间:2013-10-09 21:44:39

标签: android multithreading speech-recognition text-to-speech race-condition

我注意到Google的speechRecognizer存在问题

我有一个onEndOfSpeech()监听器,有时我想播放语音提示或更改UI,所以我做了speechRecognizer.cancel(),它是异步的,会触发onEndOfSpeech()监听器。

当UI更改时,这非常有效。但是,当我尝试播放语音提示时,我会执行speechRecognizer.cancel();然后调用我的语音提示方法speak()[使用TTS],onEndOfSpeech()监听器永远不会被触发。当我第二次触发识别器并且我在不调用speak()的情况下取消时,一切都很好。

我试图设置断点,有时候如果在speechRecognizer.cancel()之后暂停,并且说话()足够长,onEndOfSpeech()实际上会触发......

我的演讲识别和说话是在不同的线程上运行,任何关于为什么会发生这种情况的想法?可能存在数据竞争还是某种类型?

0 个答案:

没有答案