Whistle needs 16 kHz mono audio: extract it from a video first
Whistle takes 16 kHz mono audio. Sume audio detach returns exactly that shape from a hosted video with sample_rate 16000 and channels mono.

To feed a video to Whistle you first need 16 kHz mono audio, because that is the input its model card names. Sume's audio detach job can produce that file from a video you have already imported: send sample_rate: 16000 and channels: "mono", and the default output is sample-exact wav (pcm_s16le).
Sources: the Whistle card (input is 16 kHz mono, one pass up to 30 seconds, windowed beyond) and the Sume audio detach docs, both read on 2026-10-13.
| Field | Value for Whistle | Note |
|---|---|---|
format | wav (default) | pcm_s16le, sample-exact; mp3 is 128 kbps |
sample_rate | 16000 | Allowed: 16000, 44100, 48000; omit to inherit the source |
channels | mono | source is the default |
range | { "start": 0, "end": 600 } | Output cap is 900 s; source cap is 1800 s |
What does the request look like?
The source must be a media.sume.com video in your workspace (import it first with POST /v1/media-imports), and Idempotency-Key is required. The job is async by default; mode: "sync" waits up to 30 seconds and otherwise gives a 202 to poll. The result is kind: audio_detach with an audio_url, duration_seconds, channels and sample_rate.
Whistle handles one pass up to 30 seconds, so cut the range to the stretch you want rather than detaching an hour of audio. Each job uses a flat number of credits (see the rate card) and only worker ffmpeg, no model inference.
curl -X POST https://api.sume.com/v1/audio-detach \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: detach-16k-001" \
-d '{
"video_url": "https://media.sume.com/artifacts/artf_demo/talk.mp4",
"sample_rate": 16000,
"channels": "mono",
"range": { "start": 0, "end": 30 }
}'What fails?
A video with no audio track fails with detach_source_has_no_audio; an off-host URL fails with unsupported_media_source. Check probe.has_audio with a frames-off video inspect first. Do not send ffmpeg flags: the server compiles ffmpeg and rejects codec, af and similar keys with ffmpeg_fields_rejected.
Sources
Related posts
More in Media tools
- Background removal cost on Sume, per product photo
Remove background (RMBG 1.0) on Sume is a fixed price per image, whatever its size, so cutting out a batch costs that price times the photo count.
- Caption videos with an API: the cost on Sume per caption job
Captioning on Sume is a fixed price per caption job for videos up to the documented length, so a batch costs that price times the number of videos.
- Image upscale cost on Sume: the price per image
Image Upscale 1.0 on Sume reserves a fixed amount per image, so upscaling a batch costs up to that amount times the image count.
- Sume Timeline render cost by video length
The Timeline tool bills per output minute, rounded up, so the render cost of a video follows its length. The cost for every length these posts priced.
Written by Sume