Sume TTS Router output formats: WAV on Sonic, MP3 on Eleven
Sume's Sonic rows return mp3 or wav up to 48 kHz. Eleven rows return mp3 only, and three of them only mp3_44100_128. Pick by the format you need.

If you need WAV from the Sume TTS Router, use a Sonic row. The catalog on main lists eight formats for Sonic (mp3 at 44.1 kHz in 192, 128, 96 and 64 kbps, mp3 22.05 kHz at 32 kbps, and wav at 48000, 44100 and 24000), while Eleven rows return mp3 only: v4 and v4 Turbo list six mp3 options, and Eleven v3, Multilingual v2 and Turbo v2.5 list only mp3_44100_128.
Source: packages/api-contract/src/tts-router-models.ts on origin/main b28f3b0 (read 2026-10-13).
| Rows | Formats |
|---|---|
| Sonic 3.6, 3.5, 3, latest, preview, 2, turbo | mp3_44100_192, mp3_44100_128, mp3_44100_96, mp3_44100_64, mp3_22050_32, wav_48000, wav_44100, wav_24000 |
| Eleven v4, Eleven v4 Turbo | mp3_44100_192, _128, _96, _64, _32 and mp3_22050_32 |
| Eleven v3, Multilingual v2, Turbo v2.5 | mp3_44100_128 only |
Why does the container matter for lip sync?
Sume's timeline audio docs say mp3 adds priming padding again at every edge when files are joined, and recommend wav if you will join the file again or if the file drives lip sync. A Sonic wav also avoids a lossy step before a lip sync job, whose audio limit is 10 MB.
How do I ask for wav?
Send the structured output_format that TTS 1.0 already accepts. The catalog helper maps container: "wav" and sample_rate to ids such as wav_48000; a combination not listed for the model is refused.
curl -X POST https://api.sume.com/v1/tts-router/generate \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: wav-line-001" \
-d '{
"model": "sonic-3.6",
"transcript": "Free shipping this weekend only.",
"voice": { "id": "YOUR_SONIC_VOICE_ID" },
"output_format": { "container": "wav", "sample_rate": 48000 }
}'Sources
Related posts
More in Developers
- Sume TTS Router voices: the sonic and eleven families
GET /v1/tts-router/voices lists voices for one family, sonic or eleven. A model speaks only with voices from its own family, so pick the model first.
- Sume webhook Send test vs Redeliver: only one replays a real job
Send test posts a dummy webhook.test payload to a URL you type. Redeliver re-sends the real terminal event for one job with a fresh signature. Do not swap them.
- Sume rejects localhost webhook URLs: test locally with a poll fallback
Sume only accepts public HTTPS webhook URLs and rejects localhost and private networks. For local work, poll the job and keep webhooks for a deployed endpoint.
- Tokio JoinSet and Semaphore: eight Sume clips, abort on a 402
Run Sume video jobs from Rust with reqwest, a Tokio Semaphore, and a JoinSet that collects clips as they finish and calls abort_all on a 402.
Written by Sume