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.

5 min readSume
All posts

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.

Audio detach fields for a speech-model input (read 2026-10-13)
FieldValue for WhistleNote
formatwav (default)pcm_s16le, sample-exact; mp3 is 128 kbps
sample_rate16000Allowed: 16000, 44100, 48000; omit to inherit the source
channelsmonosource 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

All Media tools posts

Written by Sume