Forgot the TTS language field? Sume only infers Korean and Japanese
Omit language on a Sume TTS request and the voice check assumes English. Sume infers ko or ja only when Hangul or kana outnumber Latin letters.

A common bug in a TTS integration: the script is Spanish, the voice is Spanish, and the audio has an English accent. The usual cause is a missing language field.
What Sume does
Without language, the provider reads the text as English. Sume adds one inference, based on letter counts in the transcript: Hangul is sent as Korean when it outnumbers Latin letters, and kana as Japanese when it outnumbers both Hangul and Latin letters. Anything else, including Spanish, French, German and Chinese with Han characters, stays English unless you say otherwise.
Fix
- Always send
languageas a short code such ases,fr,de,pt. - Use a voice tagged for that language in the voice library.
- With no
language, a Spanish text defaults to English for the voice check, so a Spanish voice gets a 409tts_voice_language_mismatchbefore any job is queued or charge made. An English voice does not trigger it, which is how the English-accent bug gets through. - Keep a unit test that sends one Spanish sentence and asserts the field is present in your request body.
Edge cases
A script that mixes Korean and English is inferred by counts, so a line with more Latin letters than Hangul stays English. Set ko yourself, or split the script per language and join the audio with Timeline concat.
Related posts
More in Developers
- 404 format_run_wrong_path: read a Sume run by its own id
A 404 on GET /v1/formats/{handle}/{slug}/runs/{run_id} is a wrong URL, not a lost run. The did_you_mean hint names GET /v1/format-runs/{run_id}.
- Run stuck queued? queue.state waiting vs runtime_unavailable
queue.state waiting is normal pickup; runtime_unavailable means nothing claimed the run. Position is always null. Back off, then contact support.
- 'frame_images is only accepted on auto': use the flat frame fields
Video Router refuses frame_images and input_references on a pinned model. Send image_url, end_image_url or reference_*_urls there, or move to POST /v1/videos.
- frame_images beats input_references on Sume /v1/videos
If one /v1/videos request has both frame_images and input_references, Sume runs image-to-video and uses the frames. How to keep a style reference working.
Written by Sume