AI & Services

Whistle Speech Recognition: Cactus's 16.9 MB On-Device STT Model.

Cactus Compute's Whistle is an on-device speech recognition model that runs on a CPU from a single 16.9 MB model file. It supports 7 languages and 17 deployment targets, and the browser demo processes audio on your device after the first model download.

· Huuush

Whistle Speech Recognition: Cactus's 16.9 MB On-Device STT Model

Key takeaways

  1. 1Whistle runs on a CPU from a 16.9 MB model file and transcribes 16 kHz mono audio of up to 30 seconds in 7 languages.
  2. 2The browser demo runs locally through WebAssembly after the first download of the model and runtime engine, and audio does not leave your device.
  3. 3The model file is about 8.6x smaller than Whisper base, and the benchmark speed and WER results should be read separately by Apple M4 Pro conditions and evaluation sets.
A portable voice recorder and a glass sculpture resembling a sound waveform against a red studio background
AI-generated image

If you want to turn speech into text on the device itself, model size and runtime environment are the first things you notice. Whistle, released by Cactus Compute, is an on-device speech recognition model that runs from a single 16.9 MB model file. It runs on a CPU, and even the browser demo processes audio on your device after the first download.

Whistle uses the same C++ engine and container as Cactus's Needle. It aims to handle speech input on small devices, from smartphones and wearables to robots, smart homes, vehicles, and microcontrollers.

You can transcribe right in the browser

The official Cactus Whistle demo downloads the 16.9 MB model and a WebAssembly runtime engine on first run. It converts your recorded audio to 16 kHz mono and processes it inside the browser, and the transcription data does not leave your device. The first download needs an internet connection, but the speech recognition itself happens locally.

It handles up to 30 seconds of input at a time. It supports 7 languages, English, German, French, Spanish, Italian, Dutch, and Polish, and detects the language automatically if you don't specify one. You can also add keywords so expressions like people's names or product names are reflected in the transcript.

Besides transcription, it supports timestamps that give each word's start and end time and probability, and speech embeddings in 80 ms steps.

Loading X post.

Unable to load the X post. Please try again.

Source: X @cactuscompute

A smaller file than Whisper base, and shorter latency on the CPU benchmark

The model file sizes Cactus published are 16.9 MB for Whistle and 145.3 MB for Whisper base. The Whistle model file is about 8.6 times smaller. This compares weight file sizes and is not a comparison of memory usage or total installed size.

The speed measurement is the result of processing 10 seconds of audio on an Apple M4 Pro CPU with each model's official runtime default settings. Time to first token was 11.1 ms for Whistle and 73.2 ms for Whisper base. This metric is the delay before the first result appears.

Under the same conditions, decoding throughput came to 1,319 tokens per second for Whistle and 266 for Whisper base. This value counts only the decoding stage after the audio encoder runs. First-token latency and decoding speed are different metrics, and they don't mean total transcription time dropped by the same ratio.

Word error rate (WER) varied by test set. Whistle recorded a lower WER than Whisper base on LibriSpeech test-clean and test-other, SPGISpeech, Earnings-22, and the FLEURS average. Whisper base was ahead on the averages for TED-LIUM, AMI, and MLS. The Whisper AMI value in the announcement comes from an AMI-IHM subset, which is different from the other models. So rather than generalizing that one model is more accurate on all speech, it is better to look at results on the evaluation set closest to your use case.

Moonshine tiny v2 is also in the comparison table. But Moonshine is English-only, and because the published datasets differ by model, some comparison cells are empty. Cactus says WER was calculated with Whisper normalization and that Whistle's figures cover 86,174 utterances.

How to install it with Python and transcribe a WAV file

You can install the official package from PyPI. For 16 kHz WAV files or raw audio samples, the basic install is all you need.

pip install cactus-needle

import needle

result = needle.transcribe("clip.wav")
print(result["text"])

To convert other sample rates or take microphone input, add the microphone option.

pip install "cactus-needle[mic]"

The transcription result includes the text, the language, the time to first token, and the decoder's tokens per second. You can specify per-word times and probabilities with word_timestamps=True, hints for proper nouns with keywords=["Siobhan", "Krzysztof"], and a fixed language with language="de". To use the microphone directly from the terminal, use needle whistle playground, and to run the same audio through Whistle, Whisper, and Moonshine side by side, use needle whistle compare.

The same engine runs on 17 deployment targets

Cactus provides engines for 17 deployment targets: macOS Apple Silicon, Linux (x86-64, ARM64, ARMv7, RISC-V, MIPS32), Windows (x64, ARM), Android (ARM64, ARMv7, RISC-V), iOS (device and simulator), watchOS, tvOS, browser/WebAssembly, and WASI component. That number counts deployment targets, including architectures and device variants, not operating system types. You can find the code and build files in the GitHub repository and the model weights and platform engines on the Hugging Face model card.

Whistle is an option worth a look for developers who want to build a small CPU-based speech recognition model directly into an app or device. In the public benchmarks it showed a much smaller file size and lower first-token latency than Whisper base, while transcription accuracy had an edge on different sides depending on the evaluation set. You can check first with the official demo and the compare command against the languages, platforms, and real input conditions you care about.

Also read: Microsoft's three MAI real-time voice models, the Grok voice model comparison, and Eleven v4 voice generation.

Frequently asked questions

What kind of model is Whistle?
It is a 16.9 MB on-device speech recognition model released by Cactus Compute that runs on a CPU.
Which languages does it support?
English, German, French, Spanish, Italian, Dutch, and Polish.
Does the Whistle browser demo work offline?
You need to download the model and the WebAssembly runtime engine the first time you use it. After the download, transcription is processed in the browser and audio is not sent off your device.
Is it more accurate than Whisper?
Results differ by evaluation set. Whistle showed lower WER on the averages for LibriSpeech, SPGISpeech, Earnings-22, and FLEURS, and Whisper base was lower on the averages for TED-LIUM, AMI, and MLS.
Which platforms can it run on?
Cactus lists 17 deployment targets, broken out by architecture and device variant, including the browser and WASI.

Related articles