How many words fit in a 30-second voiceover, and what it costs

A 30-second voiceover is about 75 words or 450 characters at a planning pace of 150 wpm. Sume TTS bills characters, so here is the length-to-cost table.

4 min readSume
All posts

A 30-second voiceover is about 75 words if the narrator reads at 150 words per minute, a common planning pace and not a Sume guarantee. At roughly 6 characters per word including the space, that is about 450 characters, which Sume TTS prices at $0.0475 per 1,000 characters, so 3 cents after rounding up to a whole cent.

What does each length look like in words, characters and cents?

Spoken length depends on the voice, the language and the punctuation, so treat this table as a first draft of the script, not a promise. The cost column uses the Sume catalog rate of $0.0475 per 1,000 characters, a 1-cent minimum per job, and rounds each job up to a whole cent.

Planning table at 150 words per minute and 6 characters per word (assumptions, not measurements)
Voiceover lengthWordsCharactersExact chargeBilled per job
15 secondsabout 38225$0.01072 cents
30 seconds75450$0.02143 cents
60 seconds150900$0.04285 cents
90 seconds2251,350$0.06417 cents
2 minutes3001,800$0.08559 cents

Why count characters instead of words?

Words are a poor unit for the bill. The TTS request counts characters, and the OpenAPI text says spaces and punctuation count toward usage. A script full of short words costs less per word than one full of long words, and a Korean or Japanese script has far fewer spaces, so count the string you will actually send.

The same function works in any language because it only counts characters. Paste your script into it before you submit.

import math

def tts_cents(script: str) -> int:
    # $0.0475 per 1,000 characters = 47.5 micro-dollars per character
    # 10,000 micro-dollars per cent, 1-cent minimum, rounded up
    return max(1, math.ceil(len(script) * 47.5 / 10_000))

print(tts_cents("x" * 450))   # 3
print(tts_cents("x" * 900))   # 5

How do I measure the real pace of my voice?

Submit the first draft and ask for word timings with timestamps: { words: true }. The completed job returns monotonic words[] with start and end seconds, so the last word's end is your real narration length. Divide your character count by that length to get your own characters-per-second figure, then size the rest of the script with it.

If the take runs long, the generation_config.speed multiplier accepts 0.6 to 1.5. Cutting copy is usually better than speeding the voice up: a 10 percent cut is 45 characters on a 450-character script.

What is the ceiling for one request?

One request carries up to 20,000 characters, so a 30-second line never needs splitting. Long scripts are covered in the reel script length guide. The exact request fields are in the Sume OpenAPI document.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume