product 11 Sep 2026 · 3 min read

A Voice Call That Doesn't Wait Its Turn

Voice mode in ToRun has been a walkie-talkie. You speak, it listens; it speaks, your microphone is closed. That is not how people talk, and everyone notices within about thirty seconds — the moment you want to say "no, t…

ToRun Team ToRun Team

Voice mode in ToRun has been a walkie-talkie. You speak, it listens; it speaks, your microphone is closed. That is not how people talk, and everyone notices within about thirty seconds — the moment you want to say "no, the other one" and have to wait for a sentence to finish first.

gpt-live-1 is a full-duplex engine. The microphone stays open while it is talking. You can interrupt it the way you interrupt a person, and it hears you while it is speaking rather than after.

Behind the same contract

It is a different protocol from the realtime voice we already had — a different endpoint, a different vocabulary of events, no turn identifiers, no end-of-turn marker. All of that is translated at one boundary into the events our voice bridge already speaks. Everything downstream is unchanged: the same session, the same tools during a call, the same per-minute settlement, the same two apps.

Before any of it was written, a probe ran the whole loop against the provider with a development key and recorded the frames. Those recordings are the fixtures the translation layer is tested against, so what it is tested on is what the provider actually sends rather than what a document says it sends.

Echo is the reason nobody does this by default

An open microphone during playback hears the assistant. Without cancellation it answers itself, forever. So on iOS the audio session switches to the voice-processing profile, which is the one that cancels echo and behaves like a speakerphone; on Android the capture preset does the same job.

That is a real cost, and it is why this is decided per model rather than globally. The catalogue row carries a flag. A model with the flag keeps the microphone open and turns cancellation on; every other voice on the platform keeps its gate and its louder audio profile, exactly as before. The decision is taken when the session starts and taken again from what the server actually opened, in case a tier default resolved to something else.

On the web nothing changed: the microphone was never gated there and the browser already asks for echo cancellation.

What it is not, yet

It is not on the free tier. A free minute would be gone in a single exchange, and an allowance that runs out mid-sentence is worse than one that was never offered.

And the first version behaves as an improvement rather than a transformation on mobile, because both apps keep some of their own gating until the device-side cancellation is confirmed on real hardware. The engine is full duplex; the phones are catching up to it.