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