我正在使用网络语音 API,但是一旦一段时间(一分钟或两分钟)没有任何声音输入,它就会完全停止收听。我知道这一点,因为我让它将其解析的文本记录到控制台,但是,当我一两分钟不说话时,它就会停止这样做。
有没有什么办法解决这一问题?
我正在使用网络语音 API,但是一旦一段时间(一分钟或两分钟)没有任何声音输入,它就会完全停止收听。我知道这一点,因为我让它将其解析的文本记录到控制台,但是,当我一两分钟不说话时,它就会停止这样做。
有没有什么办法解决这一问题?
您可以侦听该end
事件,然后重新开始对SpeechRecognition
对象的识别。
您应该使用布尔标志来决定(在onend
事件处理程序中)何时重新启动识别(以及何时不重新启动)。
您可以为此使用其他与识别相关的事件。
例如,Chrome 会在识别开始时触发以下事件处理程序:
1. onstart
2. onaudiostart
(only if sound / speech is detected)
3. onsoundstart
4. onspeechstart
如果没有检测到语音,则仅触发前 2 个,然后在超时后触发相应的end
事件(以相反的顺序)。
一个简单的解决方案可能是监听结束事件并重新开始识别
recognition.addEventListener('end', recognition.start);
recognition.addEventListener('end', () => recognition.start())
有效,但 Chrome 浏览器似乎每 5-7 秒生成一个允许或阻止麦克风的弹出窗口,从而阻碍了连续性。