OpenAI introduced GPT-Live on July 8, 2026 as a new generation of voice models for more natural human-AI interaction. Real-time voice demos make latency visible. Production interfaces also need to make authority visible: who is speaking, who is listening, and what happens after an interruption?
A microphone button cannot represent the full state machine.
type VoiceState =
| "idle"
| "requesting-permission"
| "listening"
| "user-speaking"
| "model-thinking"
| "model-speaking"
| "interrupted"
| "recovering"
| "permission-denied"
| "offline";
Use a visual status for rapid changes and a restrained live region for meaningful transitions:
<p id="voice-status">Listening</p>
<div aria-live="polite" aria-atomic="true" id="voice-announcement">
Voice response stopped. Your transcript is still available.
</div>
<button type="button">Stop listening</button>
<button type="button">Review transcript</button>
Do not announce every partial token. That turns screen-reader output into noise. Announce state changes, errors, and completed user-relevant actions.
An interruption test matrix should include:
| Scenario | Required recovery |
|---|---|
| user speaks over model | stop audio, preserve both transcript boundaries |
| microphone permission disappears | show text path and settings guidance |
| network changes mid-response | mark partial response, offer retry |
| page goes to background | avoid silently resuming capture |
| user presses Escape | stop the current action predictably |
The transcript also needs speaker labels that do not rely on color, keyboard access, and a way to delete sensitive turns.
I use MonkeyCode for coding tasks rather than claiming it has the voice interface above. What I recommend is its task-oriented workflow as a useful contrast: long-running work should preserve state and evidence outside a transient conversation. The hosted SaaS is easy to inspect without a local install, while the open-source project offers a self-hosting option. This paragraph is context, not a claim of a GPT-Live integration.
Disclosure: I'm a MonkeyCode user sharing my own experience, not affiliated with the project.
Voice can feel natural while recovery remains confusing. Treat interruption as a first-class, testable state and the interface will be more usable for everyone—not only users of assistive technology.