On this page
Speech-to-speech or a cascaded voice agent pipeline
What changes on a phone call, and what each design means for testing.
By Greg East, 7 minute read. Sources checked .
A chained (also called cascaded) voice agent passes text between separate speech-to-text, language model and text-to-speech parts, while a speech-to-speech agent takes audio in and sends audio back from one model. Chained agents give you text at every hand-off to inspect and control. Speech-to-speech agents mostly let you inspect only the output, with no text in the middle that you control.
Every phone voice agent does four jobs. It works out when the caller has finished, understands what they said, decides what to say, and says it. Both designs can run a good phone line, and they break in different places.
Key facts
- Default silence waits differ by framework: LiveKit Agents waits at least 0.5 seconds (source), Vapi 0.4 seconds (docs) and Pipecat's voice detector 0.2 seconds before its turn logic runs (source).
- A study across ten languages found the average gap between turns in each language was within 250 milliseconds of the cross-language mean (Stivers and colleagues, 2009).
- OpenAI says input audio transcription is "not native to the model", so a side transcript is only guidance (API reference).
- OpenAI counts caller audio at one token per 100 ms and agent audio at one per 50 ms (OpenAI).
- G.711 phone audio is listed at 8,000 Hz (RFC 3551).
How does a chained agent work?
Voice activity detection (VAD) and a turn detector decide when the caller has stopped. Streaming speech-to-text (STT) turns their words into text. A large language model writes the reply. Text-to-speech (TTS) speaks it, starting before the reply is finished. Frameworks such as Pipecat and LiveKit Agents wire these together, and platforms such as Vapi and Retell run the chain for you.
The strength is that every hand-off is text you can read. You can log what the STT heard, check the reply before it is spoken, swap one vendor for another, add a pronunciation list for your product names, and play a required statement word for word.
How does a speech-to-speech agent work?
A speech-to-speech model, such as the ones OpenAI's Realtime API offers for "speech-to-speech conversations" or those behind Google's Gemini Live API, takes audio in and gives audio back from one model. Working from the audio, it can in principle pick up tone that a transcript throws away. Gemini Live lists a feature called affective dialog that "adapts response style and tone to match the user's input expression". With OpenAI, turn detection runs on the provider's side. OpenAI's documentation describes two modes, one that waits for a set period of silence and a semantic mode that ends the turn "when the model believes based on the words said by the user that they have completed their utterance".
Where does the delay come from?
People leave very short gaps in conversation. A study across ten languages found that all of them minimise silence between turns, with the average gap in each language within 250 milliseconds of the cross-language mean (Stivers and colleagues, 2009). A phone agent is held to the same habit, so every extra delay in the chain is noticed.
In a chained agent the delay adds up stage by stage. One item is a setting rather than a model: the silence the system waits for before it decides the caller has finished. Defaults differ by framework. LiveKit Agents waits at least 0.5 seconds (source), Vapi 0.4 seconds (docs) and Pipecat's voice detector 0.2 seconds before its turn logic runs (source).
Then come the final transcript, the model's first words and the voice's first audio. A turn detector that listens to the words as well as the silence, such as LiveKit's turn detector model or Pipecat's Smart Turn, adds a signal that silence alone cannot give, which is the reason to use one.
Speech-to-speech removes the hand-offs, so the first sound can come sooner. It still has to decide the turn has ended, and the audio still travels to the provider and back.
Measure from the caller's side of the call. Component benchmarks leave out the phone network, the platform and your own tool calls. Report the time from the end of the caller's speech to the agent's first sound as a median and a 95th percentile, so the slowest replies show up where an average would hide them.
Interruptions
Callers interrupt. They say "yes, yes" during a notice, or correct a detail halfway through a sentence. The agent should stop quickly and carry on from what the caller actually heard.
That second part is easy to get wrong. When the agent is cut off, its history may still hold the whole reply it planned to say. OpenAI's Realtime guide explains that over WebRTC and SIP the server truncates unplayed audio for you, while over a WebSocket your own code must stop playback and send the truncation.
Chained frameworks do the same job. LiveKit's documentation says its agent "automatically truncates its conversation history to include only the portion of the speech" that was played. Miss it, and the agent later refers to something the caller never heard. There is more on this in how voice agents handle interruptions.
Backchannels are the opposite problem. A caller who says "mm" is not asking the agent to stop. A detector that treats every sound as an interruption makes the agent stutter, and on a noisy line it stops for a passing bus.
Control
Chained pipelines give you more control, and in regulated work that matters. If a statement must be read exactly, you can send fixed text to the TTS and know what was said.
A speech-to-speech model can paraphrase a fixed statement. OpenAI's API reference says input audio transcription is "not native to the model", runs asynchronously, and "should be treated as guidance of input audio content rather than precisely what the model heard". If the log says the caller gave the right policy number, that does not prove the model heard the same thing.
Cost
A snapshot from the vendors' own pages on 27 October 2026.
- Speech-to-speech is billed on audio tokens. OpenAI counts caller audio at one token per 100 ms and agent audio at one per 50 ms. In OpenAI's words, "the entire conversation is sent to the model for each Response", so "turns later in the session will be more expensive".
- LiveKit's pricing page lists OpenAI GPT Realtime 2.1 at $0.0676 a minute and Google Gemini 3.8 Live at $0.0182 a minute through its own service.
- A chained agent is billed part by part. Deepgram lists streaming Nova-3 at $0.0077 a minute, shown at a limited-time promotional $0.0048 when we checked. ElevenLabs lists its Flash and Turbo voices at $0.04 per 1,000 characters, and its plan tables pair 20,000 characters with about 20 minutes. The language model and telephony come on top.
Add telephony and platform fees before you compare the two. Then compare the cost of each successful call, meaning one where the caller got what they rang for.
What to test
For both designs, run real audio, because typed tests miss faults that text versus audio testing describes:
- Time from the caller's last word to the agent's first sound, as a median and a 95th percentile, over a real phone line.
- Interruptions in the middle of a long answer, then whether later turns mention words the caller never heard.
- Callers who pause mid-answer, such as giving a policy number in two halves. An eager turn detector cuts them off.
- Phone audio. Phone calls are often carried as G.711, which RFC 3551 lists at 8,000 Hz in both its A-law and mu-law forms. That holds less of the sound than the 16 kHz audio that, for example, Smart Turn takes in. How much that adds to errors on regional accents is what our benchmark will measure.
For speech-to-speech, add:
- Exact wording of anything the agent is required to say.
- Judging from the audio, or a transcript you make yourself, rather than trusting the side transcript.
- Model updates. Pin a dated model version and rerun your tests before you move to a new one.
For chained, add:
- One slow vendor. A two-second stall in the TTS is two seconds of silence on the line.
- Transcription errors that the model then acts on, such as a wrong digit in a reference number.
RingTru’s simulated callers ring your agent with accents, noise and interruptions. For the wider checklist, see what makes or breaks a voice agent.
Public benchmarks such as Full-Duplex-Bench and the Artificial Analysis speech-to-speech index compare models on turn-taking and reasoning. Use them for a shortlist, then test the shortlist on your own calls.
Choosing
In a chained agent you can inspect each hand-off. A speech-to-speech agent mostly lets you inspect the output alone, because its side transcript is only guidance. Test what the caller hears and keep the recordings.
Prices and model names in this article move fast. Everything here was checked against the linked pages on 27 October 2026.