Skip to main content

How AI refinement works

Refinement is the step between hearing you and typing for you. Once InkSpoke has a raw transcription, it can hand that text to an AI model that removes filler words, fixes grammar and punctuation, and shapes the result to match the app you're writing in — all before a single character lands at your cursor.

You don't have to configure anything to benefit from it. Refinement is on by default, and the simple path is: press your hotkey, speak, and let the polished version appear. This page explains what refinement does, how to turn it on and off, and the exact rule InkSpoke follows to decide whether and with which model to refine each thing you say.

What refinement actually does

When refinement runs on a transcription, it can:

  • Remove filler — the "um"s, "you know"s, and false starts of natural speech.
  • Fix grammar and punctuation — turn a run-on breath into clean sentences.
  • Apply tone — professional in your email client, casual in chat, technical in your IDE, based on the app in the foreground. See App-aware tone and code.
  • Apply workspace rules — inject the vocabulary, output style, and domain context from the workspace that matches your active window.

The result is injected wherever your cursor was. When refinement is off, InkSpoke skips all of this and injects the raw transcription verbatim — and importantly, no workspace prompt data is used in that case.

Refinement can stream

When refinement runs, InkSpoke streams the model's output token by token, so the refined text fills in progressively on the overlay instead of appearing all at once after a pause. There's nothing to switch on — it's automatic.

The master switch

A single toggle controls the whole refinement step: AI Refinement in Settings → Home (General). Its setting name is AiRefinementEnabled, and it defaults to on.

There is no "skip refinement" setting

The one master switch, AiRefinementEnabled, is the only global gate. If you've seen a SkipRefinement field mentioned anywhere, it isn't part of the current desktop app — ignore it and use the AI Refinement toggle.

Toggle it without opening Settings

You'll often want to flip refinement on or off mid-flow — for example, to dictate a raw code snippet exactly as spoken. There's a dedicated hotkey for that (AiRefinementToggleHotkey):

PlatformToggle AI Refinement
Windows / LinuxAlt + Shift + R
macOS + + R

When refinement is off, the listening overlay tells you so directly:

┌─────────────────────────────────────────────────────┐
│ ● Listening… AI refinement off │
├─────────────────────────────────────────────────────┤
│ ▁▃▅▇▅▃▁▂▄▆▄▂ "your words appear here" │
│ │
│ [ Workspace ▾ ] [ EN ▾ ] [ Send ] │
└─────────────────────────────────────────────────────┘

The refinement gate: whether, and with which model

Even with the master switch on, whether a given utterance gets refined — and by which model — depends on your workspace. InkSpoke resolves this the same way every time, in strict order. This is the refinement gate:

Read top to bottom, the rules are:

  1. Master switch off → inject raw text, no workspace data.
  2. The matched workspace has refinement disabled → inject raw text. (The wizard's Voice-to-Text purpose preset sets this automatically for verbatim dictation.)
  3. The workspace pins its own text model (PreferredTextModelId) → refine with that workspace's model.
  4. Otherwise, if workspace-default refinement is on → refine with your global default text model.
  5. Otherwise → inject raw text.

Which workspace is "the matched workspace" is itself resolved by pin → overlay override → smart match → default. See Smart matching and precedence.

The settings behind the gate

SettingWhereDefaultWhat it does
AI Refinement (AiRefinementEnabled)Settings → HomeOnMaster gate for the whole step. Off = raw, no workspace data.
Workspace-default refinement (WorkspaceDefaultRefinementEnabled)AI Models → Default tabOnWhen a workspace doesn't pin its own model, refine with your global default model. Subordinate to the master switch (greyed out when the master is off).
AI refinement disabled (per workspace)Workspaces → workspace → AIOffMakes one workspace raw-text-only.
Preferred text model (per workspace)Workspaces → workspace → AINonePins a specific refinement model for that workspace.
Power users: no double-processing

If your active text model already returns refined output on its own (some built-in InkSpoke Platform models do), InkSpoke recognizes that and skips the extra pass — your text isn't processed twice. You don't have to manage this; it's handled ahead of the gate.

Reprocess a past dictation

Refinement isn't a one-shot decision. From your history you can re-run it on any past record — without re-recording — which is handy when you want a cleaner result, a different tone, or the same words polished by a stronger model.

Go to Settings → History, open a record's detail drawer, and you can:

  • Re-refine (LLM) — pick a different text model and, optionally, a different workspace from the reprocess-workspace dropdown. That dropdown lists the original workspace (shown as (original) or (deleted)), None — no workspace, and every other workspace. InkSpoke re-refines the stored raw transcription through your choice.
  • Re-transcribe (ASR) — pick a different speech model to redo the transcription from the original audio.

This is the fastest way to compare how two models or two workspaces handle the same words. See History and diagnostics for the full drawer.

A note on Command Mode

Refinement polishes what you dictate. If instead you want to transform text you've already selected in any app — "make this more formal", "translate to Spanish", "fix the grammar" — that's a separate feature with its own hotkey. See Command Mode.

Next steps