Web speech API stops listening after some time passes without input

You can listen to the end event and then restart the recognition on the SpeechRecognition object.

You should use a boolean flag for deciding (in the onend event handler), when to restart the recognition (and when not to restart).

You could use the other recognition-related events for this.

E.g. Chrome triggers the following event handlers when recognition is started:

1. onstart
2. onaudiostart

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

If no sound speech is detected, only the first 2 will be triggered, and then, after some timeout, the corresponding end events (in reverse order).


A simple solution for this could probably be to listen for the end event and restart the recognition

recognition.addEventListener('end', recognition.start);