Skip to main content

Phrase corrections and pauses

Phrase corrections

A separate cabinet section, Phrase corrections, holds an organization-wide dictionary of “wrong → right” pairs. The replacement is literal: the platform looks for exactly the string you wrote and puts yours in its place. There are deliberately no regular expressions — the people who maintain the dictionary are not programmers, and a mistake in a regex costs more than it saves.
  • A rule can be bound to one agent; leaving the binding empty means “every agent in the organization”.
  • A correction applies both to the audio and to the text in history: the caller hears the corrected phrase and the transcript shows the same one.
  • The dictionary is live. Corrections are not frozen into a session snapshot: change the dictionary and the very next utterance comes out corrected, with nothing to restart.
  • The agent’s voice panel carries a toggle that enables the dictionary for that agent. It is off by default — existing agents noticed nothing.
Why it exists: where one model serves every language while callers speak their own, the same grammatical mistakes repeat call after call. On a client’s production data the error appeared in 8.9 % of calls, and four rules covered 64 % of them. A prompt fixes such regularities unreliably; a replacement is deterministic.
The dictionary has no effect in realtime mode. There the speech is synthesized by the model as a whole, and there is simply no point at which the text could be substituted before it is voiced.

Pauses in speech

An agent that reads a phone number or an amount in one breath sounds like a machine. Write [pause N] between two words — N is seconds, from 0.1 to 3.0 — and the agent stops there: Our number is eight [pause 0.4] six six [pause 0.4] two two. The case of the word and extra spaces do not matter; the fractional separator is a dot. The value is rounded to the nearest 0.05 s and pulled to the nearest edge if it is out of range, so [pause 5] is spoken as three seconds and [pause 0] as 0.1 — the phrase is never rejected over its pause. The tag works in fixed node text, in generated replies, and in everything else the agent says out loud: the opening line, silence reminders, the phrase after a failed transfer, the closing words of an End node. You can also let the model place pauses itself — describe in the prompt when one is wanted and give the tag as the example; a pause the model wrote is handled exactly like one you typed. Copilot knows the tag and will suggest [pause N] rather than a provider-specific form. What the caller hears depends on the voice. Where the voice supports a pause of an exact length — ElevenLabs on every model except eleven_v3, Cartesia, Inworld, Azure — the pause is real, to within the 0.05-second grid. Where it does not — OpenAI, Soniox, the self-hosted cybernet voice, ElevenLabs eleven_v3 — the platform puts punctuation instead: a comma below 0.4 s, an ellipsis from 0.4 s up. The break is audible, but its length belongs to the voice: measured, punctuation gives between 0.18 and 0.64 s, so [pause 2] on OpenAI sounds like roughly 0.6 s and is indistinguishable from [pause 0.5]. Silence is never inserted as audio — in listening tests that sounded like the line breaking up. A per-node voice and the reserve voice that steps in when the main one is unavailable each get the pause in the form their own voice understands: the tag is compiled per voice, not once per agent. Density has a ceiling. Three pauses per request reach ElevenLabs and Cartesia as real pauses (twenty on Inworld, no limit on Azure); from the fourth on, counting left to right, they become punctuation. Voices get unstable when a sentence is stuffed with tags, and three is enough for a phone number if you group the digits.
[pause] without a number is removed, not spoken. So is any unparsed construction that starts with [pause — the word is never read aloud, whatever the typo. A square bracket not followed by pause is ordinary text: [1, 2, 3] is still read as “one, two, three”. The older <break time="0.5s"/> form keeps working and means exactly the same on every voice, including those that never understood it, so existing texts need no rewriting; a half-typed <break is now cut out instead of being read letter by letter.
Where the tag does nothing. In the chat tester and in text channels there is no speech to pause, and the person is shown the reply without the tag. In an agent running in realtime (speech-to-speech) mode there is no separate synthesis step: the markup is stripped from the instructions before they reach the model, and the agent validator raises the warning realtime_pause_markup for every place that carries one — a warning, not a block on publishing. The Issues tab: the pause-markup warning for realtime mode, naming the node it came from Wherever the conversation is shown as text — the live transcript of a test call, the call history, session exports, reports and the payload of your webhooks — the agent’s words appear without the tag. The synthesis chunk log keeps the compiled text, because re-synthesis and the TTS cache denylist are keyed by it. What the call tells you. A pause_markup event with the status warning is written for a turn only when the compilation lost something: density_capped — the ceiling cut in and the extra pauses became punctuation; value_clamped — a value outside 0.1–3.0 was pulled to the edge; markup_dropped — an unparsed construction or a broken <break was removed. Ordinary compilation writes no event. Separately, a voice with no native pause is recorded once per call as a tts_capability event titled no_native_pause — that is how you tell which case an agent is in without listening. Neither event affects the call’s health verdict. One accounting caveat: the TTS character counter of a call counts the characters you typed, while the provider bills the compiled text — [pause 0.5] is 11 characters against 20 for <break time="0.50s"/> and 1 for a comma. Expect the provider’s own invoice to differ by about ten characters per pause. How long to make it. 0.3–0.5 s between groups of digits, after a name, before “right?” — that reads as breathing. 0.8–1.2 s before a question that needs a decision or after bad news. Over two seconds almost never: on the phone that long a silence means “has the call dropped?”, and people start talking over the agent. And not in every sentence — a pause works because the rest of the speech flows.