BitMan / Own product

Dictate with MacWhisper

A free, MIT-licensed VS Code extension for MacWhisper. Press ⌃⌥Space, speak, press again, and the words land at your cursor. Local dictation for Visual Studio Code on macOS, transcribed by the MacWhisper app you already own.

Install from the MarketplaceOpen VSX, for Cursor, VSCodium, Windsurf

What it does

  1. You press ctrl+alt+space (⌃⌥Space). The status bar shows Recording… and ffmpeg captures your microphone.
  2. You press it again. The recording goes to MacWhisper’s command-line tool mw on your Mac, which transcribes it with the engine you selected in the app.
  3. The text is inserted at every cursor through the editor API and replaces any selection. Because the extension runs on your Mac, this also works in Remote-SSH, WSL and dev-container windows.

Privacy. By default the extension makes no network requests. The audio goes to MacWhisper’s mw on your Mac, and MacWhisper uses whatever engine you selected in the app: with a local engine nothing leaves the Mac; with a cloud engine MacWhisper sends the audio there, as it does for any transcription. The optional clean-up pass (off by default) sends the transcript text, never the audio, to the Ollama endpoint you configure: with a local Ollama it stays on the Mac, with a remote endpoint the text leaves the Mac. No API keys, no telemetry, and the extension downloads no models.

Install

  1. MacWhisper from macwhisper.com. The Mac App Store build has no mw tool.
  2. The mw command-line tool: in MacWhisper open Settings → Advanced → Command-Line Tool → Install. The extension also finds the copy inside MacWhisper.app if you skip this step.
  3. ffmpeg for microphone capture: brew install ffmpeg.
  4. The extension from the Marketplace or Open VSX. Press ⌃⌥Space in an editor; macOS asks once to let Visual Studio Code use the microphone. If you declined, enable it under System Settings → Privacy & Security → Microphone.

If you use several keyboard layouts, macOS binds ⌃⌥Space to “Select previous input source” and swallows it. Turn that off under System Settings → Keyboard → Keyboard Shortcuts → Input Sources, or rebind the command in VS Code (Keyboard Shortcuts → “Dictate with MacWhisper: Toggle”).

The package is MIT-licensed. Its code is included unminified in the installed extension, so anyone can read it in ~/.vscode/extensions.

Settings

SettingDefaultMeaning
macwhisperDictate.language""ISO 639-1 code passed to mw --language (for example pl, en, de). Empty uses MacWhisper’s current language selection.
macwhisperDictate.model""Model in engine:model-id form passed to mw --model (see mw models list). Empty uses the model selected in MacWhisper.
macwhisperDictate.mwPath""Path to the MacWhisper command-line tool. Empty auto-detects /usr/local/bin/mw, then the copy inside MacWhisper.app.
macwhisperDictate.ffmpegPathffmpegPath to ffmpeg. The default looks in /opt/homebrew/bin, /usr/local/bin, then PATH.
macwhisperDictate.audioDevicedefaultavfoundation audio device name or index. List devices with ffmpeg -f avfoundation -list_devices true -i "".
macwhisperDictate.cleanup.endpoint""Base URL of an Ollama server for the clean-up pass, for example http://127.0.0.1:11434. Empty disables clean-up. A remote URL sends the transcript off your Mac.
macwhisperDictate.cleanup.modelgemma3:4bOllama model for the clean-up pass.
macwhisperDictate.cleanup.prompt""System prompt for the clean-up pass. Empty uses the built-in one (punctuation and capitalization only, no rephrasing). The word-for-word check still applies.

All settings except macwhisperDictate.language are user settings: a workspace cannot change them.

Which model. The extension uses whatever MacWhisper has selected unless macwhisperDictate.model is set. For mixed Polish and English dictation, Whisper Large v3 Turbo with the language set to “Auto Detect” worked better in my use than Parakeet v3; Parakeet v3 is faster.

Clean-up with a local model

Dictation arrives as one unpunctuated run. Optionally, and off by default, the extension sends the transcript to a small local model that is asked to add punctuation and capitalization only. Tested with gemma3:4b on Ollama: one to three seconds on an M4 Pro.

brew install ollama && brew services start ollama
ollama pull gemma3:4b

Then set macwhisperDictate.cleanup.endpoint to http://127.0.0.1:11434. The model’s answer is accepted only if it contains exactly the dictated words in the same order, case and punctuation aside. If the model changed, dropped, added or reordered a word, did not finish, or did not answer within 20 seconds, the raw transcript is used and a warning says so. This check catches changed words, not a meaning changed by punctuation alone. macwhisperDictate.cleanup.model selects the model and macwhisperDictate.cleanup.prompt replaces the built-in prompt.

MacWhisper’s own dictation versus this extension

MacWhisper dictation hotkeyThis extension
Where it typesAny app, including VS CodeVS Code only, one shortcut
How the text arrivesSimulated keystrokesEditor API: replaces the selection, works with multiple cursors
Remote-SSH, WSL, dev containersThrough keystrokesThrough the editor of the remote window
Clean-up passDepends on the app’s own settingsOptional punctuation pass with a local Ollama model, accepted only if it keeps the dictated words word for word

Keep both. The hotkey is for Mail and Slack; the extension is for the editor.

Questions

Why does the extension need ffmpeg?

VS Code gives extensions no microphone API, so a small recorder is needed: ffmpeg records your microphone to a temporary file on your Mac, which is deleted when the dictation ends. Install it with brew install ffmpeg; the default setting looks in /opt/homebrew/bin, /usr/local/bin and then PATH.

Does audio leave my Mac?

By default no. The audio goes to MacWhisper’s mw tool on your Mac, and MacWhisper uses the engine you selected in the app: with a local engine nothing leaves the Mac, with a cloud engine MacWhisper sends the audio there as it does for any transcription. The optional clean-up pass sends the transcript text, never the audio, to the Ollama endpoint you configure. The extension makes no other network requests and has no telemetry.

Does it work with the Mac App Store version of MacWhisper?

No. The Mac App Store build has no mw command-line tool. Install MacWhisper from macwhisper.com and then the tool under Settings → Advanced → Command-Line Tool → Install; the extension also finds the copy inside MacWhisper.app.

The shortcut does not work. What should I check?

If you use several keyboard layouts, macOS binds ⌃⌥Space to “Select previous input source” and swallows the shortcut. Turn that off under System Settings → Keyboard → Keyboard Shortcuts → Input Sources, or rebind the command in VS Code under Keyboard Shortcuts. If the status bar reports that no audio was captured, allow Visual Studio Code to use the microphone under System Settings → Privacy & Security → Microphone.

Which model should I use for Polish and English?

The extension uses the model selected in MacWhisper unless macwhisperDictate.model is set. For mixed Polish and English dictation, Whisper Large v3 Turbo with the language set to “Auto Detect” worked better in my use than Parakeet v3. Parakeet v3 is faster.

Questions and problems

Write to kontakt@bitman.ch or use the Q&A tab on the Marketplace listing. The macOS and MacWhisper versions and the message in the status bar help.

The extension came out of client work on automation and AI. If you want something similar for your own team, see Integration & automation.

kontakt@bitman.chQ&A on the Marketplace

MacWhisper is a product of Good Snooze. Dictate with MacWhisper is an independent project, not affiliated with or endorsed by Good Snooze.