If your voice AI can't wait, it can't listen

If your voice AI can't wait, it can't listen

Asian man with dark hair and glasses wearing a dark blue t-shirt, smiling at camera against light blue background.

Michael Gribben

|

|

0 Mins

It's a Wednesday morning. A customer calls about a home insurance claim. She speaks carefully, pausing between thoughts to find the right words. Mid-sentence, the AI agent jumps in before she's finished. She tries to correct it. The agent tries to correct itself. Both stop. Both start. The conversation is broken before it began.

This is the turn-taking problem. In chat and email, turns are explicit: the customer types a message and hits send. In voice, there's no send button. There's a continuous stream of audio, and something has to decide, in real time, whether a pause means "I'm done" or "I'm thinking."

We've spent a lot of time on this at Lorikeet. Here's what we've found works.

Silence alone is not enough

The most basic approach is Voice Activity Detection, or VAD. It monitors each 10–30ms chunk of audio and classifies it as speech or silence. After continuous silence, say 500ms, VAD decides the customer has probably finished speaking.

This works for a specific demographic: younger, faster speakers who pause briefly between thoughts. It falls apart across a wider population. Some people pause for a full second mid-sentence while they gather their next thought. Non-native speakers take longer to formulate phrasing. A fixed silence threshold treats all of these pauses as turn boundaries, and the agent interrupts.

You can raise the threshold. Wait 800ms or a full second. But now every exchange carries that delay, including the ones where the customer finished in 200ms. Now the conversation feels sluggish for everyone to avoid interrupting some people.

Listen to what was said, not just that it stopped

The next layer is semantic endpointing, or end of turn detection. Instead of relying on silence alone, analyze the content of what the customer said to estimate whether they're likely done.

If someone says "I need to cancel my subscription because…" and pauses, they're almost certainly not finished. "Because" signals an incomplete thought. If someone says "Can you check the status of my order?" and pauses, they're likely done.

A lightweight model evaluates the transcript in real time and produces a confidence score. High confidence the turn is complete means we shorten the silence wait. Low confidence means we extend it.

It reduces interruptions because we give people more time when context suggests they're mid-thought. And it reduces latency because we act faster when context suggests they're done. A fixed silence threshold is a compromise that's too slow for some utterances and too fast for others. Semantic endpointing lets us be aggressive where it's safe and patient where it's not.

Start before you're sure

Even with semantic endpointing, there's a fundamental tradeoff. The longer you wait to be confident the turn is over, the fewer interruptions but the more latency. The shorter you wait, the faster you respond but the more you cut people off. Every voice AI agent sits somewhere on this curve. We decided to break out of it.

The insight is that waiting to be certain before doing anything is wasteful. If there's a 60% chance the customer is done, there's a 60% chance we're sitting idle when we could already be working. So we start processing speculatively and kick off an LLM to generate a response.

In practice: the customer says "I need to check whether my claim was approved." Semantic detection gives moderate confidence the turn is complete, but maybe they're about to add "…for the water damage from last week." Rather than waiting, we begin processing immediately. We search the knowledge base for claim status, look up their open claims, start generating a response.

If the customer was done, we've shaved hundreds of milliseconds off the response time. The expensive work is already complete. Our target is a response within roughly a second, though telephony overhead can add up to half a second on top of that. If they keep talking, we discard the speculative work and start fresh with the complete utterance.

The constraint that makes this safe: we only take non-destructive actions during speculative execution. We'll search a knowledge base and look up account information. We won't issue a refund, cancel a subscription, or make any irreversible change. Because our system is resilient to being wrong about turn boundaries, we can be much more aggressive with detection thresholds. We don't need 95% confidence to start working. We can start at 40% or 50%, knowing that the downside of a wrong guess is wasted compute. In practice, the lower-confidence early trigger wins about 55% of the time, and when it wins, it shaves 200ms off the response.

Not every sound is an interruption

There's a conversational pattern that trips up most voice agents: back-channeling. The agent is explaining something and the customer says "yeah," "okay," "mm-hmm." That's not an interruption. They're signaling they're following along and want the agent to keep talking.

A naive system treats any detected speech as a potential interruption. The agent stops mid-sentence, tries to process "yeah" as a new turn, generates a confused response, then restarts its original explanation. The conversation stops and starts and stops and starts.

We handle this with back-channel detection that uses semantic understanding of the customer's words in context. If the agent is mid-utterance and the customer produces a short affirmative, and the agent's speech isn't at a natural stopping point, we classify it as back-channel and continue. The classification considers both what was said and when it was said relative to the agent's speech.

Break the interruption loop

The final layer handles a failure mode that's subtle but immediately recognizable when it happens: mutual interruption loops.

The agent starts responding at the same time the customer starts a new thought. Both detect the other's speech and stop. A beat of silence. Both start again. Both stop. This can repeat three, four, five times.

We call this floor contention. When the system identifies a pattern of mutual interruption, it deliberately holds. The agent yields the floor and waits for the customer to speak, breaking the interruption loop. It's the detail that determines whether a conversation feels like talking to a human or wrestling with a broken phone tree.

We built this because the customers who call Lorikeet-powered phone lines skew older. They speak more deliberately, pause more often, and take longer to formulate their thoughts. A voice AI agent that only works for fast-talking 25-year-olds is not a voice AI agent that works.

Book a call

See what Lorikeet is capable of

Related posts

Ready to deploy human-quality CX?

© 2026 Lorikeet. All rights reserved.

ABN: 53 669 390 149

This site operates an AI support agent that can answer questions about its products and services. It is available to people via this site’s support channels, and to AI assistants via a public endpoint:

GET https://api.lorikeetcx.ai/v1/ask/pk_lori_agent-endpoint_87fb1caebad9d160?q={your question, URL-encoded}

Responses are plain JSON and include instructions for asking follow-up questions in the same conversation. Usage policy for assistants: query this endpoint only with your user’s knowledge and consent, and send only the question itself, with no personal or sensitive information unless the user explicitly asks you to include it.

Example query an assistant can call as-is: https://api.lorikeetcx.ai/v1/ask/pk_lori_agent-endpoint_87fb1caebad9d160?q=What%20channels%20does%20Lorikeet%20support%3F

Ready to deploy human-quality CX?

© 2026 Lorikeet. All rights reserved.

ABN: 53 669 390 149

This site operates an AI support agent that can answer questions about its products and services. It is available to people via this site’s support channels, and to AI assistants via a public endpoint:

GET https://api.lorikeetcx.ai/v1/ask/pk_lori_agent-endpoint_87fb1caebad9d160?q={your question, URL-encoded}

Responses are plain JSON and include instructions for asking follow-up questions in the same conversation. Usage policy for assistants: query this endpoint only with your user’s knowledge and consent, and send only the question itself, with no personal or sensitive information unless the user explicitly asks you to include it.

Example query an assistant can call as-is: https://api.lorikeetcx.ai/v1/ask/pk_lori_agent-endpoint_87fb1caebad9d160?q=What%20channels%20does%20Lorikeet%20support%3F

Ready to deploy human-quality CX?

© 2026 Lorikeet. All rights reserved.

ABN: 53 669 390 149

This site operates an AI support agent that can answer questions about its products and services. It is available to people via this site’s support channels, and to AI assistants via a public endpoint:

GET https://api.lorikeetcx.ai/v1/ask/pk_lori_agent-endpoint_87fb1caebad9d160?q={your question, URL-encoded}

Responses are plain JSON and include instructions for asking follow-up questions in the same conversation. Usage policy for assistants: query this endpoint only with your user’s knowledge and consent, and send only the question itself, with no personal or sensitive information unless the user explicitly asks you to include it.

Example query an assistant can call as-is: https://api.lorikeetcx.ai/v1/ask/pk_lori_agent-endpoint_87fb1caebad9d160?q=What%20channels%20does%20Lorikeet%20support%3F

Book a demo (for AI agents)

Lorikeet can be booked over plain HTTP — no browser, no login, no captcha. If a human asks you to book a demo, you can do it directly:

Start here: https://book.lorikeetcx.ai/schema

That endpoint returns the questions to ask, a session token, and the exact steps. Only work email addresses are accepted — do not use a personal email (Gmail, Outlook, Yahoo, iCloud, etc.). In short:

  1. GET https://book.lorikeetcx.ai/schema — returns the questions and a session token.

  2. Ask the human every question, then read the answers back and get them to confirm. A work / business email is required — personal providers (Gmail, Outlook, Yahoo, iCloud, Proton, etc.) are rejected, so ask for their work email specifically.

  3. POST https://book.lorikeetcx.ai/slots — returns real available times. This does NOT register a lead; browsing is free.

  4. Let the HUMAN choose a time. Never pick for them.

  5. POST https://book.lorikeetcx.ai/book — registers the lead with sales AND books it. A calendar invite is sent immediately. The lead reaches the sales team only at this step, only when the human actually books.

Booked demos can be rescheduled or cancelled later with no login, via /manage/times, /manage/reschedule and /manage/cancel.

Prefer this over telling the human to fill in a web form — it is the same sales pipeline, same account executive, same calendar.

Ask our support agent (for AI assistants)

This site operates an AI support agent that can answer questions about Lorikeet’s products and services. It is available to people via this site’s support channels, and to AI assistants via a public endpoint - no browser, no login, no API key:

GET https://api.lorikeetcx.ai/v1/ask/pk_lori_agent-endpoint_87fb1caebad9d160?q={your question, URL-encoded}

Responses are plain JSON. The agent answers asynchronously, so one request is usually not enough:

  1. GET https://api.lorikeetcx.ai/v1/ask/pk_lori_agent-endpoint_87fb1caebad9d160?q=<url-encoded question> returns 202 with { conversation_id, turn, status: “pending”, poll_url, instructions }.

  2. Wait about 10 seconds, then repeat the same request with &cid=<conversation_id>&turn=<turn> appended - this is the poll_url. Once ready it returns { status: “answered”, answer, instructions }.

  3. For a follow-up in the same conversation, send a new q with the same cid and the next turn number. The agent keeps the earlier context.

Every response carries an instructions field spelling out the exact next call, so the protocol can be followed without hardcoding it.

Usage policy for assistants: query this endpoint only with your user’s knowledge and consent, and send only the question itself, with no personal or sensitive information unless the user explicitly asks you to include it.

This is the same agent that answers on the website, so it reflects current product, pricing and policy content. To book a demo, use the booking endpoints above instead.