{"slug": "gpt-live-needs-an-interruption-ui-not-just-a-microphone-button", "title": "GPT-Live Needs an Interruption UI, Not Just a Microphone Button", "summary": "OpenAI's GPT-Live voice model, introduced July 8, 2026, requires an interruption UI beyond a simple microphone button to handle state transitions like user interruption, permission loss, and network changes. A developer recommends using visual status indicators and restrained live region announcements for accessibility, and provides a test matrix for recovery scenarios.", "body_md": "OpenAI introduced [GPT-Live](https://openai.com/) 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?\n\nA microphone button cannot represent the full state machine.\n\n```\ntype VoiceState =\n  | \"idle\"\n  | \"requesting-permission\"\n  | \"listening\"\n  | \"user-speaking\"\n  | \"model-thinking\"\n  | \"model-speaking\"\n  | \"interrupted\"\n  | \"recovering\"\n  | \"permission-denied\"\n  | \"offline\";\n```\n\nUse a visual status for rapid changes and a restrained live region for meaningful transitions:\n\n```\n<p id=\"voice-status\">Listening</p>\n<div aria-live=\"polite\" aria-atomic=\"true\" id=\"voice-announcement\">\n  Voice response stopped. Your transcript is still available.\n</div>\n<button type=\"button\">Stop listening</button>\n<button type=\"button\">Review transcript</button>\n```\n\nDo not announce every partial token. That turns screen-reader output into noise. Announce state changes, errors, and completed user-relevant actions.\n\nAn interruption test matrix should include:\n\n| Scenario | Required recovery |\n|---|---|\n| user speaks over model | stop audio, preserve both transcript boundaries |\n| microphone permission disappears | show text path and settings guidance |\n| network changes mid-response | mark partial response, offer retry |\n| page goes to background | avoid silently resuming capture |\n| user presses Escape | stop the current action predictably |\n\nThe transcript also needs speaker labels that do not rely on color, keyboard access, and a way to delete sensitive turns.\n\nI use [MonkeyCode](https://monkeycode-ai.net/) 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](https://github.com/chaitin/MonkeyCode) offers a self-hosting option. This paragraph is context, not a claim of a GPT-Live integration.\n\nDisclosure: I'm a MonkeyCode user sharing my own experience, not affiliated with the project.\n\nVoice 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.", "url": "https://wpnews.pro/news/gpt-live-needs-an-interruption-ui-not-just-a-microphone-button", "canonical_source": "https://dev.to/babycat/gpt-live-needs-an-interruption-ui-not-just-a-microphone-button-41b6", "published_at": "2026-07-15 07:16:50+00:00", "updated_at": "2026-07-15 07:29:23.523544+00:00", "lang": "en", "topics": ["artificial-intelligence", "large-language-models", "ai-products", "ai-safety", "developer-tools"], "entities": ["OpenAI", "GPT-Live", "MonkeyCode"], "alternates": {"html": "https://wpnews.pro/news/gpt-live-needs-an-interruption-ui-not-just-a-microphone-button", "markdown": "https://wpnews.pro/news/gpt-live-needs-an-interruption-ui-not-just-a-microphone-button.md", "text": "https://wpnews.pro/news/gpt-live-needs-an-interruption-ui-not-just-a-microphone-button.txt", "jsonld": "https://wpnews.pro/news/gpt-live-needs-an-interruption-ui-not-just-a-microphone-button.jsonld"}}