voice dictation · windows · whisper.cpp · open source

Dictation that never leaves the machine.

Tapybara puts a global hotkey on your keyboard. Press it, speak, press it again, and the text is inserted where your caret already was — in your editor, your browser, your chat window. Whisper runs locally on your own GPU, so the audio is never uploaded and there is no account involved.

The Tapybara indicator: a red recording dot, a live microphone waveform, elapsed time, and the hint Ctrl+Alt+D to stop

the indicator, floating above every window while you talk

how it works

Three keystrokes, and no window to visit.

Tapybara lives in the tray. You never switch to it, which is the point: switching away from what you were writing defeats the exercise.

01

Press the hotkey

The indicator appears above everything, showing your microphone level and elapsed time. Focus does not move, so your caret stays where it was.

02

Speak

Pauses become paragraph breaks, since Whisper's timings say where they were. Escape discards the recording — and other applications still receive their Escape while you dictate.

03

Press it again

The text is inserted, not left on the clipboard for you to paste. Insertion goes through a synthetic paste, which is the path that also works in Electron and Chromium apps.

The indicator while transcribing: Transcribing… 64%, with the hint Esc to cancel

recognition runs after you stop, not while you speak

why local

The model runs where the audio is.

Windows has dictation built in. It is cloud-backed, and its quality for languages other than English is mediocre — both of which follow from where the model lives rather than from anything unfixable. Running whisper.cpp yourself moves the work to your own GPU, which makes the recording a local file that is deleted rather than a request to somebody's server.

It also means you choose the model. Language-specific fine-tunes exist and are often markedly better than the general one for their language, and swapping to one is a file in a folder.

The trade is real and worth stating plainly. You download a model once — several hundred megabytes of it — and you need a GPU for this to feel instant. On CPU it runs at roughly the speed you spoke, which is usable for a sentence and tedious for a paragraph.

26.2 sCPU, an i5-9600KF
12.6 sVulkan, first run — the driver is compiling shaders
0.52 sVulkan, warmed up

One 28-second sample, large-v3-turbo, on an RTX 3060. Measured on one machine, not a benchmark suite — your own numbers are the ones that matter, and the compute backend actually in use is shown in the About page.

what you configure

Set it up once, then forget the window.

The settings follow the system: same typography, same card layout, same light and dark as everything else on the desktop.

Tapybara settings, Dictation page: hotkey, microphone picker, insertion options and safety limits
Dictation. Choose the hotkey by pressing it, and pick which microphone rather than accepting whatever Windows calls default. Text can be inserted or only copied.
Tapybara settings, Models page: models folder, installed models with sizes and delete buttons, and a download list
Models. Downloaded from here, so there is no hunting for the right file on a model-hosting site. They live wherever you have room, and the ones you tried and did not keep can be deleted.
Tapybara settings, Recognition page: model selection, idle unload, recognition language and prompt
Recognition. Language, and a prompt that biases vocabulary and punctuation style. The model unloads after a period of inactivity, so an idle Tapybara holds no memory.

details

Small things that only matter in use.

Paragraphs from pauses

Whisper does not mark paragraphs, but its segments carry timestamps and a pause is a fair signal that the speaker moved on. Optional, with a threshold.

Clipboard hygiene

Dictations stay pasteable with Ctrl+V but are kept out of the Win+V history.

Escape stays available

Cancelling watches the key through a hook rather than claiming it, so dialogs still close and menus still dismiss while a dictation is running.

A replacements list

Recognition mangles product names in predictable ways. Fixing them is a line each, including names carrying punctuation like C# or .NET.

Recent dictations

The last ten sit in the tray menu, in case one landed in the wrong window.

Portable mode

An empty portable.txt next to the executable moves settings and models beside it, leaving nothing in the system.

No CUDA toolkit

The Vulkan backend ships inside the graphics driver — NVIDIA, AMD or Intel — so there is nothing extra to install.

English and Russian interface

Following the system language by default. Recognition covers the 99 languages Whisper knows, detected or pinned to one.

quick start

Unzip, fetch a model, press the hotkey.

  1. Run Tapybara.exe. No installer and no .NET needed — the build is self-contained.
  2. Open Settings › Models from the tray and download one. Large v3 Turbo (q5_0) is a reasonable first pick at about 550 MB. Nothing works until this is done.
  3. Put the caret somewhere and press Ctrl+Alt+D.

Or build it:

# Windows, .NET 10 SDK
git clone https://github.com/keshon/tapybara
cd tapybara
build.cmd run

Early development. Dictation works end to end and is used daily. Call recording works but is newer and less exercised. If something breaks, the log sits next to the settings file and the issue tracker is open.

calls

Two tracks, so nobody has to guess who spoke.

A call is recorded as your microphone and your system audio kept separate. That separation does the job speaker diarisation would: in a conversation between two people, who said what follows from which track it landed on, without any voice comparison.

The two are merged into one chronological transcript.md with timestamps and names. Speech that leaked from the speakers back into the microphone is filtered out, and the transcript records how many lines that removed — an over-eager filter is then visible instead of silent.

Recording captures the other party too. In many places recording someone without telling them is unlawful, and everything audible on the chosen output device is captured — notifications, music, another meeting — not only the call. Tapybara says this once before the first recording rather than starting quietly.

faq

Questions worth asking first.

Does any audio leave the machine?

No. Recognition runs locally through whisper.cpp. The only request Tapybara makes is downloading a model when you ask it to, from Hugging Face. There is no telemetry and no server component.

Why is no model included?

Models are hundreds of megabytes, and which one suits you depends on your hardware and the language you speak. Bundling one would enlarge the download for everybody and still be the wrong choice for many. The Models page fetches it, and resumes where it left off if the connection drops.

Do I need a GPU?

Not strictly, but it is the difference between a second and a minute. Any Vulkan-capable GPU works and the runtime ships in the graphics driver. On CPU, transcription runs at roughly real time, which is fine for a sentence and tiring for a long dictation.

How accurate is it?

Good, not perfect. Names and jargon get mangled in predictable ways, which is what the replacements list is for. On silence Whisper sometimes emits phrases it learned from subtitles — "thanks for watching" and similar — and those are filtered out, deliberately conservatively, so an unusual real sentence is kept rather than an occasional artefact removed.

Does it work in my editor, browser or chat app?

Text goes in through the clipboard followed by a synthetic Ctrl+V, which works everywhere, including Electron and Chromium apps where accessibility-based insertion is accepted and then silently ignored. If the target window runs as administrator and Tapybara does not, Windows blocks the keystroke; the text is still on the clipboard and Tapybara says so.

What about languages other than English?

Whisper knows 99. Detection is the default, or one can be pinned. Fine-tunes for a specific language often punctuate better than the stock model — put one in the models folder and it appears in the list.

Is there a paid version?

No. MIT licensed, source on GitHub, nothing to sign up for.