Transcript repair
Letting the character notice it misheard you, instead of confidently answering the wrong question.
A character that mishears a word answers a question nobody asked. Transcript repair carries the recognizer's per-word confidence downstream, so the character can do the ordinary human thing instead — "sorry, did you say Sarah?"
What it decides
Every transcript gets one of four answers:
| Answer | What happens |
|---|---|
| Accept | Nothing changes. |
| Clarify | The character replies, but checks the specific words it was unsure of. |
| Ask to repeat | Too many doubtful words to list — reciting half a sentence back reads as a malfunction. |
| Discard | Nothing was said. The turn is dropped before it becomes a message. |
The hard part isn't detecting low confidence, it's not being insufferable about it. A companion that questions every uncertain filler word is worse than one that occasionally misunderstands — so confidence is paired with whether the doubtful word could change the reply. Proper nouns, numbers and content words earn a question; "um", "like" and "the" never do, however badly they were heard.
Nothing was said
A recognizer held open through a long pause doesn't return silence — it returns a sentence. Whisper in particular fills a gap with fluent, plausible text, and this became more common once turn detection started waiting longer before calling a turn over.
Those transcripts are unmistakable: every word scores as noise. When that happens the turn is discarded before it reaches the chat, so nothing becomes a message.
The rule is deliberately hard to satisfy, because a wrongly dropped turn is one the character never answers at all. One word heard clearly anywhere in the utterance means somebody spoke, and an unscored word is unknown rather than noise.
Discarding is not gated on the setting below, and muting mishearing chatter doesn't disable it. Someone who wants no "sorry, what?" still doesn't want a sentence they never spoke sent as their message.
Settings
What was misheard and whether to say so are separate questions, so they live in different places.
Per speech-to-text service — a pair of confidence bounds describing the recognizer. Above the upper bound the word was heard, between them it was guessed, below the lower one it was noise. Always in effect; decides nothing about the character.
In the text generation settings, next to Emotion tags — a switch for whether the character actually says it misheard something. Off by default, and read per turn, so toggling it mid-chat works.
Both bounds at zero means uncalibrated — nobody has measured that recognizer, so nothing falls below the "heard" line and the feature never engages. That is the honest reading of a scale nobody has looked at, not an off switch. A guessed default would be worse than none.
Which recognizers report confidence
| Backend | Per-word confidence |
|---|---|
| Deepgram, Voxta Cloud | Yes, on every result. |
| AssemblyAI | Yes. |
| Vosk | Yes — though it scores non-words highly too. |
| Windows Speech | Yes. |
| Azure Speech | Yes, with detailed output and word timestamps requested. |
| WhisperLive | Yes, from completed segments. |
| Parakeet | Yes, regrouped from sub-word tokens and scored by the weakest one. |
| SenseVoice | No. |
| Android Speech | No — it scores whole alternatives, not words. |
A backend reporting nothing leaves every transcript on Accept, which is exactly the behaviour that existed before the feature. Null means unknown, never certain.