1

我注意到 Google 的 SpeechRecognizer 有问题

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

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

我尝试设置断点,有时如果在 speechRecognizer.cancel() 之后和 speak() 之前暂停足够长的时间,onEndOfSpeech() 实际上会触发..

我的 SpeechRecognizer 和 speak 在不同的线程上运行,知道为什么会发生这种情况吗?会不会有数据竞赛或某种形式?

4

0 回答 0