Game NPC barks: 150 short lines in one TTS job (43 cents) vs 150 jobs

Short lines cost 1 cent each as separate Sume TTS jobs. One job with sentence slices returns the same 150 lines as separate WAV files for 43 cents.

5 min readSume
All posts

Sume TTS rounds each job up to a whole cent with a 1-cent minimum, so 150 barks of 60 characters cost 150 cents as 150 jobs. Put them in one script and request sentence segmentation, and the same lines come back as 150 sample-exact WAV slices for about 43 cents. The saving comes entirely from not paying the minimum 150 times.

Why do tiny jobs cost more per character?

The rate is $0.0475 per 1,000 characters. A 60-character line is 0.285 cents, which rounds up to 1 cent alone. Anything up to 210 characters rounds to 1 cent as its own job, so short lines waste most of what they pay for.

150 lines of 60 characters (planning arithmetic on the Sume catalog rate)
ApproachJobsCharacters billedCharge
One job per line1509,000 total150 cents
One job, all lines19,00043 cents ($0.4275 rounded up)

How do I get separate files back?

Send the lines as one transcript, one sentence per line with terminal punctuation. Ask for timestamps: { words: true }, segmentation: { mode: "sentence" } and a wav container. Per the OpenAPI schema, segmentation requires word timestamps, returns gapless segments[], and with a wav or raw container each segment includes a sample-exact audio_url. With mp3 you get timings but no per-segment files.

Segments follow the sentence boundaries of the script, in order, so segment N is line N as long as each line ends in its own full stop, question mark or exclamation mark. Abbreviations can split a sentence early, as covered in the abbreviation post. Compare the segment count with your line count before importing files into the game.

What are the trade-offs?

Everything in one job shares one voice, language and speed. Barks for a different character need a different job. Also keep the whole script within 20,000 characters, which is about 330 lines of this size. One bad line means regenerating the batch or doing a 1-cent single-line job for the fix. Per-job cost applies again at that point, and that is fine for a one-off.

The default pause rule gives each segment the 70 ms after its last word, and boundary_lead_ms (0 to 500) changes it. Trim any tail you do not want inside your game engine.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume