How many TTS jobs a script needs: the 20,000-character cap and cost

Sume TTS takes up to 20,000 characters a job at $0.0475 per 1,000. A table of jobs and cost for 3,000 to 100,000 characters, plus a paragraph-safe splitter.

4 min readSume
All posts

A script of up to 20,000 characters fits one Sume text-to-speech job, and longer scripts need one job per 20,000-character chunk or less. The pricing page, read 2026-10-03, lists Text to speech at $0.0475 per 1,000 characters, counts spaces and punctuation, and gives a maximum of 20000 characters. So a 60,000-character script is at least three jobs and $2.85 at list rate.

What does each script length cost?

Cost is linear in characters, so splitting does not change the price; it only changes how many jobs you track. The table rounds jobs up, assuming you chunk at the cap.

TTS jobs and list-rate cost by script length, rates read 2026-10-03
Script charactersMinimum jobsList-rate cost
3,0001$0.143
20,0001$0.95
45,0003$2.138
60,0003$2.85
100,0005$4.75

How do I split without cutting a sentence?

Split on paragraph breaks, not at character 20,000. The function below packs whole paragraphs into each chunk and prints the job count, so you can check the plan before spending anything. Pass each chunk to its own TTS job with its own idempotency key, then join the takes with Timeline audio concat, which accepts 1 to 20 parts and joins in the sample domain with no gap at the seams.

def chunk(text, limit=20000):
    parts, current = [], ""
    for paragraph in text.split("\n\n"):
        candidate = (current + "\n\n" + paragraph) if current else paragraph
        if len(candidate) <= limit:
            current = candidate
        else:
            if current:
                parts.append(current)
            current = paragraph
    if current:
        parts.append(current)
    return parts

script = "\n\n".join(["A paragraph of narration. " * 40] * 60)
parts = chunk(script)
print(len(script), "characters ->", len(parts), "jobs")
print([len(p) for p in parts])

What does the cap not tell you?

  • A character cap is not a length cap. The related post on the 1,200-second limit covers how long a job can run, and I did not re-verify that figure on a public page today.
  • Characters are counted the way the pricing note says, with spaces and punctuation. If your script has emoji or Hangul, count the way the API does before you trust your own total.
  • More than 20 chunks means more than one concat job, because concat takes at most 20 parts.

Sources

Related posts

More in Pricing

All Pricing posts

Written by Sume