9

我正在使用网络语音 API,但是一旦一段时间(一分钟或两分钟)没有任何声音输入,它就会完全停止收听。我知道这一点,因为我让它将其解析的文本记录到控制台,但是,当我一两分钟不说话时,它就会停止这样做。

有没有什么办法解决这一问题?

4

3 回答 3

8

您可以侦听该end事件,然后重新开始对SpeechRecognition对象的识别。

您应该使用布尔标志来决定(在onend事件处理程序中)何时重新启动识别(以及何时不重新启动)。

您可以为此使用其他与识别相关的事件。

例如,Chrome 会在识别开始时触发以下事件处理程序:

1. onstart
2. onaudiostart

   (only if sound / speech is detected)
3. onsoundstart
4. onspeechstart

如果没有检测到语音,则仅触发前 2 个,然后在超时后触发相应的end事件(以相反的顺序)。

于 2017-01-09T12:32:12.277 回答
1

一个简单的解决方案可能是监听结束事件并重新开始识别

recognition.addEventListener('end', recognition.start);
于 2020-02-23T16:40:01.350 回答
0

recognition.addEventListener('end', () => recognition.start())有效,但 Chrome 浏览器似乎每 5-7 秒生成一个允许阻止麦克风的弹出窗口,从而阻碍了连续性。

于 2021-05-05T11:35:59.993 回答