whisper.cpp
OpenAI's Whisper speech-to-text reimplemented in C++. Transcribes a podcast on a CPU with roughly 1 GB of RAM and no Python.
Whisper is the speech model that made local transcription normal, and whisper.cpp is the version that runs on hardware without a GPU. One binary, a GGUF-ish model file, no Python stack.
whisper-cli -m ggml-small.en.bin -f talk.wav -osrt
That writes talk.wav.srt next to the input. For a one-hour talk on a mid-range CPU, expect tens of minutes of processing — slower than real time, but it runs unattended.
Model tiers, honestly
| Model | Disk | Rough RAM | Quality |
|---|---|---|---|
| tiny | ~75 MB | under 1 GB | fine for clear English dictation, rough on accents |
| base | ~142 MB | ~1 GB | the usual compromise |
| small | ~466 MB | ~2 GB | noticeably fewer errors; the sweet spot |
| medium | ~1.5 GB | ~4 GB | only worth it on 8 GB or more |
If your goal is subtitles for your own videos, small on a machine with 2 GB free is the right answer. base is for when you are impatient.
Where it fits in a pipeline
The common pattern is: record, transcribe to SRT, edit the SRT, burn it into the video. Because it emits SRT natively, it drops straight into ffmpeg without an intermediate step. That is the whole reason to prefer it over a Python implementation — no environment, no version conflicts, no 2 GB of PyTorch on your NAS.
Pros
- Tiny models fit in a few hundred MB; even a small board can transcribe
- No Python, no PyTorch — a single compiled binary
- Outputs SRT and VTT directly, which is what you actually need for subtitles
- Metal and CUDA backends exist if you ever get a GPU
Cons
- Model quality drops sharply below the `small` tier, especially with accents
- No speaker diarisation; you get text, not "who said what"
- Long files need chunking or the `-f` batch workflow, which is not obvious from the README
Alternatives worth a look
Paperless-ngx
Scan-and-forget document archive with local OCR. Drops a paperless household on 2 GB of RAM and gives you full-text search over every invoice you own.
Ollama
The default way to run a local LLM. One binary, a model library, and an OpenAI-compatible endpoint on port 11434.
Last verified 2026-10-17 (docs). Prices and licence terms change — check the vendor page before you buy. Spotted an error?