← All posts

Run a Transcription Model on Your Mac in 2026: The Offline Guide

How to run a speech-to-text model on your Mac in 2026: pick Whisper or Parakeet, set up whisper.cpp, capture call audio, add a local LLM for notes, and verify nothing leaves your device.

Roofle team · · 15 min read

You can now transcribe a one-hour meeting on a MacBook in a few minutes, with no upload, no account and no per-minute bill. The models are free, Apple Silicon is fast enough, and the tools around them have matured. What is still confusing is the setup: which model, which app, how to capture the other side of a call, and how to be sure the whole thing is really offline.

This guide walks through all of it. It covers what you need to know about your Mac, the speech models worth considering in 2026, three ways to run them, how to capture audio from Zoom or Meet, how to turn a transcript into notes with a local language model, and a checklist to prove nothing leaves your machine.

The short answer

If you want the fastest route to a working setup, here it is. Download a speech model once, run it on your Mac, and treat summaries as a separate step with a separate model.

For recordings you already have: use whisper.cpp with the large-v3-turbo model, or a native app that wraps it. Expect an hour of audio to take a handful of minutes on a recent Apple Silicon chip.

For live calls: you need a tool that captures system audio and transcribes as people talk. Roofle does this on your Mac and adds live notes and suggested questions.

For notes and action items: feed the transcript to a local model through Ollama, or any OpenAI-compatible endpoint running on localhost.

To be sure it is offline: turn on airplane mode, record a fresh sample, and confirm you still get a transcript and a summary.

Transcription and notes are two different models

Most confusion starts here. People say "run a local LLM to transcribe my meetings", but transcription is not done by a large language model. It is done by a speech recognition model: a network trained on thousands of hours of audio that turns sound into text. Notes, summaries and action items come from a second, separate language model that reads that text.

That gives you a four-stage pipeline. Audio is captured, a speech model transcribes it, a language model summarizes the transcript, and you export the result. Each stage can be local or remote, and each can fail on its own. A working transcript tells you nothing about whether your summary model is installed.

Four stages: capture audio, transcribe with a speech model, summarize with a language model, export a notes file, all on your Mac
The four stages of an on-device meeting workflow. Transcription and summarizing use different models.

Keep this picture in mind, because the rest of the guide follows it. Capture comes first, then the speech model, then the language model, then export.

Check your Mac before you download anything

Almost any Mac made since late 2020 with an Apple Silicon chip (M1 or newer) can run a modern speech model comfortably. Intel Macs can run some of the tools, but they are much slower, and several of the on-device engines below are Apple Silicon only. Open Apple menu, then About This Mac, to see your chip and memory.

Your MacWhat to expectSensible choice
M1 to M4, 8 GBSpeech models run fine. Summary models must stay small.whisper small or turbo, 1 to 3B summary model
M1 to M4, 16 GBThe comfortable middle. Run speech and a mid-size model together.large-v3-turbo, 7 to 8B summary model
Pro, Max or Ultra, 32 GB+Headroom for long calls and larger summary models.Any speech model, 12B+ summary model
Intel MacWorks, but slowly. Some engines are unavailable.whisper.cpp with a small or base model
Rules of thumb, not guarantees. Memory is shared between the speech model, the language model, macOS and your call app.

An installer that runs and a speech engine that runs offline are separate requirements. Before choosing a tool, confirm that the specific model path you want supports your chip and macOS version.

The speech models worth knowing in 2026

Whisper started the local transcription era, and it is still the safest default. It is no longer alone, though. Here is the field as it stands.

Whisper (OpenAI). Released in 2022 under the MIT license. An encoder-decoder transformer trained on roughly 680,000 hours of multilingual audio. It transcribes around 100 languages and can translate to English. The weights are open, which is why an ecosystem of local runners exists around it.

Parakeet (NVIDIA). A fast model family aimed mainly at English and European languages. On Apple Silicon it is very quick and tends to avoid the invented phrases Whisper can produce during silence. It covers fewer languages.

Apple Speech. Apple ships its own on-device recognizer in macOS. It needs nothing extra to download in many cases, but the newest features require recent macOS versions and Apple Silicon.

SenseVoice and Qwen3-ASR. Strong options for Chinese, Japanese, Korean and Cantonese, where general models are weaker.

ModelLanguagesSpeed on Apple SiliconBest for
Whisper large-v3-turbo100+Roughly 10 to 15x real timeThe best all-round default
Whisper large-v3100+Several times slower than turboHardest audio, maximum accuracy
Whisper small100+Fast, small download8 GB Macs and quick drafts
Parakeet v325 EuropeanOften 50x real time or moreEnglish-heavy meetings, fast turnaround
SenseVoicezh, ja, ko, yue, enVery fastEast Asian languages
Speeds are approximate, from published community benchmarks on recent Apple Silicon. They vary with chip, audio quality and software.

For most people the answer is Whisper large-v3-turbo. It keeps the large model encoder but cuts the decoder from 32 layers to 4, so it runs far faster with accuracy close to the full model. Choose Parakeet when your meetings are in English and you care about speed, and choose a regional model when your language is not well covered by the general ones.

How accurate is local transcription?

On clean English speech, the large Whisper models land at a word error rate of roughly 5 to 8 percent. That means about one word in fifteen or twenty is wrong. Real meetings are messier than benchmarks. Background noise, crosstalk, heavy accents and people talking over each other all push the number up.

Three failure modes matter most for meeting notes.

Numbers and names. Version numbers, prices, tier names and unusual surnames are where speech models slip. A transcript that says "the 12 dollar plan" when the speaker said "the 120 dollar plan" is a real problem in a sales or finance call.

Hallucination during silence. Whisper decodes one token at a time, and during long silent stretches it can invent repeated phrases or caption-style text. Trimming dead air and enabling its no-speech threshold reduces this.

Speaker labels. Plain Whisper produces one block of text with no indication of who said what. Diarization is a separate step, covered below.

The practical rule is simple. Treat a local transcript as a strong first draft. Check names, numbers, decisions and deadlines against the recording before you rely on a note, especially for anything you will send to someone else.

Four ways to run a transcription model on a Mac

There is no single right way. The best route depends on whether you work with files or live calls, and whether you like a terminal.

RouteCostPrivacySetup effort
Hosted APIPer audio minuteAudio is uploadedAPI key and some code
whisper.cpp or faster-whisperFreeFully localTerminal, about 15 minutes
Native Mac appFree or one-time feeFully localDownload and click
RoofleFree and open sourceSpeech runs on your MacDownload, grant permissions
Hosted APIs are listed for contrast. They are not offline.
Decision guide: live text needed leads to Roofle, otherwise terminal users pick whisper.cpp and everyone else picks a native app
A quick way to choose a route.

Route 1: whisper.cpp from the terminal

whisper.cpp is a C++ port of Whisper built for speed on consumer hardware. On Apple Silicon it uses Metal for the GPU, and an optional Core ML build pushes the encoder onto the Neural Engine. It is free, scriptable and easy to automate.

Install the tools first. ffmpeg converts almost any audio or video file into the format Whisper expects.

brew install whisper-cpp ffmpeg

Next, download a model. The large-v3-turbo file is about 1.6 GB. If you have a base 8 GB machine, start with the small model, which is roughly 466 MB.

mkdir -p ~/whisper-models
curl -L -o ~/whisper-models/ggml-large-v3-turbo.bin \
  https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-large-v3-turbo.bin

Whisper wants 16 kHz mono audio. Convert your recording, then transcribe it.

ffmpeg -i meeting.m4a -ar 16000 -ac 1 -c:a pcm_s16le meeting.wav
whisper-cli -m ~/whisper-models/ggml-large-v3-turbo.bin \
  -f meeting.wav -otxt -osrt -l auto

This writes a plain text transcript and an SRT file with timestamps next to your audio. The `-l auto` flag detects the language, and `--translate` produces English output from foreign-language audio.

Core ML for extra speed. For the Neural Engine, download the matching Core ML encoder from the same model repository and place it beside the model file. whisper.cpp picks it up on its own. The first run compiles it, which takes a few minutes, and later runs reuse the cached result.

Picking a size. Use large-v3-turbo as the default. Drop to medium for clean, podcast-quality audio, and to small on a memory-limited Mac. Skip tiny and base for anything that matters, because the error rate climbs quickly.

Route 2: a native Mac app

If a terminal is not your idea of a good time, several native apps wrap the same engines in a normal window. You drag an audio or video file in, pick a model, and get a searchable transcript with timestamps that you can export as text, subtitles or Markdown. The models download once and then run offline.

This is the right answer for most people who transcribe recordings occasionally. You pay nothing or a one-time fee, and you never think about the plumbing. The trade-offs are that most apps work on files after the fact, and the extras you get, such as system audio capture or speaker labels, vary by app and price tier.

Route 3: Roofle for live calls

Files are one use case. The other is a live conversation, where you want text as it happens. Roofle is a free, open-source meeting copilot for your Mac. It captures your microphone and the call audio, transcribes on your device, keeps live notes, and suggests questions you could ask while the topic is still open.

Speech to text runs on your Mac, so there is no transcription bill. You pick the model that writes notes and suggestions, and that can be a local one. See how privacy works for what stays on your device, and what Roofle costs for the full picture. If you want to understand why live support matters beyond a summary, read why AI meeting notes are not enough.

Capture the audio properly

Before you blame a speech model for a bad transcript, listen to the recording. If the other side of the call is missing from the audio, no model will fix that. Capture is the most common point of failure.

Microphone and system audio are mixed and resampled into one stream, then passed to the speech model
The speech model hears one mixed stream. If one side is silent, the transcript will be too.

A meeting has two audio sources. Your microphone carries your voice. The other participants come out of your speakers or headphones, and that is system audio. To transcribe both, your tool has to record both.

Grant the permissions. macOS asks for microphone access and, separately, for permission to record system audio or screen content. If either is denied, half the conversation is silent. Check System Settings, then Privacy and Security.

Use a loopback driver if your tool needs one. Some tools capture system audio directly. Others rely on a virtual device such as BlackHole that routes output back in as an input. Check what your tool expects before you start.

Record your device setup. A laptop microphone with built-in speakers is a different configuration from Bluetooth headphones or an external audio interface. If something works in one setup and fails in another, you want to know which.

Get consent. If you record other people, tell them. Say it out loud at the start of every call. Laws on recording vary by place, and the courtesy matters regardless.

Add notes with a local language model

A transcript is raw material. To get decisions, owners and action items, you need a language model to read it. Running one locally keeps the text on your machine as well.

The easiest way is Ollama, which runs open models and exposes an OpenAI-compatible API on localhost. Install it, pull a model, and you can point many tools at it.

brew install ollama
ollama serve &
ollama pull qwen2.5:7b

Which model fits depends on your memory. Larger models write better summaries and pick out owners and dates more reliably, but they load slowly and need more room.

Bar chart: 8 GB suits 1 to 3B models, 16 GB suits 7 to 8B, 24 to 32 GB suits 12 to 14B, 48 GB and up suits 30B and larger
A rough guide to summary model size by Mac memory, using 4-bit quantized models.

Leave four to six gigabytes free for macOS, the speech model and your call app. If summaries crawl or the system starts swapping, go down a size.

A one-command pipeline. If you work with files, you can chain everything into a single script. Audio goes in, Markdown minutes come out, and nothing touches a server.

#!/bin/zsh
# usage: ./notes.sh recording.m4a
ffmpeg -i "$1" -ar 16000 -ac 1 -c:a pcm_s16le /tmp/audio.wav -y
whisper-cli -m ~/whisper-models/ggml-large-v3-turbo.bin \
  -f /tmp/audio.wav -otxt -of /tmp/transcript
ollama run qwen2.5:7b "Summarize this meeting transcript into: \
1) key decisions, 2) action items with owners, 3) open questions. \
If a task has no owner, say so. $(cat /tmp/transcript.txt)" > "$1.notes.md"

The instruction to say when a task has no owner is deliberate. Small models like to fill gaps with a guess, and a made-up owner is worse than a blank.

Make sure it is really offline

Offline is a property of the whole workflow, not of one stage. A single cloud step quietly turns a local setup into a mixed one.

A fully local pipeline sends nothing out. A cloud LLM sends transcript text, and cloud speech sends raw audio
Where your data goes depends on which stages are local.

A cloud speech provider receives your raw audio, which is the most sensitive leak. A cloud language model receives the transcript text and any context sent with it. Even a remote Ollama server on your own network is not on-device processing.

Watch for quieter leaks too. Hosted providers, web search, sharing and sync all depend on the network. And check whether your export folder is synced by iCloud, Dropbox or another service. A transcript generated locally can still leave the device when a sync tool copies the file.

The airplane-mode test

Do not take offline on trust. Prepare everything while connected, then disconnect and run a fresh test. Use a new recording instead of reopening an old one, so cached results cannot fool you.

Read this short script aloud into the microphone, and play some authorized call audio through the app you want to capture.

"We approved the pilot for next Tuesday. Maya will prepare the checklist. We rejected the Friday launch. The support handoff still has no owner."

CheckPass condition
New recordingBoth your voice and the playback audio are present
New transcriptText is generated while disconnected
New summaryIt comes from the local model you selected
MeaningThe decision, the rejection, the owner and the missing owner stay distinct
ExportThe file opens without any hosted workspace

If a step fails, write down which one. "Offline did not work" is nearly impossible to debug. "Capture worked, but the summary model was not downloaded" takes a minute to fix.

Troubleshooting common problems

SymptomLikely causeFix
Only your voice appearsSystem audio is not capturedGrant the system audio permission, or route output through a loopback device
Empty or garbled transcriptWrong sample rate or formatConvert to 16 kHz mono WAV with ffmpeg
Repeated phrases in quiet partsWhisper hallucinating on silenceTrim silence, raise the no-speech threshold, or try Parakeet
Slow or frozen summaryModel too large for your memoryPick a smaller model or close other apps
Wrong names or numbersAcoustic ambiguityCheck against the recording and correct by hand
Summary invents an ownerSmall model filling gapsTell it to leave unowned tasks unassigned, or use a bigger model

What about speaker labels?

Plain Whisper does not tell you who is speaking. If you need "Speaker 1" and "Speaker 2", you add diarization, which is a separate model. Some apps include it, and open-source projects such as WhisperX add it using pyannote, though that is a Python project rather than a one-liner.

For a call with two or three distinct voices, a rough label is often enough. For a panel interview where attribution matters, plan for manual review, and always keep the audio.

Privacy, consent and who this is for

Local transcription matters most when the content is sensitive. Lawyers, clinicians, journalists, recruiters and anyone under an NDA have good reasons not to upload recordings to a third party. With a local model there is no server and no data processing agreement to negotiate, because nothing is processed anywhere but your Mac.

It also suits everyday roles. Sales teams can keep customer calls private, recruiters can review interviews without sharing candidate audio, and founders can record research calls without a subscription. Whatever your role, tell people when you record, and follow the rules where you live.

Frequently asked questions

Can I run a transcription model on a Mac without internet? Yes. Once the model file is on your disk, nothing needs the network. Download models while connected, then verify with airplane mode.

Do I need a GPU? No. Apple Silicon has a capable GPU and Neural Engine built in, and the tools above use them. Older Intel Macs work but are slow.

Is Whisper free? The model is free and open source under the MIT license. Running it through whisper.cpp costs nothing. Hosted APIs charge per minute, and some native apps charge a small one-time fee.

Which model should I start with? Whisper large-v3-turbo on a 16 GB Mac, or Whisper small on 8 GB. Try Parakeet if your meetings are in English and you want more speed.

Can it transcribe a live Zoom or Meet call? Yes, if your tool captures system audio. Roofle does this on your Mac and transcribes as people talk.

Are local summaries as good as ChatGPT or Claude? Small local models are good enough for decisions and action items on short calls, and they drop details more often. Larger local models close much of the gap. Cloud models still lead on long, nuanced meetings. See what Roofle costs for the trade-off.

How long does a one-hour meeting take? On a recent Apple Silicon chip with large-v3-turbo, expect roughly four to six minutes, with Parakeet faster. Summaries add a few minutes, depending on the model.

Keep your working configuration

Once everything works, write down your setup: macOS version, chip, speech model, summary model and audio devices. When you update any one of them, rerun the short airplane-mode test. Ten seconds of checking beats discovering a problem halfway through an hour-long call.

Get started

Pick the route that fits you, run the test script once, and you will have a private transcription setup in about fifteen minutes. If you want live notes and suggested questions on top, download Roofle, connect a model with the setup guide, and follow the quick start.