whisper.cpp: Local Speech Transcription Without a Cloud
whisper.cpp transcribes speech to text locally. It is the same approach that made llama.cpp practical, applied to the Whisper speech recognition model: a C++ implementation with no Python runtime and quantization support so it runs on ordinary hardware.
Why local transcription matters
Transcription is one of the clearest cases for running a model yourself. Meeting recordings, interviews, medical or legal dictation, and personal voice notes are exactly the material you should not be uploading to a third-party API.
The output quality is genuinely good. Whisper handles accents, background noise, and multiple languages considerably better than the speech recognition most people last encountered.
Model sizes
Models range from tiny to large, trading accuracy for speed and memory. base and small are fast enough for real-time on a modern CPU and accurate enough for clear speech. medium and large are noticeably better on difficult audio and want a GPU for reasonable throughput.
Start with small and move up only if the output is not good enough for your material.
Practical uses
# Transcribe to text
whisper-cli -m models/ggml-small.bin -f recording.wav
# Generate subtitles
whisper-cli -m models/ggml-small.bin -f video-audio.wav -osrt
Subtitle generation is the underrated one. A media library with no subtitles becomes a media library with generated ones, which matters for accessibility and for anything with poor audio mixing.
Input generally needs to be 16kHz WAV, so ffmpeg is usually the first step:
ffmpeg -i input.mp4 -ar 16000 -ac 1 -c:a pcm_s16le output.wav
Server mode
It includes a server exposing an OpenAI-compatible transcription endpoint, so applications written against that API can point at it locally. LocalAI also provides transcription if you would rather run one service for everything.
License
whisper.cpp is released under the MIT License.