Follow-up on my original question. Gemini 3.1 Flash Live now sends:
{“serverContent”: {“speechState”: “SPEECH”}}
{“serverContent”: {“speechState”: “NON_SPEECH”}}
This is basically the speech_started / speech_stopped equivalent I was looking for. It isn’t in the docs yet, though. It seems these changes dropped completely out of nowhere without any prior heads-up. My client had been using the empty serverContent {} frames as a VAD heartbeat,and since the new frames carry a payload, that check stopped matching and recording started cutting off mid-utterance again. Is speechState officially supported, and will it be documented?