网络语音 API 在一段时间没有输入后停止收听
Web speech API stops listening after some time passes without input
我正在使用网络语音 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 浏览器似乎通过生成 弹出窗口 到 Allow[=17= 来阻碍连续性] 或 每 5-7 秒阻止 麦克风。
我正在使用网络语音 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 浏览器似乎通过生成 弹出窗口 到 Allow[=17= 来阻碍连续性] 或 每 5-7 秒阻止 麦克风。