Dictation
Press your hotkey (or just speak) and WinSTT drops polished text at your cursor. The four modes — Push-to-Talk, Toggle, Listen, and Wake Word — decide what starts a recording; everything after is identical.
Press your hotkey, speak, and WinSTT pastes the polished text straight into whatever you were typing in — a chat box, an editor, a terminal, a search bar. Everything between the trigger and the paste happens on your machine.

The dictation loop
Whatever starts a recording — a held key, a tapped key, your speakers, or a spoken keyword — every mode runs the same four steps. Only the start trigger differs; the transcribe → optional cleanup → paste tail is identical.
Trigger a recording
Hold your Push-to-Talk key, tap the toggle key, say the wake word, or let Listen mode capture system audio. A short chime confirms the start (off in Listen / Wake Word modes), and the recording overlay appears.
Speak — watch the live preview
A small, fast realtime model streams a rough preview of your words as you talk, so you can see it's hearing you. This preview is not the final text — it's a progress indicator. It can show in the app window, the overlay pill, both, or nowhere (see Live-transcription display).
Stop
Release the key (Push-to-Talk), press again (Toggle), or just stop talking — the Smart Endpoint and post-speech silence timer end the utterance automatically after
0.7sof silence (default). The overlay shows a brief "thinking" state while the main, accurate model produces the final transcription.(Optional) LLM cleanup, then paste
If you've enabled LLM cleanup, the final text runs through your chosen modifier (tone, translate, custom) before delivery. WinSTT then drops the result at your cursor — and optionally presses Enter to submit.
Cancel mid-flight
Press Escape to abort an in-progress recording, the transcription, or the LLM pass. Hold the hotkey and tap ↑ to cycle the recording mode without opening settings.
The four recording modes
A recording mode decides what starts a recording — a held key, a tapped key, your speakers, or a spoken keyword. All four share a single pipeline and one paste endpoint, so switching modes never changes transcription quality, only the way you kick it off. Set the mode under General Settings.
pttgeneral.recordingModeSelects the trigger strategy: Push-to-Talk, Toggle, Listen, or Wake Word. The mode only governs the start (and, for some modes, the stop) trigger — the downstream transcription and paste are identical across all four.
Push-to-Talk
The default mode, and the most predictable. Hold the hotkey, speak, release to stop — the recording lasts exactly as long as you hold the key. There's no silence detection on the stop side, so a release triggers an immediate, fast finalize. One press authorizes exactly one recording, then clears.
Push-to-Talk is also the only mode that bypasses the speech-onset debounce (see below) — because holding the key already declares intent, there's no noise to gate.
LCtrl+LMetahotkey.pushToTalkKeyThe key (or combo) you hold to record. Captured via the global keyboard hook, so it works in any focused app. Change it on the Hotkeys page; it updates at runtime without a restart.
Best for: quick bursts, voice commands, and noisy rooms where automatic voice detection would false-trigger.
Toggle
Tap the hotkey once to open a continuous session and tap again to close it — between those two taps, WinSTT records utterance after utterance hands-free. After you stop talking it finalizes the turn on silence; when you start again it opens the next recording automatically. The recording pill stays up for the whole session, not just the first sentence.
falsegeneral.manualToggleStopWhen on, disables silence-based endpoint detection so the session records continuously from the first tap to the second — nothing stops a turn but you. Good for long-form dictation with long natural pauses; with it off, each pause ends a turn.
Best for: hands-free long-form dictation, dictating with natural pauses, or capturing a stretch of speech without holding a key.
Listen
Listen mode captures system audio — what comes out of your speakers — over a WASAPI loopback device, then streams a rolling, continuously-transcribed subtitle feed. There's no hotkey; it runs as soon as the mode is active and a loopback device is selected. It uses the realtime model only, and caps each utterance at 15 seconds so the feed never stalls on a long monologue.

nullRestart servergeneral.loopbackDeviceIndexThe WASAPI loopback (system-audio) device to capture from. You need a loopback source available — many sound cards expose one, or install a virtual cable such as VB-Audio Virtual Cable. The standard microphone Input Device picker is hidden in this mode.
falsegeneral.speakerDiarizationLabels each line of the subtitle feed with a speaker (Speaker 1, Speaker 2…). Lives on the Transcription tab (it only appears in Listen mode). Toggles at runtime — no restart, and it even applies to an in-flight session.
A loopback device is required
Listen mode can't start without a loopback source. If none is available, the device picker is empty and the mode has nothing to capture — pick a real microphone mode or install a virtual cable first. The loopback device is read at startup, so changing it needs a server restart.
Best for: transcribing meetings, calls, videos, and anything else playing through your speakers.
Wake Word
Wake Word mode listens continuously for a spoken keyword and starts recording the instant it hears one — fully hands-free, no hotkey. After detection it records a turn and ends it on silence (the same way Toggle does), then goes back to waiting for the keyword. WinSTT picks the detection backend automatically (a composite of Porcupine and openWakeWord) based on the chosen keyword.

alexageneral.wakeWordThe keyword that arms a recording — for example Alexa, Computer, Jarvis, or Hey Google. The right backend (Porcupine or openWakeWord) is selected automatically for the chosen word.
0.6Restart servergeneral.wakeWordSensitivityHow eager the detector is, from 0 to 1. Higher catches the keyword more reliably but raises false triggers; lower is stricter. Each engine clamps the value internally.
5Restart servergeneral.wakeWordTimeoutSeconds (1–30) the recording stays armed after the keyword fires before it gives up and returns to listening. This is independent of the per-utterance silence timer.
Wake-word settings apply at startup
The keyword, its sensitivity, and the timeout are read when the detection engine loads. Changing any of them needs a server restart to take effect.
Best for: fully hands-free, always-on voice activation across the room.
Why the other modes wait a beat
Toggle, Listen, and Wake Word all start a turn from audio, so a cough or a door slam could pop the pill and wake the model for nothing. To prevent that, those modes gate the start behind a short speech-onset debounce — the pipeline waits for a few consecutive speech chunks (default 3) before it commits to a recording. Push-to-Talk skips this gate entirely, since holding the key is already an explicit signal of intent.
The post-speech silence window then governs how long a pause must run before a turn ends — but only for the modes that stop on silence:
| Mode | Silence timing role |
|---|---|
| Push-to-Talk | Unused. Releasing the key triggers an immediate, fast stop. |
| Toggle | Active — ends each turn after the silence window. Disabled when Manual Toggle Stop is on. |
| Listen | Active — segments the continuous loopback feed into turns. |
| Wake Word | Active after the keyword fires — ends the turn the same way Toggle does. |
Lower silence values make WinSTT react faster to pauses but can clip speech with natural breaks; higher values tolerate longer pauses at the cost of a later finalize. When Smart Endpoint is enabled, a sentence classifier decides when a turn is complete instead of the fixed timers.
After the paste
WinSTT drops the finished text at your cursor as one block — the whole sentence appears at once, the way modern dictation tools behave. Two optional behaviors round out delivery.
Auto-submit after paste
Found under Settings → General → Paste Behavior. Off by default to preserve the classic "paste and let me review" behavior.
falsegeneral.autoSubmitWhen on, WinSTT injects a submit key right after each successful paste — so a dictated chat message ships without a separate Enter press.
Entergeneral.autoSubmitKeyWhich combo to inject: Enter works for most chat boxes and forms; Ctrl+Enter is the convention in IDEs and chat apps (Cursor, ChatGPT desktop) where plain Enter inserts a newline. Only shown when Auto-Submit is on.
Re-paste the last transcription
Lost the text, or pasted into the wrong window? Re-inject the most recent transcription without speaking again.
LCtrl+LShift+Vgeneral.repasteHotkeyAn exclusive global shortcut (it swallows the combo system-wide) that re-pastes your last transcription at your cursor. Silent if nothing has been transcribed yet. Set it to empty to disable. If it collides with your push-to-talk key it's reset to default at startup.
Context-awareness (caret split)
WinSTT can read the focused window's text right before each dictation and feed it to your LLM cleanup pass, so names and jargon get spelled the way they already appear on screen. On the dictation path it also reads the text immediately before and after your caret (the caret split), giving the model the sentence it's continuing.
falsegeneral.contextAwarenessReads focused-window text through the platform's accessibility APIs immediately before each dictation and includes it in the LLM cleanup prompt. Off by default — the in-app dialog requires explicit opt-in, since it can read emails, chats, editors, and browsers.
Only used by the LLM cleanup pass
Context-awareness does nothing on its own. It requires the Dictation post-processing LLM to be enabled with a configured model — the captured window text is used only in that cleanup prompt, never stored or sent anywhere else.
emptygeneral.contextDenyListApps and websites that should never be read for context. Add executable
names (e.g. 1password.exe) or URL hosts (e.g. bankofamerica.com —
subdomains match automatically). On a match, only the harmless window title is
kept. Password fields are always excluded regardless of this list.
Privacy
With context-awareness off (the default), nothing about your screen is read. With it on, text goes only to your configured cleanup provider — local Ollama, or remote OpenRouter if you chose it. There's no per-app allowlist; the deny-list is the override.
Live-transcription display
The realtime preview is a fast-model approximation that updates as you speak. Choose where it shows under Settings → General → Display.
bothgeneral.liveTranscriptionDisplayWhere the live preview appears: In app (main window only), In overlay (the floating pill only), Both, or None. The overlay options require the recording overlay to be enabled and the realtime model to be on.
The final, pasted text always comes from the main model regardless of this setting — the preview is purely a "WinSTT is hearing you" signal. See Real-time preview for how the streaming/committed-text window works.
Recording overlay
A small pill floats above whatever you're working in while you record, showing an elapsed timer, the audio visualizer, the live preview, and a thinking indicator. Two layouts are available.
on, xsgeneral.showRecordingOverlayA 6-step slider — Off, then five sizes (XS / SM / MD / LG / XL). Controls whether the pill shows and how large it is. Greyed out in listen mode.
floating-bottomgeneral.overlayModeFloating bottom (two-piece pill) or Dynamic island (docked top-center). Greyed out if the overlay is off.
Platform default
The overlay defaults to a bottom position on Windows and macOS, and to none on Linux (compositor quirks). You can override the position to top, bottom, auto, or none.
Related
Hotkeys & overlay
Rebind push-to-talk, re-paste, and TTS; tune the overlay layout and visualizer.
Audio settings
Input device, microphone release policy, and the post-speech silence window.
LLM cleanup
Reshape the transcription with tone presets, translate, and custom modifiers.
Quality & endpointing
Smart Endpoint, silence timing, and how the live preview commits to final text.
Install
Download the right WinSTT package for macOS, Linux, or Windows. No Python, no account, no separate speech server.
File Transcription
Drag an audio or video file onto WinSTT — or pick one from the tray — and get a plain-text or timestamped SRT transcript next to it. Uses your main model, fully offline.