whisper.cpp is a plain C/C++ implementation of OpenAI's Whisper automatic speech recognition model, with no external dependencies and inference only. It uses mixed F16/F32 precision, supports integer quantization of model weights, and makes no memory allocations at runtime, which keeps it small enough to embed in desktop, mobile, and browser applications. The high-level model code sits in two files; the rest comes from the ggml machine-learning library.
Hardware paths cover a wide range of targets. On Apple Silicon it uses ARM NEON, the Accelerate framework, and Metal, and the encoder can run on the Apple Neural Engine through Core ML. Elsewhere it uses AVX intrinsics on x86, VSX intrinsics on POWER, Vulkan, NVIDIA GPUs, AMD ROCm, the AMD Ryzen AI NPU, OpenVINO on Intel CPUs and GPUs, Ascend NPUs, Moore Threads GPUs, OpenBLAS, or the CPU alone. Supported platforms include macOS, iOS, Android, Linux, FreeBSD, Windows, WebAssembly, Raspberry Pi, and Docker.
Models are converted to the ggml format and fetched with a download script, from tiny through large-v3-turbo, in English-only and multilingual variants.
| Model | Disk | Memory |
|---|---|---|
| tiny | 75 MiB | ~273 MB |
| base | 142 MiB | ~388 MB |
| small | 466 MiB | ~852 MB |
| medium | 1.5 GiB | ~2.1 GB |
| large | 2.9 GiB | ~3.9 GB |
Voice activity detection can be enabled with --vad plus a separate VAD model such as Silero-VAD: speech segments are detected first and only those segments are transcribed, which reduces the audio the model processes. Experimental options add word-level timestamps, speaker segmentation through tinydiarize, confidence colour-coding, and control over generated segment length. The command-line example takes 16-bit WAV input, so other formats need converting first.
Bundled examples show the range of uses: a command-line transcriber, a benchmark tool, real-time transcription from a microphone, a voice-command assistant, an HTTP server with an OpenAI-like API, a talk-to-a-model demo, iOS, macOS, and Android applications, a Neovim plugin, karaoke video generation, and voice-controlled chess. Bindings exist for Rust, JavaScript and React Native, Go, Java, Ruby, Objective-C and Swift, .NET, Python, R, and Unity.
Features
- Dependency-free C/C++ core: the full high-level model implementation lives in a header and one source file, on top of ggml
- On-device inference: runs fully offline, including on phones and in the browser through WebAssembly
- Quantization: integer-quantized models cut memory and disk use and can be processed more efficiently on some hardware
- Apple Silicon acceleration: ARM NEON, Accelerate, Metal, and Core ML execution on the Neural Engine
- Broad GPU and NPU support: NVIDIA, Vulkan, ROCm, OpenVINO, Ascend, Moore Threads, and the AMD Ryzen AI NPU
- Voice activity detection: --vad with Silero-VAD transcribes only detected speech segments
- Experimental timing features: word-level timestamps, tinydiarize speaker segmentation, and segment-length control
- HTTP server example: transcription over an OpenAI-like API
- Real-time transcription: a streaming example samples the microphone and transcribes continuously
- Language bindings: Rust, JavaScript, Go, Java, Ruby, Swift, .NET, Python, R, and Unity
Built with this
Llamafile
Packages an LLM and its runtime into one cross-platform executable file that runs locally with no installation
Meetily
Self-hosted AI meeting assistant that transcribes, diarizes, and summarizes meetings locally with Whisper/Parakeet and Ollama
OGAM
The Swiss Army Knife of Offline AI. Chat, see, speak, and generate images on your phone or Mac — GGUF LLMs, vision, Whisper speech-to-text,
OrkasVideoStudio
Turn your coding agent into a video studio: describe a video in plain language, and your agent writes the timeline and produces the file.
