← Back to blog

How to Transcribe Meetings Locally on a Mac with Whisper

transcription whisper mac apps how-to

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:

ModelSize on diskRealistic use
tiny75 MBTesting, or voice memos where you just need the gist
base142 MBSolid default for clear one-on-one meeting audio
small466 MBThe accuracy/speed sweet spot for most people
medium1.5 GBNoticeably better on accents and crosstalk
large-v3-turbo1.6 GBNear-large-v3 accuracy, several times faster
large-v33.1 GBBest 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 free

The 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.

Try it for 14 days. Then decide.

Full features, no credit card, no nag screens. If it fits the way you live and work, $49 keeps it forever — through January 31, 2027.