TTS output formats: Gemini 24 kHz WAV vs Sume 44.1 kHz MP3 default
Gemini 3.8 TTS returns 24 kHz mono 16-bit WAV, or headerless L16 when streaming. Sume TTS defaults to 44.1 kHz 128 kbps MP3 and offers WAV and raw options.

Gemini 3.8 TTS unary calls return audio/wav at 24 kHz mono 16-bit, and streaming returns headerless audio/l16 at 24 kHz. Sume TTS 1.0 defaults to MP3 at 44,100 Hz and 128 kbps, and lets you choose wav or raw with sample rates from 8,000 to 48,000 Hz.
Formats compared
Gemini details are from the speech generation docs, which also list mulaw and alaw mime types. Sume details are from the API reference.
| Item | Gemini 3.8 TTS | Sume TTS 1.0 |
|---|---|---|
| Default | WAV, 24 kHz mono 16-bit | MP3, 44.1 kHz, 128 kbps |
| Streaming | Headerless L16 24 kHz | Not offered |
| Containers | wav, l16, mulaw, alaw | mp3, wav, raw |
| Sample rates | 24 kHz | 8000 to 48000 |
| Encodings | As listed | pcm_f32le, pcm_s16le, pcm_mulaw, pcm_alaw |
Choosing for an ad edit
Edit in WAV and export MP3 once, since each lossy pass adds artifacts. If you join Sume clips with timeline audio, note its default output is wav and mp3 adds priming padding, so a join of mp3 parts can introduce small gaps.
For a phone line, mulaw or alaw at 8 kHz is the match; both products list it. For video delivery, 48 kHz is the usual video rate, and Sume can render at that rate directly.
Do not assume
A higher sample rate does not make speech more natural; it only carries more bandwidth. Compare the clips at the rate you will ship.
Sources
Related posts
More in Developers
- Sume TTS tts_duration_exceeded: splitting a script over 1,200 seconds
Sume TTS fails audio longer than 1,200 seconds with tts_duration_exceeded, and caps a request at 20,000 characters. Split at paragraph breaks and rejoin.
- Sume TTS 409 tts_voice_language_mismatch: confirm and retry safely
A Sume TTS 409 means the voice's language differs from your request. Nothing was charged. Ask the user, then retry with confirm_language_mismatch true.
- $2.00 balance: one 10-second Omni 1080p job, then a 402
With $2.00 in the wallet, one 10-second Omni 1080p job reserves $1.875. A second identical submit gets 402, not 429: balance and queue are separate.
- TypeScript union for Sume bulk queue items, checked with Deno
Model queue items by status so run_id and error are typed per case: null while queued, null for a child that never started, and an exhaustive switch.
Written by Sume