v0.1.1 is out. See what's new →

mockingbird

Local voice dictation for macOS

Hold Fn, speak, let go. Clean text lands at your cursor. Free forever, and your voice never leaves your Mac.

Your words aren't metered.

Cloud dictation is good software with a meter on it: a credit cap that runs out and reminds you, mid-sentence, that your own words are being counted. Mockingbird has no meter.

A capable speech model, a small language model for cleanup, and a hotkey. That's all dictation needs, and all of it runs on your Mac. No account, no cloud, no usage limits.

It's MIT licensed and built in the open, as a way of giving back to the open-source projects it's built on. Read the philosophy →

A tool this useful gatekept behind a credit meter isn't a technical necessity, it's a business model choice, and this project is the alternative to that choice.
Nirjhar BhattacharjeeCreator of mockingbird

See it in action

Run mockingbird start once. After that it's just a key, in every app, at every login.

~ — mockingbird listensimulated · no microphone

$ mockingbird listen

○ hold F
raw
clean
or hold F anywhere on this page
  1. 01Hold Fn

    Anywhere: Slack, Mail, your editor, a browser tab. A rising tink means it's listening.

  2. 02Speak

    Ramble a little. Pauses, "um"s and restarts get cleaned up. Double-tap Fn for hands-free.

  3. 03Let go

    A falling pop, and a tidy sentence is typed where your cursor is.

How it works

Three open models, each doing the one job it's best at, all served from 127.0.0.1.

Architecture →
  1. 01 · listen

    Voice activity

    Silero VAD finds where speech starts and stops, in 32 ms windows.

  2. 02 · hear

    Speech to text

    Whisper large-v3-turbo, through whisper.cpp, turns audio into words.

  3. 03 · tidy

    Cleanup

    Qwen3-4B-Instruct fixes punctuation, filler words and lists.

  4. 04 · type

    At your cursor

    The text is typed into whatever app is in front.

● Short, clean utterances skip the language model entirely, so they're faster. The only network call mockingbird ever makes is the one you run: mockingbird models pull.

Install mockingbird

You need a Mac with Apple Silicon, Homebrew, and about 6 GB free for the models.

Install by hand →

Homebrew

Install, then fetch the models once with mockingbird models pull.

$ brew install nirjharbhattacharjee/mockingbird/mockingbird
Update with brew upgrade mockingbird.

Install script

Installs mockingbird and pulls the models in one go.

$ curl -fsSL https://raw.githubusercontent.com/NirjharBhattacharjee/mockingbird/main/scripts/install.sh | bash
Safe to run again. Run it again to update.
Then run mockingbird start. The first time, macOS asks forMicrophoneAccessibilityInput Monitoringthen mockingbird restart.

A tiny CLI, and one key

You set it up in a terminal once. After that it lives on the Fn key.

CommandDoes
mockingbird startRun in the background, now and at every login
mockingbird stopStop, and stay stopped across reboots
mockingbird restartRestart (do this after granting a permission)
mockingbird statusWhether it's running, and which permissions it has
mockingbird listenDictate live in a terminal, with a level meter
mockingbird transcribe <file>Turn a recording (mp3, m4a, wav…) into text
mockingbird type --checkCheck typing permission and the app in front

Keys

fn hold: record while held

fnfndouble-tap: hands-free until the next Fn

Sounds

↗ tinkit's recording

↘ popit's transcribing

▁ bassoit couldn't type the text

Small numbers, on purpose

0 bytes

of your audio uploaded

Speech and cleanup both run on your Mac.

3 models

all on-device

Silero VAD, Whisper and Qwen3, served from localhost.

$0

forever

No credits, no caps, no "upgrade to keep talking".