Guides

    A 1,001-character script costs another 1,000-character block

    TTS is ceil(chars ÷ 1000 × 12) credits; pacing, pauses and emotion change runtime without changing the bill.

    Versely Team6 min read

    TTS is ceil(chars ÷ 1000 × 12) credits; pacing, pauses and emotion change runtime without changing the bill.

    That is the whole meter. AI voiceover cost per script is the scenario page for it. Speech is the only Versely formula that reads your input rather than the file that comes back. A 1,000-character script is 12 credits. A 1,001-character script is 13, because 1.001 × 12 = 12.012 and ceil takes the next whole credit. The extra character is the start of the next 1,000-character block. The runtime of the take is not in the equation.

    The meter reads the script

    Count the characters you submit, including spaces and punctuation. Divide by 1,000. Multiply by 12. Round up to a whole credit.

    credits = ceil( characters ÷ 1,000 × 12 )

    “Characters” is the literal length of the string. Not words, not seconds, not sentences. A 90-word ad read at 520 characters is 0.52 × 12 = 6.24, which ceil takes to 7. A 250-character hook is 3 credits. A 6,000-character explainer is 72. You can price the script before anyone has heard a word of it.

    Twelve is the rate 16 of Versely’s 17 speech models publish, and the same figure the app’s estimator returns before it charges. The remaining model sits at 6. Pick the voice you want. Do not pick a “cheap” engine on the assumption the headline on the model card is a per-job price — that headline is a catalogue figure in a different unit. Qwen 3 TTS Voice Design is the anchor the cost page uses for that mismatch.

    AI text to speech is the product surface: one script, several engines, the same character bill. Voice-over is the language roster. Neither page meters seconds.

    Why 1,001 is the interesting row

    The cost table lists 250, 500, 750, 1,000, 1,001, 1,500, 3,000, 6,000, 12,000 on purpose. The 1,001 row exists to show the rounding, not to scare you off a comma.

    1,000 characters → 1.000 × 12 = 12.00 → 12 credits. 1,001 characters → 1.001 × 12 = 12.012 → 13 credits.

    You do not pay a second full 12-credit block at 1,001. You pay one extra credit, because ceil works on the product, not on ceil(chars ÷ 1,000) × 12. That second formula would bill 24, and it is not what the backend’s calculateTTScredits does. The title’s “block” is the unit the formula is written in: 1,000 characters at 12 credits. Crossing the thousand starts the next block. Ceil then bills the fractional product as a whole credit.

    The next whole credit after 13 arrives when the product crosses 13, not when you hit 2,000 characters. 1,083 characters is still 13 (1.083 × 12 = 12.996). 1,084 is 14. Trimming a script to land just under a boundary is worth a credit. Agonising over it is not. Four 300-character takes are 4 × 4 = 16 credits because each generation rounds up on its own; the same 1,200 characters in one pass is 15.

    Rewrites resubmit the whole script and are charged again in full. Settle the words before you generate the audio.

    What does not change the bill

    Pacing. Pauses. Emotion. Style instructions. Voice. A slow, dramatic read of 500 characters produces far more audio than a clipped one. Both cost 6 credits. Adding a two-second rest is free. Switching the stock voice is free. A premium-sounding engine is almost never a different rate — 16 of 17 speech models sit on 12.

    That inversion is what makes voiceover cheap and what makes it easy to misjudge. People budget “seconds of narration.” The meter budgets characters of text. If the take runs long, you did not get overcharged. If the take runs short, you did not get a discount. You paid for the script you sent.

    A translation that renders longer on the page costs more because the character count rose. Nothing about the language itself is a multiplier. Count the string you will actually submit. Multi-speaker dialogue is billed on script length and speaker count together, so a two-hander is not the same script at the same price.

    What sits on other meters

    Attaching the finished audio to a video is a separate flat fee that does not scale with length. Add a voiceover to a video is that two-step job: generate_speech, then attach_audio_to_video. The speech line is this formula. The attach line is not.

    Cloning a voice is billed once per sample. After that, the clone generates at the same 12-per-1,000-character rate. Lipsyncing a face to the audio is billed per second of clip. Neither of those is a reason to rewrite the script in a quieter voice.

    /cost is the hub of the twelve credit shapes. This one is shape 2: per 1,000 characters, rounded up. Video is usually per second, or a base-plus-marginal, or a duration tier. Images are flat per call or per megapixel. Do not multiply a speech headline by clip length. Do not divide a video rate into a script.

    Write the length the read needs. Cutting words is the only real optimisation on this meter. Pauses are free. One extra character past a thousand is not free, and it is not 12 credits either. It is the next whole credit on a block priced at 12.

    FAQ

    Is the formula ceil(chars ÷ 1,000) × 12 or ceil(chars ÷ 1,000 × 12)?

    The second. A 1,001-character script is 13 credits, not 24. The 1,000-character block is the unit (12 credits per thousand). Ceil rounds the product to a whole credit.

    Do spaces and punctuation count?

    Yes. The count is the raw length of the string you submit. Every table on the cost page quotes characters, not words. A rough five-characters-per-word average is only a planning hint.

    If I slow the read down, do I pay more?

    No. Two takes of the same script at different speaking speeds produce different runtimes and identical bills. Emotion, pauses, and voice are the same: they change delivery, not the character count.

    Is a long file cheaper than several short ones?

    Slightly, because each generation rounds up on its own. Four 300-character segments cost more than one 1,200-character pass. Do not split a script to “save” unless you actually need separate files.