In 30 seconds
Jesse Hall uses financial-service calls to show how a voice agent can lose a conversation when it mishears a date, mishandles an interruption, or goes silent during a tool call. Individual model leaderboards cannot measure the whole experience. Teams should test the complete voice stack, measure time to first audible audio and first sentence, and run slow tools asynchronously. Hall also describes turn detection that combines vocal rhythm with transcript text, and evaluations that put simulated callers against a working agent. The goal is to fit natural, human-like behavior into a latency window of roughly 1.5 seconds, then turn failures into regression tests.
- 1Real-time conversations cannot wait like background tasksA coding or research agent can often take a few extra seconds. A voice agent has to keep up with a live conversation, including interruptions and changes to a payment date, without losing the thread.
- 2Leaderboards score components; products ship conversationsIf speech recognition hears “the 30th” instead of “the 3rd,” the language model and downstream system proceed with the wrong date. Isolated scores on clean audio do not capture that chain of errors in a noisy call.
- 3Measure the latency callers actually hearThe first byte can be followed by three-quarters of a second of silence, and the first token does not mean TTS can start speaking. Measure time to first audio and time to first sentence.
- 4Let slow tools run while the conversation continuesLike a human representative who explains that a lookup is underway, an agent can let a transaction query run in the background while retaining conversational control. It can verify errors and escalate to a person when necessary.
- 5Turn detection needs audio as well as textLiveKit’s turn detector considers rhythm, pitch, and intonation. Hall reports interruption rates of 9.9% for an alternative and 4.5% for LiveKit in their own hotel-agent and related use cases, rather than claiming universal results.
- 6Compare complete stacks with simulated callersSimulate callers who change their minds, interrupt, mumble, or speak over background noise. Check outcomes, tool-use steps, and conversation quality, then change models while keeping the agent and scenarios fixed.
Takeaways
- Evaluate complete voice conversations and business outcomes rather than choosing components solely from model leaderboards.
- Measure time to the first audible audio and first sentence, rather than just the first byte or token.
- Run slow tools asynchronously so the agent can continue the conversation instead of leaving the caller in silence.
- Use rhythm, pitch, and intonation alongside transcript text to avoid interrupting callers before they finish.
- Test the whole system with simulated callers who interrupt, change their minds, mumble, and introduce background noise.
Read the edited text by chapter
Why real-time voice agents lose the conversation
Background agents can spend extra time completing tasks, but a live voice agent has to handle interruptions and changing requests. Hall uses payment amounts and dates to illustrate the higher stakes in financial services.
Most agents we use day to day work in the background. They write code or do research; we give them a task, walk away, and return later. An extra ten seconds, ten minutes, or sometimes even ten hours may be acceptable. A real-time agent faces a different expectation.
Over the past year, you may have encountered a real-time voice agent when calling a pharmacy, airline, or car dealership. At some point, you probably did something very human: you spoke over it, interrupted it, or confused it. The conversation fell apart, stopped feeling natural, and you pressed zero to reach a person.
The stakes are higher in financial services. A caller might schedule a payment and then change the amount or date halfway through the request. If the agent fails to keep up, the result can be more than an awkward conversation: it can be an incorrect financial action. We need agents that handle these changes naturally.
Making voice agents sound human
Latency matters, but the goal is natural conversation rather than speed alone. Hall introduces LiveKit’s real-time framework and focuses on the particular challenges of voice.
When people think about a good voice agent, latency is usually the first concern. We want it to be fast, and latency does have a finite budget. But speed is only part of the equation. The real goal is to make the agent as human-like as possible within that budget.
Voice is a natural interface: we learn to speak before we learn to read. LiveKit provides an open-source real-time framework and infrastructure for agents that hear, see, and speak to the person on the other end. There are other interaction modes, including video and data streams, but today we are focusing on the challenges of voice.
Why leaderboards cannot choose a voice stack
A cascaded pipeline connects speech recognition, an LLM, and text-to-speech; speech-to-speech models offer another approach. Component leaderboards miss cascading transcription errors, interruptions, and noisy real-world calls.
A traditional voice agent uses a cascaded pipeline: speech-to-text, a language model, and text-to-speech work together. Newer speech-to-speech models can replace that pipeline, although they are not yet the right choice for every use case. With hundreds of models and dozens of providers, choosing a stack quickly becomes complicated.
Leaderboards score individual models and components, but we are shipping a conversation. Suppose a caller says, “I want to pay on the 3rd,” and speech recognition hears “the 30th.” The LLM plans around the 30th and passes that date into the system; it cannot know the transcript was wrong. Those errors flow downstream. Component leaderboards also tend to use clean audio, while real callers may be on speakerphone in traffic with children in the back seat.
From first byte to perceptible latency
A TTS first-byte metric can hide silence, and an LLM’s first token may not be a speakable sentence. Hall recommends measuring time to first audible audio and time to first sentence.
The useful question is which stack to ship for a particular use case. Even the measurements we use to compare providers can be misleading. A TTS dashboard might report a very fast 210-millisecond time to first byte, yet we have tested popular providers that send as much as three-quarters of a second of silence afterward. A byte is not audible audio. Measure the time until the user actually hears something.
The same problem appears with language models. Time to first token is a text metric, and TTS cannot start speaking just because one token has arrived. It generally needs a complete sentence. A model that generates tokens quickly is not necessarily the model that produces the first speakable sentence fastest, so time to first sentence is the more useful measure.
Running tool calls asynchronously
Voice agents may need slow transaction lookups, payment checks, or dispute submissions. Asynchronous tool calls let the agent continue talking while backend work proceeds independently.
Voice agents also have to do things: look up transactions, check payment status, and submit disputes. Backend operations can take long enough that the delay becomes obvious. We cannot hide forty seconds or more of latency. Instead, ask what a human representative would do while the system is working.
A human would not simply go silent. They might say, “Give me a second, I’m looking that up,” explain that the system is slow, or ask another question while the lookup runs. That ability to multitask is part of natural conversation, and our agents should be able to do it too.
The code example adds an asynchronous update that hands conversational control back to the agent while a tool call is running. The conversation and the backend tool no longer have to share the same thread of work. The agent can keep talking while the query continues independently in the background.
Keeping a hotel-booking conversation moving
A demonstration collects booking details while saving them to a real backend. The agent continues without waiting for each save, and can verify errors or hand the call to a human.
In the hotel-booking demonstration, the caller supplies dates, the number of guests, room preferences, and contact details. The agent accepts interruptions and keeps moving through the booking. Rather than collapsing when the caller speaks over it, it maintains a natural exchange.
Behind that conversation, tool calls save each piece of information to a real backend. The agent does not wait for every save to finish before asking the next question. If a tool returns an error, it can verify or correct the information. If the problem persists, it can hand the call to a human. This is how our agents should operate.
Using audio cues to decide whose turn it is
LiveKit’s turn detector considers rhythm, pitch, and intonation as well as the transcript. A pause in the middle of a payment amount illustrates why audio can help the agent wait for the caller to finish.
Another essential ability is knowing when to speak and when to keep listening: turn detection. LiveKit’s built-in detector considers more than the transcript. It also listens to the audio’s rhythm, pitch, and intonation to decide whether the person has finished speaking.
In evaluations against our hotel agent and other use cases, a leading alternative interrupted callers 9.9% of the time, compared with 4.5% for our detector. Those numbers describe our own scenarios. The evaluations are open source, so teams can run them against their own datasets and see what results they get.
Imagine that I want to pay $555.23 and pause for two seconds after saying “five hundred.” A detector that only sees “500” in the transcript may conclude that I am done. A detector that hears my inflection can recognize that the amount is unfinished and wait for me to continue.
Working within the response window
The window runs from the caller’s last syllable to the agent’s first audible response. Hall describes roughly 1.5 seconds as a practical upper bound, with 500–600 milliseconds feeling more like human conversation.
The latency window begins with the caller’s last syllable and ends with the agent’s first audible response. The turn detector determines when the caller is done, the language model can prepare an answer from a provisional transcript, and TTS starts generating audio as soon as possible. Every chosen model, function call, and handoff has to fit within that finite window.
At roughly one and a half seconds between turns, the conversation can still hold together, but it starts to feel unnatural. At around 500–600 milliseconds, the exchange feels more human-like. The question is therefore how much natural behavior we can fit into the latency window, rather than how to make everything faster without limit.
Benchmarking your own use case with simulated calls
Simulated callers pursue goals, interrupt, change their minds, and introduce noise. Teams check both outcomes and the steps taken, then compare models using the same working agent and identical scenarios.
To choose models, test an entire conversation using a complete working agent. The hotel receptionist from the demonstration has a real backend; it is a functioning, open-source agent rather than a mockup. We put simulated callers against that agent to evaluate what actually happens.
Simulated callers can pursue goals, change their minds, interrupt, mumble, and bring background noise into the call. Text-based simulations test business logic. Audio-based simulations also exercise speech recognition, turn-taking, and the complete voice pipeline, bringing the test closer to a real call.
Each scenario should specify what the caller wants, what actions the agent should take, and the expected outcome. For the hotel, did the correct reservation reach the database? For a financial workflow, was the correct amount charged with the proper authorization? We score those outcomes against the scenario.
Completion alone is insufficient, because an agent can reach an apparent result through the wrong steps. Did it take ten steps when it should have needed two? Did it hallucinate a function call? We must evaluate the route it took and the whole conversation, as well as the final result.
Keep the agent and scenarios fixed, then swap the models and run the tests again. Every model should see identical input, byte for byte. Repeating that loop builds a personalized benchmark for a particular agent and use case. That is how a team can discover which model combination works best for its own situation.
These tests can produce surprises. A model that gets the correct result fastest may be the right choice even if it is not at the top of a general leaderboard. The benchmarks, simulations, and methodology are open source, so teams can try them with their own agents.
Benchmark results and a production checklist
Hall compares first-sentence latency on a hotel agent and emphasizes that voice agents are real-time systems. His checklist covers perceptible delay, critical amounts and dates, authorization, tool results, and whole-conversation quality.
In the hotel-agent benchmark shown on the slide, Gemma 4 31B on LiveKit Inference reached the first sentence in 381 milliseconds. The same model through OpenRouter took 844 milliseconds; Gemini 2.5 Flash took 932, GPT-4.1 took 1,097, and GPT-5.5 took 1,645. These are results for this hotel scenario. LiveKit optimizes inference serving for voice workloads while remaining model agnostic, so teams can test whichever models suit their applications.
A voice agent is more than a chatbot with a speaker attached. It is a real-time system that needs to respond like a person. Set a latency budget based on what the caller hears, measure time to first audio and first sentence, confirm critical amounts and dates, verify identity before accessing an account, and keep listening while slow tools run.
Run complete conversations repeatedly through simulations. Check the final state, privacy safeguards, unnecessary tool calls, and turn-taking. Convert every failure into a regression scenario and iterate. Start with one workflow or failure you care about: run it, listen to the conversation, and check what happened in the backend. The goal is an agent that can handle being interrupted or confused and still keep the conversation natural. Go build that.
More from this channel
19:43EN
18:27EN
17:56EN
35:19EN
20:58EN
18:31EN