elevenlabs.providers.sgit.ai / experiments / Text handling — normalisation, stitching and seeds
Text handling — normalisation, stitching and seeds
Three questions that decide how a script is written, not how it sounds. Each is a controlled A/B: same voice, same seed, one variable. Together they are the difference between rewriting four script files and leaving them alone.
Your own full key, in your own browser, bounded only by your plan's monthly quota. That is pattern 0 with a ceiling: the narrow case where it is defensible — the key's owner, testing their own key, on their own device — and not a pattern to publish. No key ships in this page: the field below is empty until you fill it.
ElevenLabs offers no per-key spend limit for text to speech, so nothing here caps what a leaked key could cost you except the account's own quota. Use a key scoped in the dashboard to the endpoints this lab needs, and forget it when you are done. The version of this page with no key box at all is pattern three, and it does not exist yet.
1 · Setup
2 · Normalisation — apply_text_normalization
Our scripts spell numbers out — "two thousand seven hundred and eighty-eight" — because two
earlier providers needed it, and because the narration text is also the caption text. If the model normalises
reliably, the script can say 2,788 and the caption band gets its digits back. This is the A/B that
decides whether four script files get rewritten.
| Setting | Latency | Spoken | Listen | What you heard |
|---|
3 · Stitching — previous_text and next_text
A scene-by-scene render generates every scene cold, so each one starts as if the last had never happened. Passing the neighbouring scenes as context costs nothing — context text is not billed as generated characters — and is supposed to keep prosody continuous across the cut. Whether it audibly does is the question.
Not on v3. Observed 8 September 2026: eleven_v3 answers
400 unsupported_model — “Providing previous_text or next_text is not yet supported with the
'eleven_v3' model”. This lab refuses the combination rather than spending a request on it. Test stitching
on eleven_multilingual_v2.
Cold
With neighbours as context
4 · Determinism — does a seed actually repeat?
The vendor calls the seed best-effort. A render that can be reproduced byte for byte in a year is worth knowing about; one that cannot is worth knowing about sooner. Two generations, same seed, same everything: compare the byte length and the word timings.
| Run | Bytes | Words | Last word ends | Max per-word drift |
|---|
5 · Report
6 · Log
1 · Does it normalise numbers reliably?
The scripts in the source estate spell numbers out — "two thousand seven hundred and eighty-eight" — because two earlier engines needed it. But the narration text is the caption text, so the caption band shows the words rather than the digits, and a graph slide that says "2,788 nodes" on screen is better than one that says it in longhand.
apply_text_normalization takes auto, on or off. If auto reliably reads 2,788 as the number and 2026-09-03 as a date, four script files can be rewritten and the caption band improves everywhere. If it is unreliable, the longhand stays. This lab generates all three settings on the same line so the difference is audible rather than argued about.
Note what the alignment gives you here: alignment is over the text you sent, normalized_alignment over what the model actually read — so a caption showing your text should use the first, and a caption showing what was spoken should use the second verified 5 Sep 2026.
2 · Does stitching change the read?
Every scene in a scene-by-scene render is generated cold. previous_text and next_text pass the neighbouring scenes as context so prosody carries across the cut — and context text is not billed vendor docs 5 Sep 2026, so if it helps at all it is free.
On eleven_v3 this is not available at all verified 8 Sep 2026 — the API answers 400 unsupported_model, which the first real render discovered by failing on its very first request. The lab now refuses the combination instead of spending a request to rediscover it, and stitching has to be tested on eleven_multilingual_v2 or a flash model.
The measurable part is small: spoken length usually changes a little. The audible part is the whole point — whether the reel sounds like one read or like sixteen. Listen to the two clips back to back with the following scene in mind.
3 · Does a seed repeat?
The vendor documents seed as best-effort determinism. For a pipeline that wants to re-render a video a year from now and get the same file, "best-effort" is the difference between an archive and a lottery ticket.
Two generations, identical everything, same seed. Compare byte length and per-word drift. Identical byte lengths are promising, not proof — an encoder can produce the same length from a different waveform — but a different byte length settles it in the other direction immediately. If the seed does not hold, the reproducible-render answer is to commit the audio files rather than the parameters.
What this costs, and what it settles
About $0.05 for all three sections on v3 at the default texts vendor docs 5 Sep 2026. What it settles: whether four script files get rewritten, whether the render passes neighbouring scenes, and whether renders are reproducible from parameters or need their audio archived. None of it has been run written, not run.