HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
ggml-org
whisper.cpp
C++2022–2026
ggml-org / whisper.cpp

whisper.cpp

Port of OpenAI's Whisper model in C/C++

97Distinct people
117Mentions
1Explicit recommenders
55.1KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Port of OpenAI's Whisper model in C/C++

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

This is a cool project. I’ve been very happy with whisper as an alternative to otter; it works better and solves real problems for me. I feel compelled to point out…

n8cpdx used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 12:54:37 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year117 dated mentions

Observed mentions: 2022-10-07 13:46:06 UTC to 2026-07-19 04:05:28 UTC.

02040602022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 25 mentions; 6 submissions, 19 comments20222023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 65 mentions; 10 submissions, 55 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 10 mentions; 1 submissions, 9 comments20242025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 16 mentions; 2 submissions, 14 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC25619
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC651055
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC1019
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC16214
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC101

From the project README

An excerpt from the repository, fetched Nov 12, 2026.

Read the project’s introduction
whisper.cpp High-performance inference of OpenAI's Whisper automatic speech recognition (ASR) model: Plain C/C++ implementation without dependencies Apple Silicon first-class citizen - optimized via ARM NEON, Accelerate framework, Metal and Core ML AVX intrinsics support for x86 architectures VSX intrinsics support for POWER architectures Mixed F16 / F32 precision Integer quantization support Zero memory allocations at runtime Vulkan support Support for CPU-only inference Efficient GPU support for NVIDIA AMD ROCm GPU support AMD Ryzen AI NPU Support OpenVINO Support Ascend NPU Support Moore Threads GPU Support C-style API Voice Activity Detection (VAD) Supported platforms: Mac OS (Intel and Arm) iOS Android Java Linux / FreeBSD WebAssembly Windows (MSVC and MinGW) Raspberry Pi Docker The entire high-level implementation of the model is contained in whisper.h and whisper.cpp. The rest of the code is part of the ggml machine learning library. Having such a lightweight implementation of the model allows to easily integrate it in different platforms and applications. As an example, here is a video of running the model on an iPhone 13 device - fully offline, on-device: whisper.objc whisper-iphone-13-mini-2.mp4 You can also easily make your own offline voice assistant application: command command-0.mp4 On Apple Silicon, the inference runs fully on the GPU via Metal: metal-base-1.mp4 Quick start First clone the repository: git clone https://github.com/ggml-org/whisper.cpp.git Navigate into the directory: cd whisper.cpp Then, download one of the Whisper models converted in ggml format. For example: sh ./models/download-ggml-model.sh base.en Now build the whisper-cli example and transcribe an audio file like this: # build the project cmake -B build cmake --build build -j --config Release # transcribe an audio file ./build/bin/whisper-cli -f samples/jfk.wav For a quick demo, simply run make base.en. The command downloads the base.en model converted to custom ggml format and runs the inference on all .wav samples in the folder samples. For detailed usage instructions, run: ./build/bin/whisper-cli -h Note that the whisper-cli example currently runs only with 16-bit WAV files, so make sure to convert your input before running the tool. For example, you can use ffmpeg like this: ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav More audio samples If you want some extra audio samples to play with, simply run: make -j samples This will download a few more audio files from Wikipedia and convert them to 16-bit WAV format via ffmpeg. You can download and run the other models as follows: make -j tiny.en make -j tiny make -j base.en make -j base make -j small.en make -j small make -j medium.en make -j medium make -j large-v1 make -j large-v2 make -j large-v3 make -j large-v3-turbo Memory usage Model Disk Mem 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 POWER VSX Intrinsics whisper.cpp supports POWER architectures and includes code which significantly speeds operation on Linux running on POWER9/10, making it capable of faster-than-realtime transcription on underclocked Raptor Talos II. Ensure you have a BLAS package installed, and replace the standard cmake setup with: # build with GGML_BLAS defined cmake -B build -DGGML_BLAS=1 cmake --build build -j --config Release ./build/bin/whisper-cli [ .. etc .. ] Quantization whisper.cpp supports integer quantization of the Whisper ggml models. Quantized models require less memory and disk space and depending on the hardware can be processed more efficiently. Here are the steps for creating and using a quantized model: # quantize a model with Q5_0 method cmake -B build cmake --build build -j --config Release ./build/bin/quantize models/ggml-base.en.bin models/ggml-base.en-q5_0.bin q5_0 # run the examples as usual, specifying the quantized model file ./build/bin/whisper-cli -m models/ggml-base.en-q5_0.bin ./samples/gb0.wav Core ML support On Apple Silicon devices, the Encoder inference can be executed on the Apple Neural Engine (ANE) via Core ML. This can result in significant speed-up - more than x3 faster compared with CPU-only execution. Here are the instructions for generating a Core ML model and using it with whisper.cpp: Install Python dependencies needed for the creation of the Core ML model: pip install ane_transformers pip install openai-whisper pip install coremltools To ensure coremltools operates correctly, please confirm that Xcode is installed and execute xcode-select --install to install the command-line tools. Python 3.11 is recommended. MacOS Sonoma (version 14) or newer is recommended, as older versions of MacOS might experience issues with transcription hallucination. [OPTIONAL] It is recommended to utilize a Python version management system, such as Miniconda for this step: To create an environment, use: conda create -n py311-whisper python=3.11 -y To activate the environment, use: conda activate py311-whisper Generate a Core ML model. For example, to generate a base.en model, use: ./models/generate-coreml-model.sh base.en This will generate the folder models/ggml-base.en-encoder.mlmodelc Build whisper.cpp with Core ML support: # using CMake cmake -B build -DWHISPER_COREML=1 cmake --build build -j --config Release Run the examples as usual. For example: $ ./build/bin/whisper-cli -m models/ggml-base.en.bin -f samples/jfk.wav ... whisper_init_state: loading Core ML model from 'models/ggml-base.en-encoder.mlmodelc' whisper_init_state: first run on a device may take a while ... whisper_init_state: Core ML model loaded system_info: n_threads = 4 / 10 | AVX = 0 | AVX2 = 0 | AVX512 = 0 | FMA = 0 | NEON = 1 | ARM_FMA = 1 | F16C = 0 | FP16_VA = 1 | WASM_SIMD = 0 | BLAS = 1 | SSE3 = 0 | VSX = 0 | COREML = 1 | ... T
Read the full README on GitHub

What Hacker News says

117 sources
From reverse engineered information (in the context of Asahi Linux, which can have raw hardware access to the ANE) it seems that the M1/M2 Apple Neural Engine provides exclusively for statically scheduled MADD's of INT8 or FP16 values.[0] This wastes a lot of memory bandwidth on padding in the context of newer local models which generally are more heavily quantized. (That is, when in-memory model values must be padded to FP16/INT8 this slashes your effective use of memory bandwidth, which is what determines token generation speed. GPU compute doesn't have that issue; one can simply de-quantize/pad the input in fast local registers to feed the matrix compute units, so memory bandwidth is used efficiently.) The NPU/ANE is still potentially useful for lowering power use in the context of prompt pre-processing, which is limited by raw compu
Read the rest
te as opposed to the memory bandwidth bound of token generation. (Lower power usage in this context will save on battery and may help performance by avoiding power/thermal throttling, especially on passively-cooled laptops. So this is definitely worth going for.) [0] Some historical information about bare-metal use of the ANE is available from the Whisper.cpp pull req: https://github.com/ggml-org/whisper.cpp/pull/1021 Even older information at: https://github.com/eiln/ane/tree/33a61249d773f8f50c02ab0b9fe... . More extensive information at https://github.com/tinygrad/tinygrad/tree/master/extra/accel... (from the Tinygrad folks) seems to basically confirm the above. (The jury is still out for M3/M4 which currently have no Asahi support - thus, no current prospects for driving the ANE bare-metal. Note however that the M3/Pro/Max ANE reported performance numbers are quite close to the M2 version, so there may not be a real improvement there either. M3 Ultra and especially the M4 series may be a different story.)
In Experimenting with Local LLMs on macOS
If anyone's interested in a janky-but-works-great dictation setup on Linux, here's mine: On key press, start recording microphone to /tmp/dictate.mp3: # Save up to 10 mins. Minimize buffering. Save pid ffmpeg -f pulse -i default -ar 16000 -ac 1 -t 600 -y -c:a libmp3lame -q:a 2 -flush_packets 1 -avioflags direct -loglevel quiet /tmp/dictate.mp3 & echo $! > /tmp/dictate.pid On key release, stop recording, transcribe with whisper.cpp, trim whitespace and print to stdout: # Stop recording kill $(cat /tmp/dictate.pid) # Transcribe whisper-cli --language en --model $HOME/.local/share/whisper/ggml-large-v3-turbo-q8_0.bin --no-prints --no-timestamps /tmp/dictate.mp3 | tr -d '\n' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' I keep these in a dictate.sh script and bind to press/release on a single key. A programmable keyboard helps h
Read the rest
ere. I use https://git.sr.ht/%7Egeb/dotool to turn the transcription into keystrokes. I've also tried ydotool and wtype, but they seem to swallow keystrokes. bindsym XF86Launch5 exec dictate.sh start bindsym --release XF86Launch5 exec echo "type $(dictate.sh stop)" | dotoolc This gives a very functional push-to-talk setup. I'm very impressed with https://github.com/ggml-org/whisper.cpp. Transcription quality with large-v3-turbo-q8_0 is excellent IMO and a Vulkan build is very fast on my 6600XT. It takes about 1s for an average sentence to appear after I release the hotkey. I'm keeping an eye on the NVidia models, hopefully they work on ggml soon too. E.g. https://github.com/ggml-org/whisper.cpp/issues/3118.
In Show HN: Whispering – Open-source, local-first dictation you can trust
Actually that's a really good question, I hadn't considered that the comparison here is just CPU vs using Metal (CPU+GPU). To answer the question though - I think this would be used for cases where you are building an app that wants to utilize a small AI model while at the same time having the GPU free to do graphics related things, which I'm guessing is why Apple stuck these into their hardware in the first place. Here is an interesting comparison between the two from a whisper.cpp thread - ignoring startup times - the CPU+ANE seems about on par with CPU+GPU: https://github.com/ggml-org/whisper.cpp/pull/566#issuecommen...
In Run LLMs on Apple Neural Engine (ANE)
Some outdated information about bare-metal use of the ANE is available from the Whisper.cpp pull req: https://github.com/ggml-org/whisper.cpp/pull/1021 Even more outdated information at: https://github.com/eiln/ane/tree/33a61249d773f8f50c02ab0b9fe... In short, the early (M1/M2) versions of ANE are unlikely to be useful for modern LLM inference due to their seemingly exclusive focus on statically scheduled FP16 and INT8 MADDs. More extensive information at https://github.com/tinygrad/tinygrad/tree/master/extra/accel... (from the Tinygrad folks, note that this is also similarly outdated) seems to basically confirm the above. (The jury is still out for M3/M4 which currently have no Asahi support - thus, no current prospects for driving the ANE bare-metal. Note however that the M3/Pro/Max ANE reported performance numbers are quite close to t
Read the rest
he M2 version, so there may not be a real improvement there either. M3 Ultra and especially the M4 series may be a different story.)
In Run LLMs on Apple Neural Engine (ANE)

Showing the 15 most recent of 117 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.