whisper.cpp
C/C++ port of OpenAI Whisper for local speech-to-text transcription
whisper.cpp runs OpenAI's Whisper speech recognition models in plain C/C++ on top of the ggml library, with a C-style API in whisper.h and a whisper-cli example for transcribing 16-bit WAV files. It runs on CPU or can offload to Metal, Core ML, CUDA, Vulkan, ROCm, OpenVINO, Ascend CANN, Moore Threads MUSA and AMD Ryzen AI NPUs. It supports integer quantization and voice activity detection, and builds for desktop, mobile, WebAssembly and Docker.
Strengths
- No dependencies in core; zero memory allocations at runtime
- Wide backend coverage: Metal, Core ML, CUDA, Vulkan, ROCm, OpenVINO, CANN, MUSA, NPU
- Runs on iOS, Android, WebAssembly, Raspberry Pi, and Java bindings exist
- Q5_0-style integer quantization shrinks models; base model needs about 388 MB RAM
Weaknesses
- whisper-cli accepts only 16-bit WAV unless built with optional FFmpeg support
- Core ML, OpenVINO and VitisAI encoders need a separate Python conversion step
- Models must be in ggml format; downloaded via script, not bundled
- Library and CLI only; no built-in web UI or multi-user features
- GPU optional
- Docker
- Needs CMake, ffmpeg (optional), CUDA / ROCm / Vulkan / OpenVINO (optional backends)
- Models: Whisper ggml (tiny, base, small, medium, large-v1/v2/v3, large-v3-turbo), Quantized ggml (e.g. q5_0)