This is an early release preview. You may encounter bugs.
whisper.cpp logo
Unclaimed

Tool voice

whisper.cpp

C/C++ port of OpenAI's Whisper speech-recognition model, dependency-free and optimized for on-device inference

A+ 98/100 GitHub score ? This grade is derived from GitHub signals, not user votes. Open for the full breakdown.
No votes yet

01 / About

What whisper.cpp is.

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

02 / Discussion CREDIBILITY-GATED

Discussion

Reading is open to everyone. Posting and voting need a verified identity or a GitHub grade of B or higher.

  • No discussions yet.

04 / Build

Build with whisper.cpp.

Browse the catalogue for frameworks, tools, and harnesses, each scored on real GitHub credibility.

Get whisper.cpp →

Browse the catalogue