Thanks for the response Ashley - I thought it might be a browser issue.
The only thing is that no error is passed to SpeechError in the specific scenario of the player not speaking for while after having spoken previously. If you start speech recognition and say nothing at all 'no-speech' is indeed passed to SpeechError. However, if you start it, say something, then stay quiet, no error is passed even though it stops working. Unsure whether that's the browser not reporting it or C2 not picking it up.
Yeah, my workaround is to indicate in game that the speech recognition has stopped and prompt the player to reinitiate it. The only vaguely annoying thing about this is it causes Chrome to ask for access to the mic again which is a rather immersion breaking.