Find your next open-source project

Search by name, purpose, or keyword — or paste a GitHub repository URL

ggml-org/whisper.cpp

Machine Learning

Run OpenAI Whisper speech recognition locally in C/C++ on CPU, GPU and NPU across desktop, mobile and embedded devices.

55,164
6,306
C++
MIT
4 years old

Overview

whisper.cpp is a dependency-free C/C++ implementation of OpenAI's Whisper automatic speech recognition model model. The model logic lives in whisper.h and whisper.cpp, with the rest supplied by the ggml machine learning library core files ggml. The small footprint makes it practical to embed offline transcription in desktop, mobile, WebAssembly and embedded applications.

It supports mixed F16/F32 precision, integer quantization, voice activity detection and a C-style API. Backends include CPU (with AVX, NEON and VSX intrinsics), Metal/Core ML and ANE on Apple Silicon, CUDA and Vulkan, ROCm, OpenVINO, CANN, MUSA and Ryzen AI NPU, with a Docker image also provided.

Quick start

Clone the repository, download a converted model, then build and transcribe a sample:

git clone https://github.com/ggml-org/whisper.cpp.git
cd whisper.cpp
sh ./models/download-ggml-model.sh base.en
cmake -B build
cmake --build build -j --config Release
./build/bin/whisper-cli -f samples/jfk.wav

The model list and conversion details are in the models README. CLI options are shown by ./build/bin/whisper-cli -h. The CLI accepts only 16-bit WAV input, so convert other formats first, for example:

ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav

To add speech segmentation, download a VAD model and pass it with --vad:

./models/download-vad-model.sh silero-v6.2.0
./build/bin/whisper-cli -vm models/ggml-silero-v6.2.0.bin --vad -m models/ggml-base.en.bin -f samples/jfk.wav

GPU and NPU builds use CMake flags such as -DGGML_CUDA=1, -DGGML_VULKAN=1, -DGGML_HIP=1 or -DWHISPER_OPENVINO=1; the relevant toolchains must be installed first.

Constraints

Only inference is supported; training and fine-tuning are out of scope limitations. Memory scales with model size: the tiny model needs about 273 MB and the large model about 3.9 GB at runtime, with disk sizes from 75 MiB to 2.9 GiB memory table. Whisper runs best on 16 kHz mono audio. Accelerated backends require their own SDKs and setup steps, and the first run with Core ML or OpenVINO compiles a device-specific model, so it is slow.

The project is MIT-licensed. Quantized models reduce memory and disk use, at the cost of some transcription accuracy relative to the full-precision model.

HotRepo's take

On the C++ daily list for 2026-11-13, the project gained 40 stars in the day and reached 4th place on that list. The repository's scale—55k-plus stars and over 6,300 forks—shows it is used far beyond a niche sample. The day's gain alone does not show a trend, but the breadth of hardware backends and supported platforms is consistent with sustained adoption for offline speech recognition.

Written by AI from the project's README, updated . The project's own docs are the source of truth.

Hacker News

You might also like

  1. openai/whisperA general-purpose speech recognition model for multilingual transcription, translation, and language identification.Python112,548
  2. OpenWhispr/openwhisprCross-platform desktop dictation and meeting notes that run on local or bring-your-own-key speech models, aimed at people who'd rather not paste audio into a cloud service.JavaScript9,907
  3. ggml-org/llama.cppRuns LLM and VLM inference locally across CPUs, GPUs and phones without a Python stack.C++132,253
  4. 0xShug0/audio.cppA C++/ggml runtime for running many audio model families locally without Python, from TTS to speech recognition and music.C++3,820
  5. FlashML-org/FreeTokenServes frontier-scale MoE models on consumer GPUs and CPUs by pooling VRAM, RAM, and compute for local inference.Python15,073