Museum audio guide with TTS: 30 stops of 600 characters cost 90 cents

A 30-stop audio guide at 600 characters per stop is 18,000 characters: 90 cents on Sume TTS as 30 jobs, plus how to join a full tour past the 20-part limit.

5 min readSume
All posts

Short answer

A 30-stop museum audio guide with 600 characters of commentary per stop is 18,000 characters of text. On Sume, each stop as its own text-to-speech job costs 3 cents, so the whole guide is 90 cents. Per-stop files are what a guide app wants: visitors jump to a number, they do not play a tour start to finish.

The arithmetic: 600 characters at the public rate of $47.50 per million is 2.85 cents, and each job is rounded up to a whole cent, so 3 cents. Thirty jobs are 90 cents. Spaces and punctuation count toward the 600.

The MAI figures come from the Unite.AI report on the October 1, 2026 launch (read 2026-10-07). Per-job rounding on Sume matters at this size, so the table shows both the rounded and unrounded cost.

Cost of 30 stops x 600 characters = 18,000 characters (list prices read 2026-10-07)
OptionPrice basisWhole guide
Sume TTS, 30 jobs$47.50 per 1M characters, rounded to the cent per job$0.90
Sume TTS, one 18,000-character jobSame rate, one rounding$0.86 (one file, no stop boundaries)
MAI-Voice-2.1$22 per 1M characters, per Unite.AI$0.396
MAI-Voice-2.1-Flash$15 per 1M characters, per Unite.AI$0.27, but Flash makes up to 45 seconds of audio per call

Why one job per stop

The single big job is four cents cheaper, but it gives you one file. A guide needs 30. It would also run into the 1,200-second limit on one TTS job if the stops are long enough to exceed it. One job per stop sidesteps both, and a stop you rewrite later costs 3 cents to redo instead of 86.

Voice and language

Use one voice id for all 30 jobs, and set the language field to the language of the commentary. If the voice's language and the request disagree, the API returns a 409 tts_voice_language_mismatch before it creates a job or charges anything, and you retry with confirm_language_mismatch: true only after checking. A multilingual guide is the same guide again: 30 jobs per language, with a voice for that language.

The full-tour file

Some venues also want a continuous tour file. Thirty files exceed the 20-part limit of one concat job, so join in two levels: stops 1 to 15 into one file, stops 16 to 30 into another, then join those two. That is three concat jobs at $0.01 each, so 3 cents. The joined file is capped at 1800 seconds.

Practical checks

  • Count characters before you submit: the rate is per character of the transcript, and emoji count by JavaScript string length, so count the way the API does.
  • Send a different Idempotency-Key per stop so a retry never doubles a charge.
  • Keep the stop number in your own table next to each audio_url; the job result does not know about your numbering.

Keeping stops independent

Stops that visitors can open in any order should be separate files, each its own job. Joining them into a tour file is optional and only useful for a fixed route. Keep one file per stop in your app, and use the 20-part concat job only for a printed or one-file tour.

Rewriting one stop then costs one job, not a new tour. A stop of 600 characters is 2.85 cents unrounded and bills as 3 cents.

  • One job per stop.
  • Join only fixed routes.
  • Rewriting one stop costs one job.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume