whisper.cpp runs OpenAI's Whisper automatic speech recognition model in plain C and C++ with no external dependencies. The whole high-level model implementation sits in one header and one source file, and the rest is the ggml machine learning library, so the library is small enough to embed in desktop, mobile, browser, and embedded applications that transcribe or translate audio fully offline.
Inference runs on CPU only or on a wide range of accelerators: Apple Silicon through ARM NEON, Accelerate, Metal, and Core ML (with the encoder on the Apple Neural Engine), x86 AVX and POWER VSX intrinsics, NVIDIA, AMD ROCm, Vulkan, and Moore Threads GPUs, Intel OpenVINO, Ascend NPUs, and AMD Ryzen AI NPUs. It uses mixed F16 and F32 precision, supports integer quantization of models, and makes no memory allocations at runtime. It is inference only.
Models are converted from the original PyTorch weights into a single-file ggml format that packs parameters, mel filters, vocabulary, and weights together. The project exposes a C-style API with bindings for Rust, JavaScript, React Native, Go, Java, Ruby, Swift, .NET, Python, R, and Unity, plus a precompiled XCFramework for Apple platforms. Example programs include a command-line transcriber, real-time microphone streaming, a voice command assistant, an HTTP transcription server with an OpenAI-like API, and iOS, Android, and WebAssembly apps.
| 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 |
Features
- Dependency-free C/C++: the Whisper model implemented in plain C and C++ on top of the ggml library
- Hardware backends: Metal, Core ML, CUDA, ROCm, Vulkan, OpenVINO, Ascend, Moore Threads, and Ryzen AI NPU, with CPU-only inference as a fallback
- Quantization: integer-quantized models cut disk and memory use
- Voice activity detection: a Silero VAD model trims non-speech audio before transcription
- Real-time streaming: continuous transcription of microphone input
- Word-level timestamps: experimental per-word timing, segment length control, and confidence color-coding
- Speaker segmentation: experimental speaker-turn detection through tinydiarize models
- Transcription server: an HTTP server example with an OpenAI-like API
- Language bindings: Rust, JavaScript, Go, Java, Ruby, Swift, .NET, Python, R, and Unity
- Cross-platform: macOS, iOS, Android, Linux, FreeBSD, Windows, WebAssembly, Raspberry Pi, and Docker images




