Whistle speech model: Apache 2.0, 16.9 MB, offline or Sume STT?

Cactus Whistle is a 16.9 MB Apache 2.0 speech-to-text model for seven languages. Run it on-device, or send the clip to Sume STT for other languages.

5 min readSume
All posts

Yes, Whistle can ship inside an app: its Hugging Face model card lists the license as Apache 2.0, the model as one 16.9 MB file, and the runtime as needing no dependencies and no GPU. It covers seven languages (English, German, French, Spanish, Italian, Dutch and Polish). If your audio is in another language, or you want a transcript tied to a hosted clip, Sume's video-inspect transcript is the server-side route.

The Whistle facts below come from the model card, read on 2026-10-13. The Sume facts come from the video inspect docs.

Whistle model card vs Sume video inspect transcript (read 2026-10-13)
QuestionWhistle (model card)Sume video inspect
LicenseApache 2.0Hosted API; no model license to carry
Size / runtime16.9 MB single file, no dependencies, no GPURuns on Sume workers
LanguagesEnglish, German, French, Spanish, Italian, Dutch, Polishlanguage_code is a hint; auto-detect when omitted
Input16 kHz mono; one pass up to 30 seconds, windowed beyondA media.sume.com clip you already own
BillingYour own computePer audio minute; minimum and maximum hold documented on the rate card

What does the Apache 2.0 license change for a product team?

It tells you the model files can be bundled in a product you distribute, under the license terms. This is a statement about the license shown on the card, not legal advice: read the license text and the licenses of any training data or runtime you add before you ship.

A license does not tell you accuracy on your audio. The card publishes word error rate tables measured over 86,174 utterances against Whisper and Moonshine; treat those as a starting point and test your own clips.

When should a clip go to Sume instead?

Send it to Sume when the language is outside the seven, when the clip already lives in the Sume media library, or when the next step is a Sume job such as captions. POST /v1/video-inspect with transcribe: true returns word timings and, with segmentation.mode: "sentence", sentence segments. Without duration_seconds Sume reserves one minute, with a 600 second hint maximum.

A silent clip fails with inspect_source_has_no_audio, so probe has_audio first. The rate card lists the current credits.

curl -X POST https://api.sume.com/v1/video-inspect \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: whistle-compare-001" \
  -d '{
    "video_url": "https://media.sume.com/artifacts/artf_demo/clip.mp4",
    "frames": 0,
    "transcribe": true,
    "language_code": "en",
    "duration_seconds": 60
  }'

Sources

Related posts

More in Models

All Models posts

Written by Sume