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.

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.
| Question | Whistle (model card) | Sume video inspect |
|---|---|---|
| License | Apache 2.0 | Hosted API; no model license to carry |
| Size / runtime | 16.9 MB single file, no dependencies, no GPU | Runs on Sume workers |
| Languages | English, German, French, Spanish, Italian, Dutch, Polish | language_code is a hint; auto-detect when omitted |
| Input | 16 kHz mono; one pass up to 30 seconds, windowed beyond | A media.sume.com clip you already own |
| Billing | Your own compute | Per 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
- An OpenRouter-compatible video API: sume/auto or a pinned model
Sume's POST /v1/videos follows OpenRouter's video generation API field for field. Let sume/auto pick the model, or pin a catalog id like seedance-2.5.
- Image generation API with reference images: POST /v1/images
Send a prompt plus public HTTPS reference images to Sume's POST /v1/images. Pin a catalog model or send sume/auto; the catalog lists each model's limits.
- Video 1.0 and Image 1.0 are retiring soon: move to sume/auto
Sume Video 1.0 and Image 1.0 are retiring soon and already run as aliases for the Auto path. New integrations call /v1/videos or /v1/images with sume/auto.
- Music generation API: the Sume Music Router with Lyria 3.5
Sume's Music Router turns a text prompt into a track via POST /v1/music-router/generate. sume/music-auto picks the engine, Lyria 3.5 today.
Written by Sume