Skip to content
ReviewRamble

The weekly brief

AI, reviewed, in your inbox.

  • New reviews of tools, models, MCP servers and repos, with the verdict up front
  • Re-checked prices and ratings when something changes
  • New analysis pieces as they are published

Models, agents, MCP servers and the tools actually worth your time.

One email a week. Unsubscribe with the link in any brief. How we use your email

Whistle

A 16.9 MB speech-to-text model in seven languages that runs on a CPU with no dependencies; a community port fits it on a $10 chip.

Reviewed by Andrew Miller · Updated

Visit Whistle Open source

Our rating

3.8/5

Usable seven-language speech recognition in 16.9 MB, from a vendor that keeps the engine closed and its telemetry on.

What is Whistle?

Whistle is a speech recognition model from Cactus Compute, a Y Combinator-backed on-device AI company, released on 2 October 2026. The whole model is one 16.9 MB file quantised to 2 to 4 bits. It transcribes English, German, French, Spanish, Italian, Dutch and Polish, detects the language itself, returns per-word timestamps and can output an audio embedding instead of text. A keyword list biases decoding towards names and jargon you expect.

It runs on the same C++ engine as Cactus's Needle tool-calling model, so one binary can take a voice clip and return tool calls in a single step. Its decoder is laddered: every depth from 2 layers up is a usable model, so you can trade accuracy for size at load time.

The weights are under Apache 2.0, but the engine ships as prebuilt binaries rather than source. The widely shared demo of Whistle on a $10 ESP32-S3 microcontroller, covered by Better Stack on 19 October, is an independent reimplementation built for that video (andrisgauracs/whistle-esp32 on GitHub); Cactus ships no microcontroller build.

Is Whistle worth it?

Whistle earns attention for its size-to-accuracy ratio. At 16.9 MB it is 8.6 times smaller than Whisper base and, on Cactus's figures, beats it on LibriSpeech test-clean (4.31% word error rate), test-other (10.49%), SPGISpeech, Earnings-22 and the FLEURS average. On an Apple M4 Pro, a 10-second clip reaches the first token in 11.1 ms against 73.2 ms for Whisper base, and decodes at 1,319 tokens a second.

The comparison is chosen with care. Whistle is not compared with Whisper large-v3-turbo or Parakeet, which are far more accurate and far larger. Whisper base still wins on TED-LIUM, on AMI meeting audio (Whistle scores 26.07%) and on the MLS multilingual average, so lectures and meetings are its weak ground. The rival scores are as published by their authors rather than rerun, which Cactus states openly.

The $10 chip story is real but needs the footnote. The Better Stack port cut the decoder to four layers (14.5 MB) and wrote its own C engine to run it on an ESP32-S3 with 16 MB of flash and 8 MB of PSRAM. A 2-second command takes 6.3 seconds to transcribe, depth 4 scores 11.7% word error rate on 73 LibriSpeech clips, and Dutch is recognised poorly by the model itself. Its notes also find that the official engine transcribes ten seconds of microphone noise as "Thank you", so a voice-activity gate is not optional.

The terms are the main reservation. The weights are Apache 2.0, but the engine is a prebuilt library with no published source, so porting it means reverse-engineering, as the ESP32 port did. The Python package and binaries send anonymous usage counts by default until you set NEEDLE_TELEMETRY=0, an odd default for a product sold on audio never leaving the device.

Where it earns its place

  • A smart-home hardware start-up shipping a Linux-based hub

    Add offline voice control in English, German and French without a cloud bill

    Load whistle.cact and needle3.cact in one engine on the hub's ARM board; a clip goes in and tool calls come out, with keyword biasing for room and device names. No per-minute fees; budget engineering time for a voice-activity detector.

  • A hobbyist or embedded engineer prototyping on microcontrollers

    Run real transcription, not a fixed phrase list, on a $10 ESP32-S3

    Follow the community whistle-esp32 project: an N16R8 board, an INMP441 microphone and the 4-layer 14.5 MB model. Expect about 6 seconds per short command and weak Dutch.

  • A mobile developer at a note-taking app

    Offer on-device dictation with word timestamps for seeking and editing

    pip install cactus-needle for prototyping, then link libneedle.a in the iOS or Android app. Set NEEDLE_TELEMETRY=0, and test on meeting-style audio, where Whisper base still scores better.

Before you commit

Setup
pip install cactus-needle, then needle.transcribe("clip.wav"); the engine and weights download once and are cached. Native folders ship a needle CLI, libneedle.a and needle.h per platform.
Integrations
Python package; C API (needle_load, needle_transcribe, needle_embed); prebuilt engines for macOS, Linux on x86, ARM, RISC-V and MIPS, Windows, Android, iOS, watchOS, the browser and WASI. LoRA fine-tuning can add a language.
Data and privacy
Inference runs entirely on the device and works air-gapped. The package sends anonymous usage counts by default; NEEDLE_TELEMETRY=0 and DO_NOT_TRACK=1 turn that off.
Cost at scale
No licence or per-minute fees. Cost is device CPU time: a 2-second command takes 6.3 seconds on a 240 MHz ESP32-S3 in the community port, and a 10-second clip reaches the first token in 11.1 ms on an M4 Pro.
Limits
One pass covers 30 seconds, windowed beyond that; transcripts are capped at 320 tokens per pass. Music and noise can produce invented text. No microcontroller build from Cactus, and no engine source.

What’s good

  • 16.9 MB, CPU-only, no dependencies
  • Seven languages with automatic detection and word timestamps
  • Beats Whisper base on LibriSpeech, Earnings-22 and FLEURS, per Cactus
  • Pairs with Needle to turn speech into tool calls in one call

What’s not

  • Compared only with small rivals; weaker on meetings and lectures
  • Engine is closed source; weights alone are open
  • Telemetry on by default
  • Can transcribe noise as words; needs a voice-activity gate

Best for

Device makers who need offline voice commands in European languages on hardware too small for Whisper.

Whistle alternatives

Whistle: common questions

Is Whistle worth it?
Usable seven-language speech recognition in 16.9 MB, from a vendor that keeps the engine closed and its telemetry on. We rate it 3.8 out of 5.
How much does Whistle cost?
Free open weights under Apache 2.0; the prebuilt engine is free to download. Cactus sells fine-tuning and deployment help on its platform; prices are not published.
What are the downsides of Whistle?
Compared only with small rivals; weaker on meetings and lectures; engine is closed source; weights alone are open; telemetry on by default; can transcribe noise as words; needs a voice-activity gate.
Who is Whistle best for?
Device makers who need offline voice commands in European languages on hardware too small for Whisper.
How much does Whistle cost for a team or in production?
No licence or per-minute fees. Cost is device CPU time: a 2-second command takes 6.3 seconds on a 240 MHz ESP32-S3 in the community port, and a 10-second clip reaches the first token in 11.1 ms on an M4 Pro.
Is Whistle safe for company data?
Inference runs entirely on the device and works air-gapped. The package sends anonymous usage counts by default; NEEDLE_TELEMETRY=0 and DO_NOT_TRACK=1 turn that off.
What are the best Whistle alternatives?
The closest alternatives we have reviewed are Whisper large-v3-turbo, Parakeet TDT 0.6B v3 and VibeVoice-ASR.

Answers checked Nov 2, 2026.