AI & IT toolsAI Tools

Planning AI narration length: characters per second, spelling out numbers, and fitting each line to its shot

From a real 105-line ElevenLabs narration for an 8-minute explainer: why a script planned at 5 characters per second came out more than 30% short, how to set the rate, how to spell numbers the way they are spoken, how to make one file per line while passing the neighboring text, and how to re-time shots from measured speech.

AZTechnology11 min read

한국어English

Based on: the ElevenLabs Text to Speech API docs (Create speech), checked on November 4, 2026. The numbers come from the narration of one explainer video, 105 lines in Korean. Figures 1, 2 and 4 are charts made from that record. Figure 3 is a screenshot of the official docs.

The first problem you hit when making narration with an AI voice is length. You write the script to fit each shot, then the speech ends much earlier and the picture keeps going in silence. Or the script runs long and the speech spills past the cut.

This guide uses the record of a 105-line narration made with ElevenLabs for an explainer of just over 8 minutes. The script was planned at "5 characters per second", and the real speech came out about a third shorter than planned. Here is why, how to plan next time, and how to make one line at a time and fit it to the shots. Checking pronunciation by transcribing the result is covered in Checking AI narration with faster-whisper.

By the end of this guide you can:

  1. Estimate script length from characters per second.
  2. Spell out numbers and Latin letters the way the voice should say them.
  3. Make one file per line while passing the text before and after it.
  4. Re-time shots from the measured speech length.

1. Narration that came out short

The script had 6 acts (A0–A5), 105 lines, and 3,177 characters including spaces and punctuation (Korean). Each shot had a planned speaking time, adding up to 671 seconds. Shot lengths were planned at 5 characters per second (0.2 seconds per character).

Adding up only the speech, the real total was 450.0 seconds, 67% of the plan. Figure 1 shows every act was short by about the same share, and not one of the 105 lines came out longer than planned.

Horizontal bar chart. A0 planned 20 s, real 12.6 s; A1 116 s, 78.5 s; A2 147 s, 98.2 s; A3 150 s, 103.0 s; A4 184 s, 123.2 s; A5 54 s, 34.4 s Figure 1. Planned length (grey) and real speech length (orange) for each act. Every act is about a third shorter (chart)

The real rate was about 7.1 characters per second. The narration was first made with a cloned voice and later remade with a different voice. The two versions totaled 446.4 and 450.0 seconds of speech, almost the same. Changing the voice did not change the pace much.

Figure 4 zooms into one line. A 30-character line was given 6 seconds; the speech ended at 4.55 seconds. For the remaining 1.45 seconds the picture runs with no voice.

Waveform. A grey dashed box from 0 to 6 seconds (the plan) with a blue waveform up to 4.55 seconds and an orange vertical line at 4.55 s Figure 4. Waveform of one line (30 characters). The grey box is the 6 seconds planned in the script; the orange line is where the speech ends, 4.55 s (chart)

2. Setting characters per second

Characters per second is the exchange rate between script length and time. Get it wrong and the whole script is off by the same ratio. Here, a script planned at 5 was read at 7.1, so the length became 5 ÷ 7.1 ≈ 0.70 of the plan.

Planned rateExpected length of the 3,177-character scriptCompared with the real 450 s
5 per secondabout 635 s41% too long
6.5 per secondabout 489 s9% too long
7 per secondabout 454 sabout right

The expected lengths in this table are calculated from the script's character count (3,177).

The formula is "characters ÷ characters per second". Count characters including spaces and punctuation; most editors and word counters show a "with spaces" count.

For this voice and this setting (speed 0.9), 6.5–7 characters per second was the right plan for Korean. Other languages, voices, speaking styles and sentence lengths give different rates. The surest way is to make about three lines first and time them before writing the rest. Like measuring before tailoring a suit, time the voice with three lines, then write the remaining script.

3. Matching with the speed setting

ElevenLabs voice settings (voice_settings) include speed. The docs say 1.0 is the default and values below 1.0 slow the speech down. The same three lines at 1.0 and 0.9 came out about 10% longer at 0.9 (Figure 2).

Horizontal bar chart. A0_01 speed 1.0 2.04 s, 0.9 2.23 s; A1_01 4.09 s, 4.55 s; A1_02 4.04 s, 4.46 s Figure 2. File length of the same three lines at speed 1.0 (blue) and 0.9 (orange) (chart)

For a calm explainer, 1.0 felt slightly fast, so we chose 0.9. But slowing to 0.9 is nowhere near enough to close a 33% gap. Going down to about 0.8 adds roughly another 12%, but the voice can start to drag and sound less like itself. It is best to treat speed as a knob for tone, not for fixing length; its useful range is narrow.

When the speech came out shorter than planned, there were three choices:

ChoiceWhat you doThings to weigh
① Shorten shotsCut shots to the measured speech lengthThe video gets shorter. This record took this path (section 5)
② Slow downSpeed around 0.8About 12% longer. The voice may drag
③ Add to the scriptAdd explaining sentencesMore content; regenerate and re-measure

4. Write numbers the way they are spoken

An AI voice decides by itself how to read what it sees. Leave it to guess how to read "3" next to a counter word, or how to say "GPU", and it will sometimes get it wrong. So we kept two texts per line: the script (text) and the text sent to the voice (tts_text). The on-screen subtitle uses the script; the voice uses the spelled-out text. The example sentences below are new ones made up for this guide; the rules on the right are the ones we actually used for the 105 lines.

Script (subtitle)Text sent to the voiceRule
"bought 3 apples""bought three apples", in the native Korean number wordKorean uses native number words before counters like items, rounds and animals
"uses two GPUs"the letters written as they are said ("ji-pi-yu")Latin letters and abbreviations written as spoken
"25 meters high""twenty-five meters high", in the Sino-Korean number wordUnits like meters and tons take Sino-Korean numbers
"2.5 meters""two point five meters"Decimal point spelled as "point"
"1.5 times the start""one point five times the start"Same for ratios

Spelling everything out made the 105 voice texts 3,299 characters, 4% longer than the script (3,177). Because spelled-out numbers add characters, section 2's length estimate is more accurate when you count the voice text.

The API also has apply_text_normalization (auto, on, off), which rewrites things like numbers into readable form. Even so, for languages where number words depend on context, as in Korean, spelling out important numbers yourself is the safer choice.

5. One file per line, fitted to shots

We did not make all 105 lines at once; we made one file per line. That way, fixing one line means regenerating only that line. The catch is that separate files can break the flow between lines. The fields for that are previous_text and next_text.

ElevenLabs API docs. Create speech in the left menu, and descriptions of previous_text, next_text, previous_request_ids and next_request_ids Figure 3. The previous_text and next_text fields in the Create speech docs (ElevenLabs docs screenshot)

Put the sentence just before this line in previous_text and the one just after it in next_text. It is like playing an actor the lines around theirs and asking them to read only their own. A line after a question then sounds like an answer, and the last line of a paragraph sounds like an ending. In this record we passed neighbors only within the same act. Where an act changes, the picture changes too, so a fresh start in tone does not sound odd.

The other settings:

SettingValueWhat it does
speed0.9Speaking speed (default 1.0)
stability0.5Lower means a wider emotional range and more variation between takes
similarity_boost0.85How closely to follow the original voice
style0.15How much to exaggerate the original style
use_speaker_boostonCloser to the original speaker
seed1234A fixed number so the same text gives a similar result

seed is a fixed number used instead of rolling dice. The docs say the system makes a "best effort" to be deterministic, so the same result is not guaranteed. Still, when you remake one line, it drifts less from the others.

Follow along:

  1. Split the script into lines, and give each line an ID (for example A1_01) and a voice text.
  2. Make the first three lines only, time them, and check characters per second (section 2).
  3. Make the remaining lines. Within the same act, pass the neighbors in previous_text and next_text.
  4. Measure the speech length of each line: leave out the short silence at the start and end of the file and count only from first sound to last.
  5. Set each shot length to the measured speech plus a little room to breathe.
  6. Use transcription to find misread lines and remake only those.

In step 5 of this record, the plan of 126 shots and 680 seconds became 497.0 seconds (8 min 17 s) based on speech length. Of those, 31 shots fell under 3 seconds, and the shortest was 2.23 seconds. Many shots under 3 seconds make the picture change too fast, so the next job is merging two short shots or picking shots that can hold longer.

6. Terms to check first

If you plan to earn money from videos with an AI voice, check the plan's terms first. On the ElevenLabs pricing page, the commercial license starts at the Starter plan and is not listed for the free plan. Cloning your own voice is fine; cloning someone else's voice without permission is not. Copyright questions about AI output are covered in AI content and copyright.

Exercises

  1. Pick three lines from your script, count characters including spaces, and work out the length at 5 and at 7 characters per second.
  2. Rewrite "2 drones flew 1.5 km in 30 minutes." as text for the voice. (Example answer: "Two drones flew one point five kilometers in thirty minutes.")
  3. Make one line at speed 1.0 and 0.9, and measure the length difference as a percentage.

Common mistakes and fixes

SymptomCauseFix
Narration ends before the shot and the picture runs silentCharacters per second planned too lowTime the first three lines and re-plan (section 2)
Numbers are read oddlyLeft the reading to the voiceSpell numbers out in the voice text (section 4)
Tone breaks between linesLines made separately without neighborsPass previous_text and next_text (section 5)
One remade line sounds differentResults vary a little each timeKeep a fixed seed and the same settings
Very low speed makes the voice dragUsing the speed knob to fix lengthKeep speed for tone; fix length with shots or the script (section 3)

Summary

Measure characters per second with the first three lines (about 7 here), spell numbers as spoken, make one file per line and pass the neighbors, and re-time shots from the measured speech.

Whether the narration matches the script is checked by transcription in Checking AI narration with faster-whisper.

References

KEEP EXPLORING

Read next

The faster-whisper GitHub repository home page. Repository name, file list, and the About box: Faster Whisper transcription with CTranslate2AI & IT tools
AI Tools12 min read

Checking AI narration with faster-whisper: make SRT subtitles and compare them with the script

Transcribe 60 seconds of Korean AI narration with faster-whisper's small and medium models, write an SRT subtitle file, and compare each line with the script to find words the voice may have read wrong. Real results and timings included.

Top of the Artificial Analysis text-to-image leaderboard AA-Image-T2I v2.1. Rank 1 GPT Image 2.5 Sunburst (max) 1222, rank 2 GPT Image 2.5 Flare (max) 1207, rank 3 GPT Image 2 (high) 1186, rank 4 Nano Banana 2.1 1176, rank 5 MAI-Image-2.6 1166, rank 6 Grok Imagine Image 2.0 1166, rank 7 Nano Banana 2 1140, price per 1,000 images on the rightAI & IT tools
AI Tools13 min read

Choosing an AI image model in autumn 2026: GPT Image 2.5 and Nano Banana 2.1 compared

Names, release dates, prices, and leaderboard positions of GPT Image 2.5 (Flare and Sunburst) and Nano Banana 2.1, the image models that arrived in autumn 2026, checked against official sources, plus simple rules for picking one by use.

A low-poly desert at sunset. Four launchers fire missiles, a three-ring aim circle with 90% sits among drones marked by red diamonds, and the top left shows remaining launchers 4/4 and remaining missiles 26 (Godot run screenshot)AI & IT tools
AI Tools18 min read

Building Godot game scenes with Claude Code: notes from an air defense game and a canyon flight game

Based on real notes from making an air defense mini game, a penalty shootout, and a canyon flight game with Godot 4.7.2 and Claude Code, this guide covers what to prepare, the first plan, moving Blender models over, automatic checks, and the play-and-fix loop, along with the snags we hit.

Higgsfield pricing page switched to Monthly. Four plan cards: Starter $19, Plus $59, Ultra $129, For Teams from $65AI & IT tools
AI Tools15 min read

Reading Higgsfield pricing and credits: what each plan buys and what we actually spent

Read Higgsfield's four individual plans by monthly and annual price, monthly credits, available models, and web-only unlimited generations, then use the real credit log from one sponsored video to estimate the cost of a single clip.

Unreal Engine 5.8 viewport (Korean interface). Three white cubes in a row on a wide floor casting long shadows, with AI_Cube_1, AI_Cube_2, AI_Cube_3 in the Outliner on the rightAI & IT tools
AI Tools13 min read

Letting Claude Code work in Unreal Engine 5.8 with the MCP plugin: from enabling the experimental feature to placing three cubes

Enable the Unreal MCP plugin that arrived in Unreal Engine 5.8 as an experimental feature, connect Claude Code, get a summary of the level, and have it place three cubes. It also covers what to watch out for with an experimental feature and how to undo changes.

The AA-Video-I2V v2.1 leaderboard on Artificial Analysis. 1st Dreamina Seedance 2.5 1152, 2nd Utopai X 1144, 3rd Dreamina Seedance 2.0 1135, 4th MiniMax H3 (768p) 1129, 8th MiniMax H3 Max 1115, 9th Wan 3.0 1111, 11th FLUX 3 1071, 13th Grok Imagine Video 1.5 1050, 14th Gemini Omni Flash 1.1 1043, 17th Kling 3.0 1080p (Pro) 1000AI & IT tools
AI Tools18 min read

How to choose an AI video model: recommendations for live action, animation, film, and motion

Eight AI video models sorted by use: live action, animation and games, film-style camera work, human motion and physics, sound and lip-sync, keeping the same character, and saving money, with leaderboard evidence and results from our own use.