Build / Voice & turn-taking
Making it sound human
Two things decide whether an agent sounds real: how you write its lines, and how patiently it takes turns. Both are settings you control — neither needs a better model.
Write for the ear, not the page
Everything you type is spoken aloud. An LLM left alone writes prose — correct, complete, and instantly robotic. Give it examples of what you actually want instead of telling it to “be conversational”.
Written (reads badly out loud)
"I have verified that access point AP-CEDAR-204 is back online
with a signal strength of -57 dBm."
"I will now create ticket TKT-5001 with severity level 1."
Spoken (what you want)
"Okay, good news... your Wi-Fi box just came back up, and the
signal's looking strong."
"So I've opened a ticket for this — ticket five thousand one —
and it's flagged top priority."Pacing
Punctuation is the only timing control you have — and the one you need.
Use an ellipsis where a person would pause:
"Alright... give me one second while I pull that up."
Punctuation is your timing. Short sentences. One idea each.
And it's fine to start a sentence with And, But or So.
One light filler per turn, never stacked:
"Okay, so... let me take a look."Don’t use SSML. Tags like <break time="300ms"/> or <emotion> are not supported and will be read out or mangled. Modern voices are designed to interpret punctuation instead — an ellipsis is your pause tag.
Numbers, dates and IDs
This single habit does more for realism than anything else. Identifiers are written for screens; say them the way a person would.
Ticket TKT-5001 -> "ticket five thousand one"
-57 dBm -> "a strong signal"
90 seconds -> "about a minute and a half"
2026-07-30 -> "this Thursday"
+14155550100 -> read one digit at a timeTurn-taking
Two behaviours you tune together: how easily the caller can interrupt (barge-in), and how long the agent waits after they stop before deciding it’s their turn (end-of-turn). Set them in Capabilities → Voice & turn-taking.
Patient caller
Waits out mid-thought pauses, and small words like “mm-hm” don’t cut the agent off. Use for older callers, distressed callers, or anyone reading a number off a screen.
Fast-paced line
Any word barges in, quick end-of-turn. Use for dispatch desks and expert users who know what they want.
Announcements only
The agent can’t be interrupted while speaking. Use for confirmations and compliance lines that must be heard in full.
Getting this wrong is loud. Too eager and the agent talks over people or repeats a question while they’re still thinking; too patient and it feels asleep. If callers sound cut off, move toward Patient caller.
In the SDK code
speech: {
interruption: { minWords: 2, minDuration: 600 },
endpointing: { minDelay: 900, maxDelay: 4000 }
}minWords: 2 means a backchannel like “mm-hm” won’t cut the agent off, but “wait, stop” will. minDelay is how long silence must last before the caller’s turn is considered over.
Judge it by ear, on a real call. Reading a transcript tells you nothing about pacing. Call the agent, interrupt it on purpose, and pause mid-sentence to see whether it waits.