Speech models

Run Whisper on your Mac.

There are four main ways to run Whisper on Apple silicon. Picking one is easier once you know whether you want a file transcribed or captions as the audio plays.

Download FrazeFirst 30 minutes free, no card.

The short answer

Fraze does not run Whisper, so this page is about Whisper itself first. On an Apple silicon Mac the four routes worth knowing are whisper.cpp, MLX Whisper from Apple's mlx-examples, WhisperKit from Argmax, and OpenAI's own openai-whisper Python package. All four run on your machine, and all four are built around transcribing an audio file.

Live captions are a different job. macOS has Live Captions built in, in the same language only. Fraze does live captions with a translation under each line, using NVIDIA's Parakeet rather than Whisper, and on macOS 26 it can use Apple's SpeechAnalyzer instead.

whisper.cpp: the usual first stop

  • Core ML is opt in. The README has you pip install ane_transformers, openai-whisper and coremltools, run ./models/generate-coreml-model.sh base.en, then rebuild with cmake -B build -DWHISPER_COREML=1. It says running the encoder on the Apple Neural Engine this way can be more than three times faster than CPU only, and that the first run is slow while the ANE service compiles the model.
  • Homebrew has the project as the whisper.cpp formula, whose old name was whisper-cpp. It installs whisper-cli, and its caveats say model files are not downloaded by default, so you still fetch a .bin yourself.
  • The README says whisper-cli currently runs only with 16-bit WAV files. Its own fix is ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav.

whisper.cpp is Whisper rewritten in C and C++ on top of the ggml library. Its README calls Apple silicon a first-class citizen, optimized through ARM NEON, Accelerate, Metal and Core ML, and says inference there runs fully on the GPU via Metal. The README's quick start is six commands.

git clone https://github.com/ggml-org/whisper.cpp.git
cd whisper.cpp
sh ./models/download-ggml-model.sh base.en
cmake -B build
cmake --build build -j --config Release
./build/bin/whisper-cli -f samples/jfk.wav

MLX Whisper, if you already work in Python

  • The default model is mlx-community/whisper-tiny. Pre-converted models sit in the MLX Community organization on Hugging Face and download on first use.
  • In Python it is two lines: import mlx_whisper, then mlx_whisper.transcribe(speech_file)["text"]. Pass word_timestamps=True for word level timestamps.

MLX is Apple's array framework for machine learning on Apple silicon. The Whisper example in the ml-explore/mlx-examples repo is published as a pip package, so there is nothing to build.

brew install ffmpeg
pip install mlx-whisper
mlx_whisper audio_file.mp3 --model mlx-community/whisper-large-v3-turbo

WhisperKit, if you are building a Mac or iPhone app

  • The README recommends large-v3-v20240930_626MB across iOS and macOS for maximum accuracy, and large-v3-v20240930_turbo on macOS for maximum speed and accuracy.
  • The same CLI, which the README runs from source as swift run argmax-cli, can read a microphone instead of a file with --stream, and can run a local server that implements the OpenAI Audio API.
  • For an app, you add https://github.com/argmaxinc/argmax-oss-swift as a Swift package and pick the WhisperKit product.

WhisperKit is Argmax's Swift package that runs Whisper through Core ML. It now ships inside the argmax-oss-swift package, next to their text to speech and speaker diarization kits, under the MIT license. The old argmaxinc/WhisperKit address redirects there. The README lists macOS 14.0 or later and Xcode 16.0 or later as prerequisites, and a Homebrew command line app if you only want to try it.

brew install whisperkit-cli
whisperkit-cli transcribe --model large-v3-v20240930_626MB --audio-path audio.wav

The official package, and the apps built on it

  • The README's model table runs from tiny at 39M parameters to large at 1550M, with turbo at 809M. OpenAI's model card describes turbo as a pruned and finetuned large-v3 with 4 decoding layers instead of 32.
  • Whisper's own tokenizer lists 100 language codes. That breadth is the main reason to pick Whisper. One catch from the README: turbo is not trained for translation, so --task translate needs medium or large, and it only goes into English.
  • If you would rather not open a terminal, apps wrap this up. MacWhisper, built by Jordi Bruin and friends at Good Snooze, is one. Its site says you drag a file in and get a transcript, that it transcribes Zoom, Teams, Webex, Skype and Discord calls in the background with no bots joining, and that it runs Whisper, Parakeet and other models locally on your Mac. It also lists dictation, speaker recognition and summaries through AI services you connect, and its help site has a Live Captions section.

openai-whisper is OpenAI's own implementation, in PyTorch, under the MIT license. Pick it when you want Whisper's reference behavior. The README says the codebase is expected to work with Python 3.8 to 3.11, and it needs ffmpeg on the system.

brew install ffmpeg
pip install -U openai-whisper
whisper audio.mp3 --model turbo

Which route suits whom

What it runsHow you use itFiles or live
whisper.cppWhisper on ggml, Metal, Core MLCommand line, C APIFiles, plus a mic example
MLX WhisperWhisper on MLXCommand line and PythonFiles
WhisperKitWhisper on Core MLSwift package and CLIFiles, mic streaming
openai-whisperWhisper on PyTorchCommand line and PythonFiles
MacWhisperWhisper and other local modelsMac app, drag and dropFiles, meetings, app audio
FrazeParakeet, not WhisperDesktop appLive only, with translation
  • One file, today, no Python: whisper.cpp from Homebrew, or an app like MacWhisper.
  • A Python project: MLX Whisper. An app you ship: WhisperKit. The reference output: openai-whisper.
  • You want captions while the call is still going: that is a different job, covered next.

Whisper is for files. Live captions are another job.

The four command line routes are built around a finished recording. whisper.cpp does ship a stream example that samples the microphone every half second, and its README calls it naive. WhisperKit's CLI can stream a microphone too. Both are documented as microphone tools that print text in a terminal, not as captions for what your Mac is playing, and Whisper's own translate task goes into English only.

macOS already covers half of that. Apple's guide says Live Captions transcribes spoken audio in any app and conversations around you, needs a Mac with Apple silicon, and processes the audio on device. It does not translate. Apple's separate Live Translation works in Messages, FaceTime and the Phone app, not on any audio your Mac plays.

Fraze is the other half, and it does not run Whisper. Speech is NVIDIA's Parakeet TDT 0.6B v3, int8 ONNX files run through sherpa-onnx behind a Silero voice activity detector. Translation is Mozilla's Bergamot, the Firefox Translations models, compiled to WebAssembly. On macOS 26 it can switch to Apple's SpeechAnalyzer, and to Apple's Translation framework in its on-device low latency mode. It listens to system audio, one app, or the microphone, and lines land about half a second to a second after a speaker pauses.

The trade is coverage against speed. In our own runs, word error rate in percent, lower is better: on Earnings-22 conference calls Parakeet scored 11.20, Apple SpeechAnalyzer 12.03 and Whisper large-v3-turbo 12.35. Our Whisper runs went through WhisperKit's Core ML build, and the benchmark README notes that the Open ASR Leaderboard lists the reference PyTorch turbo at about 11.1 on that set, level with Parakeet. On LibriSpeech clean, Whisper turbo at 1.93 beat Parakeet at 2.15, and Apple led at 1.82. On FLEURS read speech, 200 clips per language on a Mac mini, Whisper turbo beat Parakeet in German (5.33 against 6.21), Spanish (5.68 against 6.05), French (6.82 against 7.83) and Russian (7.48 against 9.18). Parakeet v3's model card lists 25 languages and no Japanese, Korean or Chinese. What Parakeet buys back is speed: about 0.02 times real time on that Mac, roughly 50 times faster than the audio, which leaves room to caption a long call as it happens.

Questions

Is there a Whisper app for Mac?

Several. MacWhisper is one: its site says it transcribes dropped files and online meetings with local models. On the command line, Homebrew has whisper.cpp and whisperkit-cli, and pip has openai-whisper and mlx-whisper.

How do I run OpenAI Whisper on Apple silicon?

With OpenAI's own package: brew install ffmpeg, pip install -U openai-whisper, then whisper audio.mp3 --model turbo. For a build made for Apple silicon, use whisper.cpp, which runs on the GPU via Metal, or MLX Whisper.

Which Whisper build is fastest on a Mac?

We have not timed the four against each other, so we will not rank them. whisper.cpp's README says Metal runs inference on the GPU and that the Core ML encoder can be more than three times faster than CPU only. Model size matters too: turbo is 809M parameters against 1550M for large.

Can Whisper do live captions on a Mac?

Only roughly. whisper.cpp has a microphone stream example its README calls naive, and WhisperKit's CLI can stream a microphone. macOS Live Captions captions any app in the same language. Fraze captions system audio, one app or the microphone, with a translation under each line, on your computer.

Does Fraze use Whisper?

No. Fraze runs NVIDIA's Parakeet for speech and Mozilla's Bergamot for translation, both on your computer, and on macOS 26 it can use Apple's SpeechAnalyzer instead. Whisper covers far more languages. Parakeet ran about 50 times faster than real time in our tests, which suits live captions. The first 30 minutes are free on every account, with no card, then it is $29.99 once or $2.99 a month, both unlimited.

Try it on your next call.

Download Fraze

macOS 14 or later on Apple silicon. The Windows 11 build is not out yet. Needs a free account.