Skip to main content
What gets pasted usually isn’t the raw transcript. By default OpenWhispr runs your dictation through a language model that, in the app’s words, will “remove filler words, fix grammar, and polish punctuation.” This is on by default. It’s why dictation reads like writing rather than like speech — and it’s also why, occasionally, the text isn’t quite what you said.

What it changes

Cleanup is meant to be conservative. It takes out the ums and you knows, adds punctuation you didn’t speak, fixes obvious grammatical slips, and leaves your wording alone otherwise. It does not rewrite your text into a different tone, answer questions, or follow instructions you dictate. If that’s happening, you’re hitting the voice agent rather than cleanup — see the four things your voice can start.

Turning it off

Open Settings, choose Language Models under AI Models, then the Dictation Cleanup tab. The switch is Enable text cleanup. With it off you get the transcript as the speech-to-text model produced it — filler words, no punctuation beyond what the model inferred, and none of the tidying. Some people prefer this for note-taking, where fidelity matters more than polish.

Choosing the model

Cleanup has its own model, separate from the one used for transcription and separate again from the voice agent’s. On the same tab you can run it on:
  • OpenWhispr Cloud — no setup, no API key
  • Cloud Providers — your own key with OpenAI, Anthropic, Gemini, or Groq
  • Local — an on-device model, fully private and offline
  • Self-Hosted — your own OpenAI-compatible endpoint
  • Enterprise — your organisation’s AWS, Azure, or GCP account
A local model keeps the text on your machine, which matters if you dictate anything sensitive. It’s slower than cloud on most hardware.

When cleanup fails

If the cleanup step can’t run, your dictation is pasted anyway, uncleaned, with a note saying “Your dictation was pasted without AI cleanup.” You don’t lose the text — that’s deliberate. Recurring failures usually mean the model can’t be reached: an expired API key, no network, or a local model that hasn’t finished downloading.