How to Transcribe Meetings Locally on a Mac with Whisper
Two or three years ago, “transcribe your meetings without uploading them” was a compromise. You accepted noticeably worse accuracy in exchange for privacy, and for most people that trade wasn’t worth it. That’s no longer the situation. Whisper running on Apple Silicon is now good enough that the interesting question isn’t whether to transcribe locally — it’s which model to use and how to feed it decent audio.
This is the practical version of that. No benchmarks-as-marketing, and an honest section at the end about what local transcription still can’t do.
What Whisper actually is
Whisper is a speech-recognition model OpenAI released as open weights in 2022. That last part is what matters: the model files are downloadable, and once you have them, transcription runs entirely on your own machine with no API key, no account, and no network connection. OpenAI kept the models open even as the rest of its lineup went closed.
Most Mac tools don’t run Whisper through Python. They use whisper.cpp, a C/C++ reimplementation by Georgi Gerganov that’s dramatically leaner and uses Metal for GPU acceleration on Apple Silicon. When you see a Mac app advertising “local Whisper,” it’s almost certainly whisper.cpp underneath, loading a ggml-format model file.
The one decision that matters: model size
Whisper ships in several sizes, and this is the only real tuning choice you’ll make. Bigger models are more accurate and slower, and the returns flatten out fast. These are the actual file sizes you’ll download:
| Model | Size on disk | Realistic use |
|---|---|---|
tiny | 75 MB | Testing, or voice memos where you just need the gist |
base | 142 MB | Solid default for clear one-on-one meeting audio |
small | 466 MB | The accuracy/speed sweet spot for most people |
medium | 1.5 GB | Noticeably better on accents and crosstalk |
large-v3-turbo | 1.6 GB | Near-large-v3 accuracy, several times faster |
large-v3 | 3.1 GB | Best available, slowest |
The one to know about is large-v3-turbo. It’s large-v3 with a heavily pruned decoder — published comparisons put its word error rate within roughly half a percentage point of full large-v3 while running several times faster, at half the disk footprint. For meeting audio specifically it’s the best default of the six, and it’s what I’d start with on any M-series Mac with the disk space.
Go smaller than small only if you’re constrained. The jump from tiny to base is large; from medium to large-v3 it’s marginal for ordinary meeting audio, and you pay for it in time on every recording.
What to expect for speed
On Apple Silicon, whisper.cpp runs the model through Metal, and the practical result on any M-series chip is that transcription finishes faster than the meeting took — usually several times faster with the mid-size models. A one-hour call transcribed with large-v3-turbo is a coffee break, not an overnight job. The bigger models on an older Intel Mac are a different story; if you’re on pre-Apple-Silicon hardware, stay at small or below.
Two things speed this up more than picking a smaller model:
Feed it 16 kHz mono. Whisper resamples internally to 16 kHz mono regardless, so handing it a 48 kHz stereo file just means it does conversion work first. Any decent tool does this for you.
Chunk long audio. Processing a two-hour recording in a single pass is where local transcription tends to fall over — memory climbs and whisper.cpp can crash outright on very long inputs. Splitting into chunks of a few minutes is both more stable and easy to show progress for. If you’re building this yourself, this is the detail that will bite you.
Your three realistic options
Roll it yourself with whisper.cpp
Clone the repo, build it, download a ggml model, and run the binary against an audio file. It’s genuinely straightforward if you’re comfortable in a terminal, it’s free, and you get complete control.
git clone https://github.com/ggerganov/whisper.cpp
cd whisper.cpp && make
sh ./models/download-ggml-model.sh large-v3-turbo
./main -m models/ggml-large-v3-turbo.bin -f meeting.wav --output-txt
What you’re signing up for beyond that: capturing the meeting audio in the first place (which on macOS is its own problem, since system audio isn’t freely readable), converting formats, chunking long files, and doing something useful with the wall of text that comes out. The transcription is the easy part.
MacWhisper
A polished Mac app wrapped around the same engine, with speaker diarization and a one-time purchase. Drop in an audio file, get an accurate transcript, all on-device. If you already have recordings and just need them turned into text, this is the shortest path and I’d recommend it without reservation for that job.
What it isn’t: a meeting workflow. It won’t notice a call starting, capture both sides, or do anything with the transcript afterward.
An app that handles capture and transcription together
The gap in both options above is the same. Transcription is a solved problem; the surrounding workflow isn’t. Something has to notice the meeting, record both sides of it, transcribe, and then put the result somewhere you’ll actually see it.
That’s the category Life Manager Pro is in, and since this post is about Whisper specifically, here’s the concrete version rather than a pitch. It bundles whisper.cpp and downloads ggml models on demand — the same six sizes in the table above, fetched from the whisper.cpp model repository, so nothing proprietary is happening to the audio. It detects Zoom, Teams, Webex, and Slack calls, captures microphone and system audio as separate streams, chunks long recordings for stability, and transcribes on-device. Audio never leaves the Mac and it works with no network connection once the model is downloaded.
You can pick your model in settings; it defaults to base, which is deliberately conservative for a first run, and most people should move up to small or large-v3-turbo once they’ve seen it work.
Local Whisper, without assembling it yourself
Life Manager Pro records your Mac meetings without a bot, transcribes on-device with Whisper, and turns the action items into real tasks alongside your projects, CRM, and goals. $49 once, no subscription. 14-day free trial, no credit card.
Try Life Manager Pro freeThe part everyone skips: audio quality dominates
Model choice is the fun decision. Audio quality is the one that actually determines your transcript.
Whisper is remarkably tolerant of accents and background noise, and completely defeated by two people talking over each other through one merged channel. The single highest-leverage thing you can do is capture your microphone and the system audio as separate tracks. Transcribe them independently and you get clean attribution of who said what, without needing speaker diarization at all. Merge them into one file first and even large-v3 will produce a muddle in the crosstalk sections.
After that, in rough order of impact: use a real microphone rather than the built-in one if you’re the one talking most; don’t run transcription on audio that was already compressed for a video file if you can avoid it; and expect proper nouns, product names, and acronyms to be the first thing to go wrong. Whisper has no idea what your company calls things, and no local model will guess “Catoosa” or “EventKit” correctly without help.
Where local transcription genuinely still loses
Being straight about this, because most posts on this topic aren’t.
Hard audio. Cloud services from Deepgram, AssemblyAI, and Otter still hold a real edge on the difficult cases — heavy accents, poor microphones, three people interrupting each other. On clean meeting audio the gap is small enough that most people won’t notice. On a bad conference-room speakerphone recording, they win.
Real-time. Local Whisper transcribes after the fact. If you want to watch text scroll during the call, or edit a live transcript collaboratively, cloud tools do that and local tools broadly don’t.
Speaker diarization. Whisper does not identify speakers. Separate-channel capture gets you “me vs. them,” which covers most one-on-one and small-meeting needs, but it won’t label five participants by name. Tools that do this bolt on a separate diarization model, with mixed results.
Languages beyond the majors. Whisper handles a lot of languages, but quality drops off outside the well-represented ones, and cloud services advertising 100+ languages generally do better across that long tail. Worth knowing: newer models like NVIDIA’s Parakeet are considerably faster than Whisper on English and major European languages, but narrower in coverage — a reasonable trade if English is all you need.
Disk and first-run friction. A 1.6 GB model download is a real thing to explain to a non-technical user, and there’s no way around it — that’s the file that makes the privacy guarantee possible.
The honest summary
If you have recordings and want text, use MacWhisper. If you enjoy the tooling, whisper.cpp is free and excellent, and the DIY path is genuinely viable now in a way it wasn’t in 2023. If you want the meeting captured and transcribed without assembling a pipeline, that’s what integrated apps are for.
But the reason to do any of this locally isn’t accuracy — cloud services are still marginally ahead there, and pretending otherwise is how you lose credibility. The reason is that the recording of your client conversation stays on your own disk, works on a plane, costs nothing per minute, and doesn’t depend on a vendor’s retention policy remaining what it was when you signed up. On modern Apple Silicon, that costs you very little accuracy. Two years ago it cost a lot.