---
title: "What happens to a sentence after the voice model speaks it"
description: "Between the voice model and the caller, the agent trims, resamples, checks and caches every sentence, and re-checks the cache at night."
canonical: "https://dialogist.cc/en/research/after-the-voice-model/"
locale: "en"
updatedAt: "2026-10-19"
---

# What happens to a sentence after the voice model speaks it

Research · 2026-10-19 · Dialogist team

> Between the voice model and the caller, the agent trims, resamples, checks and caches every sentence, and re-checks the cache at night.

A voice model produces audio, and a phone call needs more than that. Between the two, the agent trims every sentence, resamples it, checks it by recognizing it back and caches it, and the cache re-checks itself at night. This note describes that processing.

A synthesized sentence may begin with a little silence of its own, which no timing log shows. This note starts there.

Measured on: leading silence from 400 clips in the voice cache, threshold −50 dBFS. Cache shares from the load-test stand, recruiting agent, 64,192 phrases. The check thresholds are the production defaults and can be set per installation.

In short: the silence before the first word drops from a median of 280 ms to 40 ms. Every clip that goes into the cache is recognized back and compared with the text it was meant to say. The cache re-checks itself every night while no calls run. On the load-test stand, 94% of the first phrases of a reply came from the checked cache, and a cached phrase starts in about 1 ms.

## From audio to a reply on a call

A speech synthesis model turns text into audio. It was not built for a phone line, and the gap shows in small ways that a caller notices at once:

- **Silence before the first word.** Every clip begins with a short pause. The caller hears it as the agent hesitating.
- **A pause inside a sentence.** On a phone line, half a second of silence mid-sentence sounds like a dropped call. The caller starts talking into the gap, and the turn breaks.
- **A sentence cut short, or one that will not end.** Rarely, a model stops halfway or loops.
- **The wrong words.** Any neural voice can occasionally say something other than its text, so every clip is verified. Every acoustic measure passes: the audio is clean speech of a different sentence.
- **Clicks and clipping.** Audio made at one sample rate has to reach the line at another, in chunks, without a click at each join.

These are the distance between audio and a reply on a call, and none of them is a fault of the model. Dialogist closes that distance with processing on the way out, checks on every clip and a cache that keeps itself clean.

## The silence before the first word

We measured the start of 400 clips in the voice cache. The median clip began with 280 ms of silence, and none with less than 200 ms. That silence sits directly between the end of the caller's question and the agent's answer.

The agent trims it as the clip plays:

- **Frames.** The trimmer reads the audio in 10 ms frames. The first frame louder than −50 dBFS is the start of speech.
- **A margin.** Playback starts 40 ms before that frame. Forty milliseconds keep the soft onset of the first sound, so nothing is clipped.
- **Streaming.** The trimmer holds back only the silent frames and passes everything from the start of speech on, byte for byte.
- **A limit.** If no speech appears within 600 ms, the trimmer plays the clip as it is: a pause costs less than a swallowed first word.
- **The original stays.** The cache keeps the untrimmed clip. Trimming happens at playback, so we can tune it without touching a stored file.

By default the agent trims the first sentence of each reply, where the silence is pure waiting. The pauses between later sentences stay as the voice made them, because there they sound like breathing.

> The trim removes about 240 ms of the median 280 ms lead-in. On the line, the reply of a single call came about 200 ms sooner.

## Sample rates without clicks

The voice is produced at a studio sample rate, and the phone line runs at 8 or 16 kHz. Converting a whole clip at once is easy. Converting a stream chunk by chunk is where clicks come from: each chunk converted on its own starts and ends with a small transient, and the joins are audible.

The agent converts with an overlap-save method. It filters each chunk with context on both sides and sends out only the middle, the part computed with full context. Streamed this way, the output matches converting the whole clip at once to within 2 least significant bits, below anything a phone line can carry.

## Every clip is checked

Before a clip goes into the cache, where many callers will hear it, the agent checks it. The check runs the audio back through speech recognition and through a set of acoustic tests.

_The checks a clip passes before it goes into the cache._

| Check           | Fails when                                                                          | Why                                                                                                          |
| --------------- | ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| Recognized back | the recognized text matches the intended text by less than 80%                      | The only way to know the voice said this sentence. A fluent clip of the wrong words passes every other test. |
| Length          | the clip is shorter than 0.4× or longer than 2.5× the length expected from the text | Too short catches a sentence cut off. Too long catches a loop.                                               |
| Pause inside    | any silence inside the sentence is longer than 0.7 s                                | On a phone line it sounds like a dropped call.                                                               |
| Level           | the clip is quieter than −50 dBFS overall                                           | An empty or near-silent clip.                                                                                |
| Clipping        | more than 0.5% of samples hit full scale                                            | Distortion the caller hears as crackle.                                                                      |
| Edges           | silence at either end is longer than 0.5 s                                          | A warning only: the speech itself is right.                                                                  |

Two details keep the check fair:

- **Numbers are judged gently.** Recognition writes "500" as words, so a letter-by-letter comparison would fail a perfect clip. For text with digits a mismatch is a warning, and the agent does not regenerate the clip in an endless loop.
- **Pronunciation marks are removed** before the comparison, so a stress mark in the text does not count as an error.

The agent regenerates a clip that fails. If it still fails, the agent marks it for a person to listen to.

## Phrases ready before the call

Many sentences an agent says are predictable: the greeting, the questions in its script, the confirmations. We warm the agent's cache before calls begin: we run simulated conversations with the agent, collect what it says, synthesize each phrase, check it as above and store it.

Each phrase gets a second attempt if it fails its check, and anything still short of the bar is flagged in the report.

On the load-test stand, 94% of the first phrases of a reply and 95% of all 64,192 phrases came from the cache. A cached phrase starts in about a millisecond; a fresh one starts in about 100 ms.

## The cache cleans itself at night

A cache is only as good as its worst clip, so Dialogist re-checks it out of hours.

- **When.** In a night window, 01:00 to 06:00 by default, and only while no calls are running. If a call comes in, the check pauses and looks again a minute later.
- **What.** Clips that have never been checked, clips that passed with a warning, and clips checked more than 30 days ago.
- **In what order.** Most-played first. An error in a phrase heard a thousand times a day costs more than one in a phrase heard once.
- **How many.** Up to 2,000 clips a night, one at a time, so the check never competes with the next morning.
- **In which language.** The check recognizes each clip in the language it was made for, so it does not fail an English phrase in a mostly Serbian cache by mistake.
- **On failure.** The check regenerates the clip, up to twice. The new audio replaces the old under the same entry, and the entry keeps its play history.
- **Quarantine.** If regeneration does not fix a clip, the check quarantines it. The agent never plays a quarantined clip: it synthesizes that sentence live instead, and the live result may not overwrite the quarantined file. The clip stays until a person listens to it and approves, regenerates or deletes it.

Each night's run leaves a one-line report: how many clips were checked, passed, regenerated and quarantined.

## The same sentence, the same sound

The cache stores each clip with everything that changes how it sounds: the voice, the speaking rate, the language and the pronunciation profile. Two agents with the same voice at different speeds never share a clip.

Pronunciation dictionaries (brand names, streets, jargon) are stored with the clip too. When the night check regenerates a phrase, it applies the same dictionary entries the original call used, so the new clip sounds like the one it replaces.

## On the line

The last step is the mixer that sends audio to the caller:

- **A soft limiter** at −1 dBFS on the sum of everything playing, so the agent's voice and any background sound never clip together.
- **A 30 ms fade** when the agent stops for an interruption, so it stops without a click.
- **A dip** in the agent's voice while the caller talks; the voice returns when they stop. [Listening while talking](/en/research/listening-while-talking/) describes how the agent handles the caller's side.

Tags: Research, Speech synthesis, Latency

---

Contact: hello@dialogist.cc
