whisper.cpp
whisper.cpp is a plain C and C++ port of OpenAI's Whisper under MIT, with no dependencies, built to run on CPUs, Apple Silicon and phones. It supports quantised models, treats Apple Silicon as a first-class target through Metal and Core ML, ships a command line and an HTTP server with an OpenAI-like API, and has bindings for about a dozen languages. Inference only, no training.
What does whisper.cpp do?
whisper.cpp is "high-performance inference of OpenAI's Whisper automatic speech recognition (ASR) model" as a "plain C/C++ implementation without dependencies". It calls Apple Silicon a "first-class citizen", using ARM NEON, Accelerate, Metal and Core ML, and the README says running the encoder on the Neural Engine is more than three times faster than CPU only.
It supports integer quantisation, which the README says makes models need "less memory and disk space" and run more efficiently on some hardware. Its memory table runs from about 273 MB of RAM for tiny to about 3.9 GB for large. GPU paths cover NVIDIA CUDA, Vulkan, AMD ROCm, OpenVINO and several NPUs. The examples include a command-line tool, a stream tool that transcribes from the microphone every half second, and whisper-server, described as an "HTTP transcription server with OAI-like API". Word timestamps and speaker-turn markers exist and are both labelled experimental.
Key facts
- Licence: MIT. Models are OpenAI's MIT Whisper weights converted to the project's own binary format, downloaded from Hugging Face.
- Apple Silicon: ARM NEON, Accelerate, Metal and Core ML; running the encoder on the Neural Engine is described as more than three times faster than CPU only.
- Integer quantisation; the README's memory table runs from about 273 MB of RAM for tiny to about 3.9 GB for large.
- GPU and accelerator paths: NVIDIA CUDA, Vulkan, AMD ROCm, OpenVINO, and several NPUs.
- Tools: whisper-cli, a stream example that transcribes from the microphone every half second, and whisper-server, an HTTP transcription server with an OpenAI-like API.
- Word timestamps and speaker-turn markers (tinydiarize) exist and are both labelled experimental; Silero voice activity detection is available.
- Platforms: macOS (Intel and Arm), iOS, Android, Linux, FreeBSD, WebAssembly, Windows (MSVC and MinGW), Raspberry Pi and Docker.
- Bindings: Rust, JavaScript, Go, Java, Ruby, Objective-C and Swift, .NET, Python, R and Unity. Latest tagged release when read: v1.9.4.
What does it replace, and where does it fall short?
whisper.cpp replaces the Deepgram and AssemblyAI APIs where the hardware is a laptop, a phone or a CPU-only server. Its server speaks an OpenAI-like API, so code written against OpenAI's transcription endpoint can point at it.
Where it falls short: inference only, no training or fine-tuning. The command-line tool takes 16-bit WAV only. Speaker labelling is experimental, and streaming is an example program rather than a supported API.
How does whisper.cpp run?
Build with CMake, or use the Docker images (CPU, CUDA, Vulkan variants for linux/amd64 and linux/arm64), Conan, or the npm package. Bindings exist for Rust, JavaScript, Go, Java, Ruby, Objective-C and Swift, .NET, Python, R and Unity. Models are downloaded from Hugging Face in the project's own binary format, converted from OpenAI's MIT weights. On Apple Silicon inference runs fully on the GPU through Metal.
Who is whisper.cpp for?
Anyone shipping transcription inside an app, on a Mac, or on a server with no GPU. A team that needs word timestamps and speaker labels in production should look at WhisperX.
What limits does the README state?
"Limitations: Inference only." The first run with Core ML is slow while the model compiles. Word timestamps, the tinydiarize speaker-turn mode, segment length control and karaoke output are all marked experimental.
Questions people ask
Is whisper.cpp open source?
Yes. The code is MIT, and the models it runs are conversions of OpenAI's Whisper weights, which are also MIT. Both are OSI approved licences with no use restrictions, so the port and the weights can ship together in a product.
Does whisper.cpp run without a GPU?
Yes. It was written for exactly that: a plain C and C++ implementation with quantised models that fit in a few hundred megabytes. On Apple Silicon it runs on the GPU through Metal and can use the Neural Engine through Core ML; on other machines it runs on the CPU, or on NVIDIA, AMD and Intel accelerators if present.
Can whisper.cpp replace a hosted transcription API?
For many uses, yes. Its whisper-server exposes an HTTP endpoint with an OpenAI-like API, so code written against OpenAI's transcription endpoint can point at it. Streaming is an example program and speaker labels are experimental, so a live agent or a diarised transcript needs more; see the alternatives to Deepgram page.
What are whisper.cpp's limits?
Its README says inference only, so no training or fine-tuning. The command-line tool takes 16-bit WAV input. Word timestamps, the speaker-turn mode, segment length control and karaoke output are all marked experimental. The first run with Core ML is slow while the model compiles.
How does whisper.cpp differ from Whisper?
Same model, different runtime. Whisper is OpenAI's Python package built on PyTorch and benchmarked on an A100 GPU. whisper.cpp reimplements inference in C and C++ with no dependencies, quantised weights, and platform work for Apple Silicon, phones and the browser.
Sources
- whisper.cpp README and MIT LICENSE: github.com/ggml-org/whisper.cpp, read 2026-09-16.
- Whisper weights licence, from the upstream README: github.com/openai/whisper, read 2026-09-16.
Compared with the others
On the open-source alternatives to Deepgram page, whisper.cpp is the pick for a cpu, a mac, or a phone. MIT. A dependency-free C and C++ port with quantised models, first-class Apple Silicon through Metal and Core ML, an HTTP server with an OpenAI-like API, and bindings for a dozen languages.
Also on that page: Whisper for the reference model on a gpu, WhisperX for word timestamps and speaker labels, Speaches for an openai-compatible server.
On the open-source alternatives to AssemblyAI page, whisper.cpp is the pick for a cpu, a mac, or a phone. MIT. A dependency-free C and C++ port with quantised models, first-class Apple Silicon through Metal and Core ML, an HTTP server with an OpenAI-like API, and bindings for a dozen languages.
Also on that page: WhisperX for word timestamps and speaker labels, Speaches for an openai-compatible server, Whisper for the reference model on a gpu.
More speech-to-text engines
OpenAI's general-purpose speech recognition model, released with code and weights under MIT, in six sizes from 39 million to 1.55 billion parameters, with multilingual transcription, translation to English and language detection.
Batched Whisper transcription under BSD-2-Clause with word-level timestamps from forced alignment and speaker labels from pyannote, the closest open-source match to a hosted transcription API's output.
NVIDIA's speech models and toolkit: Apache-2.0 code, and the Parakeet TDT 0.6B v3 model under CC-BY-4.0 with 25 European languages, automatic language detection, punctuation and word timestamps.
A runtime under Apache-2.0 from the next-generation Kaldi team that runs speech to text, text to speech, speaker diarization and voice activity detection locally on CPUs, NPUs and phones, with no internet connection.
An offline speech recognition toolkit under Apache-2.0 with streaming, models of about 50 MB, 20+ languages, a reconfigurable vocabulary and speaker identification, from small boards to clusters.
An on-device speech toolkit under MIT built for live streaming, with speech-to-text models trained from scratch in sizes down to 1 MB, one library across Python, the browser, phones and desktops.
Added September 16, 2026. Every claim above comes from the project's README, LICENSE or model card, read on September 16, 2026, or from the GitHub API on the date shown in the panel. Found an error? Write to reveneau@licheo.com and it is fixed in the next weekly pass. Repository: github.com/ggml-org/whisper.cpp.
Want whisper.cpp running on your own servers?
Reveneau sets it up on your hardware, connects it to your product, and builds the software around it.