How to Transcribe Meetings Without Uploading to the Cloud
You don't have to send your meeting audio to third-party servers. Here's how to transcribe meetings locally, with no cloud upload required.
You can transcribe meetings locally using whisper.cpp — either manually, via a shell script, or through Harknotes which bundles the full pipeline. Audio never leaves your device; only the text transcript is sent for optional AI summarisation.
Every major meeting transcription service — Otter, Fireflies, tl;dv, Fathom — works by uploading your audio to their cloud infrastructure. That’s how they run speech recognition at scale, and it’s a reasonable trade-off for many people.
But it’s not the only option. Here’s how to transcribe your meetings without the audio leaving your machine.
Why avoid the cloud?
There are a few reasons you might want local transcription:
Privacy. Your meetings contain sensitive information — client details, business strategy, HR discussions. You may prefer not to have that audio sitting on a vendor’s servers.
Compliance. NDA clauses and internal security policies can create constraints around sharing meeting content with third parties. Local transcription eliminates this concern for the audio processing stage.
Security. Cloud services can be breached. If your meeting audio is never uploaded, it can’t be accessed in a breach of the transcription vendor.
Cost. Cloud transcription services charge per minute or per seat. Local transcription using open-source models is free beyond the compute cost on your hardware.
Offline use. Local transcription works without an internet connection. Useful if you’re recording in environments with restricted connectivity.
Option 1: Use whisper.cpp directly
whisper.cpp is a C++ implementation of OpenAI’s Whisper model. It runs locally, supports GPU acceleration, and produces high-quality transcriptions.
Setup:
# Clone and build
git clone https://github.com/ggerganov/whisper.cpp
cd whisper.cpp
make
# Download a model
./models/download-ggml-model.sh large-v3
# Transcribe a WAV file
./main -m models/ggml-large-v3.bin -f meeting.wav -otxt
This works well if you’re comfortable with the command line. The friction is that you need to manage recording yourself, convert audio to WAV format, and process files manually after each meeting.
Option 2: Combine recording + whisper.cpp with a script
You can automate the pipeline with a shell script:
#!/bin/bash
# Record system audio (macOS example using BlackHole)
ffmpeg -f avfoundation -i "BlackHole 2ch" -ar 16000 meeting_$(date +%Y%m%d_%H%M).wav &
RECORD_PID=$!
echo "Recording... Press Enter to stop."
read
kill $RECORD_PID
./whisper.cpp/main -m ./models/ggml-large-v3.bin -f meeting_*.wav -otxt
On Linux, you’d use PulseAudio or PipeWire for capture. This is more involved but gives you full control.
Option 3: Use a dedicated app
If you want local transcription without managing the infrastructure yourself, Harknotes handles the full pipeline:
- Record — click record to start capturing
- Transcribe — whisper.cpp runs locally, live while you record
- Notes — summary, action items, and transcript, exportable as Markdown
Harknotes bundles whisper.cpp as a compiled binary and downloads the model on first run. After setup, it works completely offline for the transcription step.
Summaries run through any OpenAI-compatible endpoint — a local model via Ollama keeps the whole pipeline offline, or you can bring your own API key for a cloud provider (which sends the text transcript, never audio). You can skip this step if you want the raw transcript only.
Comparing the approaches
| Approach | Setup effort | Offline | Speaker labels | Structured notes |
|---|---|---|---|---|
| whisper.cpp directly | High | Yes | No | No |
| Custom script | Medium | Yes | No | No |
| Harknotes | Low | Yes (transcription) | Yes | Yes |
What about quality?
Whisper’s large-v3 model is genuinely excellent. For clear meeting audio with two to eight speakers, accuracy is typically over 95% for English. Other languages vary but are generally competitive with cloud alternatives.
The main limitation is speed on CPU. On a modern Apple Silicon Mac or a machine with a dedicated GPU, transcription is fast — often faster than real-time. On older hardware or CPU-only machines, you may wait a few minutes for a long meeting to process.
Getting started with Harknotes
Harknotes is free and open source (AGPL-3.0). Transcription and summaries are unlimited — you bring the AI, either a local model or your own API key.
More articles
How to Get Meeting Notes Using Local Whisper AI
Whisper is OpenAI's open-source speech recognition model. Here's how to use it locally to transcribe meetings — without sending audio to the cloud.
The Best Meeting Transcription App for Linux
Most meeting transcription tools don't support Linux. Harknotes does — with native PulseAudio and PipeWire support, local Whisper AI, and no cloud audio.
Meeting Transcription Without a Bot Joining Your Call
Most meeting transcription tools send a bot into your meeting. Here's why that's a problem — and how to transcribe meetings without anyone knowing.