What a cleanup pass does to your transcript
Measured 9 August 2026 on an 18-case corpus.
Recognition gives you what you said. Nobody wants what they said. The gap between the two is a second stage, and it is the stage most likely to ruin your text.
What you actually said
Speech, transcribed faithfully, looks like this:
so um I think we should probably uh move the meeting to Thursday because Maria said sorry not Thursday Wednesday because Maria said she's out
Every word there is correct. It is also not text you would send anyone. The cleanup pass removes the fillers, resolves the self-correction to Wednesday, drops the abandoned clause, and punctuates the result.
The failure mode is doing too much
This stage is usually a language model, and a language model asked to improve text will improve text. That is the problem. The failures that matter are not typos:
- Answering instead of transcribing. You dictate a question into an email; the pass returns an answer to it. You wanted your sentence, not its opinion.
- Correcting things that were right. A technical term, an unusual name, or a deliberate phrase gets replaced with a more common word. A confidently wrong word is worse than a garbled one, because you will not catch it.
- Following instructions in your own text. If you dictate a sentence that reads like a command, a naive pass may obey it.
- Rewriting your voice. You wanted your sentence, punctuated. You did not want it in a register you would never use.
The design conclusion is that this stage needs guards more than it needs fluency, and that every guard must fail in the same direction: when anything goes wrong, return the raw transcript. A dictation that arrives unpolished is a minor annoyance; one that arrives confidently altered is a real problem.
The numbers
Measured 9 August 2026 on an 18-case corpus, runs back-to-back on an idle machine. "Pass" counts cases where the output was correct; "left untouched" counts cases the pass declined to change at all.
| Backend | Pass | Left untouched | Invented words | Median |
|---|---|---|---|---|
| Local, on your Mac | 17/18 | 6 | 1% | 392 ms |
| Cloud, your own API key | 18/18 | 2 | 0% | 1047 ms |
The cloud option scores better and is 2.7× slower. The one case the local model misses is a prompt-injection case — text that reads like an instruction — which is exactly the guard category above. Choose the cloud path for quality, not for speed, and note that it is off by default and requires your own API key; audio is never part of it under any setting.
Eighteen cases is a small corpus. It is enough to catch a backend that invents words or answers questions, and not enough to rank two backends that both behave.
Two rules worth demanding of any tool
Whatever you use, these are the two properties that separate a cleanup pass you can trust from one you cannot:
- Failure returns the raw transcript, never nothing and never a guess.
- You can turn it off per app, so a terminal gets exactly what you said and an email gets the finished version. Why that matters more than it sounds.
In Bunso the cleanup pass is free and always available — no licence state can switch it off. A lapsed licence moves it from the cloud back onto your Mac; it never moves it to nothing.