How to run Whisper locally on your Mac (three ways, with the exact commands)
You want Whisper on your own Mac, with no upload and no per-minute bill. The catch is that most guides skip the step that actually trips you up: Whisper reads files, it does not type into your apps.
Short answer: The fastest way to run Whisper locally on a Mac is Homebrew: run brew install whisper.cpp, download a model file, then run whisper-cli on a 16-bit WAV file. If you want to talk and have the words typed into any app instead of transcribing files, MightyMouse runs a local model for you and types the text at your cursor, free.
Whisper is OpenAI's speech-to-text model, and it is open. That means you can run it on your own computer, offline, with nothing sent anywhere. There are three real ways to do it on a Mac, and they are good at different jobs. Pick by what you want out the other end: a transcript of a recording, or words appearing where your cursor is.
The three routes at a glance
- whisper.cpp through Homebrew. The quickest command-line route. Built for Apple Silicon, uses the GPU through Metal. Transcribes audio files.
- OpenAI's Python package. The original. More to install, and it is the official reference, but the project README says nothing about Mac GPU support. Transcribes audio files.
- An app that wraps it. You talk, the words land in whatever app you are in. This is the only route of the three that types for you.
Route 1: whisper.cpp with Homebrew
whisper.cpp is Whisper rewritten in C/C++ so it runs without Python. Its README calls Apple Silicon a "first-class citizen" optimized through ARM NEON, the Accelerate framework, Metal and Core ML, and says that on Apple Silicon the inference runs fully on the GPU via Metal.
Homebrew has it as a ready-made package. The formula is named whisper.cpp on formulae.brew.sh (version 1.9.5 as of October 2026). Older guides say brew install whisper-cpp. That was the old name, and Homebrew still maps it, but use the current one.
- Install it:
brew install whisper.cpp. The command you run afterwards iswhisper-cli, which is the name the formula's own test uses. - Install ffmpeg for converting audio:
brew install ffmpeg. - Make a folder for models and download one. Homebrew does not download models for you (its install notes say model files "are not downloaded by default"). The pre-converted files live on Hugging Face, so:
mkdir -p ~/whisper-models && curl -L -o ~/whisper-models/ggml-base.en.bin https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-base.en.bin. That file is 142 MiB. - Convert your recording to the format whisper.cpp wants. Its README says
whisper-cli"currently runs only with 16-bit WAV files", and gives this command:ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav. - Transcribe:
whisper-cli -m ~/whisper-models/ggml-base.en.bin -f output.wav. The text prints to your terminal. Add-otxtto also write a .txt file next to the audio.
If you would rather clone the repo and use the download script, the README's quick start is: git clone https://github.com/ggml-org/whisper.cpp.git, cd whisper.cpp, cd models && sh download-ggml-model.sh base.en && cd .. (the README runs the same script by its path), then cmake -B build, cmake --build build -j --config Release, and ./build/bin/whisper-cli -f samples/jfk.wav. Building from source needs cmake and the Xcode command line tools. The Homebrew route skips all of that.
Faster still: Core ML
The README has an optional Core ML path that runs the encoder on the Apple Neural Engine. It says this can give more than a 3x speedup over CPU-only. It is not part of the Homebrew install. You build it yourself: pip install ane_transformers, openai-whisper and coremltools, run ./models/generate-coreml-model.sh base.en, then build with cmake -B build -DWHISPER_COREML=1. The README recommends Python 3.11 and macOS Sonoma (14) or newer, notes the first run is slow while the Neural Engine compiles the model, and that is the cost. For most people, plain Metal is fast enough and Core ML is not worth the extra setup.
Route 2: OpenAI's Python package
This is the original, from the openai/whisper repository. It needs ffmpeg and a working Python.
- Install ffmpeg:
brew install ffmpeg. - Install the package:
pip install -U openai-whisper. The README says it is expected to work with Python 3.8 to 3.11 and recent PyTorch. If pip complains thattiktokenhas no pre-built wheel for your machine, the README says you may need Rust, andsetuptools-rustif you seeNo module named 'setuptools_rust'. - Transcribe:
whisper audio.mp3 --model turbo. The README saysturbois the default model. This one handles mp3, flac and wav directly, so no conversion step. - For another language:
whisper japanese.wav --language Japanese.
Why is this the slower route on a Mac? The honest answer is what the README does and does not say. It lists GPU memory needs for each model and says its speed numbers were measured on an A100, a data-center NVIDIA card. It does not mention Apple Silicon or Metal anywhere. whisper.cpp is the one that documents Mac GPU support. Check the speed on your own machine before you plan around either number, because the README itself says real speed varies with language, speaking speed and hardware.
Pick this route if you are already in Python, want to call Whisper from a script, or need exactly the reference behavior. Pick whisper.cpp if you just want transcripts quickly.
Which model size to download
Bigger models make fewer mistakes and take longer and more memory. These are the sizes from the two READMEs. Disk sizes are from the whisper.cpp models list. Memory is from the whisper.cpp README. Parameter counts and relative speed (compared with large, measured on an A100) are from the OpenAI README.
- tiny - 75 MiB on disk, about 273 MB of memory, 39 million parameters, about 10x the speed of large. Fastest, roughly right.
- base - 142 MiB, about 388 MB, 74 million parameters, about 7x. A good starting point for clear speech.
- small - 466 MiB, about 852 MB, 244 million parameters, about 4x. The usual sweet spot for accents and a bit of background noise.
- medium - 1.5 GiB, about 2.1 GB, 769 million parameters, about 2x.
- large-v3 - 2.9 GiB, about 3.9 GB (the whisper.cpp README lists this as "large"), 1550 million parameters, 1x. The most accurate and the slowest.
- turbo (large-v3-turbo) - 1.5 GiB, 809 million parameters, about 8x. The OpenAI README says it is not trained for translation. whisper.cpp also lists a
large-v3-turbo-q5_0file at 547 MiB, which is the same model in a smaller, compressed form.
Files ending in .en (like base.en) only understand English. Everything else is multilingual. If you only speak English, the .en version is the right pick for tiny, base, small and medium. For another language, an .en file will not just fail, it will return English-looking nonsense, so grab the plain multilingual file.
Route 3: an app that does it for you
Both routes above turn a file into text. Neither one listens to you and types into Slack. whisper.cpp does ship a live-microphone example called whisper-stream, but its README calls it a naive real-time demo that you build yourself with SDL2, and it prints to the terminal. It does not know what app you are in.
That gap is why dictation apps exist. MightyMouse is a free Mac app that runs a speech model on your own Mac and types what you say at your cursor, in any app, with nothing uploaded. The full walkthrough is here. Here is what it does under the hood, checked against its source:
- English dictation runs with a small Whisper model (
ggml-base.en.bin) through awhisper-clibuilt from whisper.cpp 1.8.2, with a Metal build on Apple Silicon. It calls it the same way you would from Terminal: a model, a WAV file, a language. - Models are downloaded once and saved in
~/.cache/whisperon your Mac. A smallerggml-tiny.en.binis available too. For languages other than English, it switches to the multilingualggml-large-v3-turbo.bin, a 1.6 GB download. - One honest wrinkle: MightyMouse also ships a second engine, NVIDIA Parakeet, which it uses first when it is installed and your language is one of the 25 it supports. Whisper is used for the rest and as the fallback if Parakeet fails. That is why the app feels quick, and it is also why "MightyMouse uses Whisper" is true for some of your dictation but not all of it.
- The transcript is pasted into the app you were using, so it works in Slack, Mail, your browser and a terminal.
It costs nothing. Voice transcription is free with no word cap because it runs on your Mac and there is nothing for us to meter. It is macOS only.
What this costs you and where it falls short
- The CLI does not do live typing. whisper-cli and the Python package transcribe a file you already have. There is no hotkey, no cursor, no paste. To dictate you need an app on top.
- It uses your Mac's processor. Larger models use the GPU hard and drain a laptop battery faster. A long recording on a big model can take noticeable time and run the fans. Start with base or small.
- Cleanup is weaker than a cloud AI. Whisper gives you the words. It does not reliably tidy your "um"s, fix your grammar or format a list the way a big cloud model does. Expect to edit.
- Whisper can get things wrong. Names, jargon and noisy rooms trip it up, and a model that is too small will mishear more. Step up one size before blaming your microphone.
- Setup is work. Routes 1 and 2 need Terminal. Route 3 skips it.
- MightyMouse is macOS only. The command-line routes also run on Linux and Windows.
Which one should you use?
If you have a folder of recordings, use whisper.cpp from Homebrew with small.en. If you are writing a script in Python, use the OpenAI package. If you want to talk and have it type, use an app. MacWhisper is an app built around the recordings case and VoiceInk around dictation. See the best dictation apps for Mac for a side-by-side, and speech to text on a Mac for the options Apple gives you for free. If your hands are busy, hands-free dictation on a Mac covers that setup.
Talk instead of type, in any Mac app, with the transcription running on your own Mac.
Free. Nothing is uploaded.
Common questions
How do I run Whisper locally on a Mac?
The fastest way is Homebrew. Run brew install whisper.cpp, download a model such as ggml-base.en.bin from Hugging Face, convert your audio to a 16-bit WAV with ffmpeg, then run whisper-cli -m model.bin -f audio.wav. whisper.cpp's README says that on Apple Silicon the inference runs on the GPU through Metal.
How do I install Whisper on a Mac?
Two ways. For the quick route, brew install whisper.cpp gives you the whisper-cli command. For OpenAI's original, run brew install ffmpeg and then pip install -U openai-whisper.
How do I run whisper.cpp on an M1 or M2 Mac?
The same way as any Mac. whisper.cpp's README says that on Apple Silicon the inference runs fully on the GPU via Metal, so you do not need to pass a flag to ask for it. An optional Core ML build can add a further speedup but needs a manual build.
Which Whisper model should I use on a Mac?
Start with base.en (142 MiB) for clear English speech or small.en (466 MiB) if you have accents or background noise. Use large-v3 (2.9 GiB) only if accuracy matters more than speed. Models ending in .en are English only.
Can Whisper type what I say into any app on my Mac?
Not on its own. whisper-cli and the Python package transcribe audio files. To dictate into other apps you need an app that records your voice, runs the model and pastes the text at your cursor, such as MightyMouse.
Is running Whisper locally free?
Yes. The model, whisper.cpp and the OpenAI package are all free to download and run, and nothing is sent to a server. The cost is your Mac's processor, memory and battery.
Want the result without the Terminal? MightyMouse runs the transcription on your Mac and types what you say into any app, for free.