Localize one ad into 14 languages: TTS, captions and render for $4.62

One 450-character ad in 14 shared languages costs $0.42 TTS, $2.80 captions and $1.40 render on Sume: $4.62 total. The loop uses one job per language.

4 min readSume
All posts

Localising one 450-character ad into the 14 languages that MAI-Voice-2.1 and Sume's voice tags share costs $4.62 on Sume: $0.42 for the voiceovers, $2.80 for captions, $1.40 for renders. Captions and rendering dominate; the voice is 9 percent of the bill.

The bill

TTS is 450 characters x $0.0475 / 1,000 = $0.021375, rounded up to 3 cents per job; 14 x $0.03 = $0.42. Video captions are $0.20 flat per job for videos up to 60 seconds: 14 x $0.20 = $2.80. A timeline render is $0.10 per output minute rounded up: 14 x $0.10 = $1.40.

One ad, 14 languages (read 2026-10-05)
StepUnit priceJobsTotal
TTS Router, 450 characters$0.0314$0.42
Video captions, up to 60 s$0.2014$2.80
Timeline render, one minute$0.1014$1.40
Total$4.62

What the voice alone would cost elsewhere

On Microsoft's list rates the same 14 x 450 characters is 6,300 characters: $0.1386 on MAI-Voice-2.1 and $0.0945 on Flash. The voice is not the part of the bill that changes the decision.

The voice loop

Put one line per language in voices.tsv as lang, voice id and the translated text. The loop submits one idempotent job per language and prints the request id.

while IFS=$'\t' read -r lang voice text; do
  curl -sS -X POST https://api.sume.com/v1/tts-router/generate \
    -H "Authorization: Bearer $SUME_API_KEY" \
    -H "Content-Type: application/json" \
    -H "Idempotency-Key: ad-001-$lang" \
    -d "$(jq -n --arg t "$text" --arg v "$voice" --arg l "$lang" '{model:"sonic-3.6",transcript:$t,voice:{id:$v},language:$l}')" \
    | jq -r --arg l "$lang" '[$l, .data.request_id] | @tsv'
done < voices.tsv

Limits

Pick a voice tagged for each language so the mismatch guard stays quiet. Translation is not included in the price; budget it separately. Captions apply to videos up to 60 seconds, so a longer ad needs to be split.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume