elevenlabs.providers.sgit.ai / The first video — what the render actually did
The first video — what the render actually did
On 8 September 2026 the path that had never made a sound made one. Two failures, one prediction wrong, one nobody made, and a measurement that closes an open question — and a two-minute video at the end of it.
Prose from the video vault at commit 7d1916aca5f3, 7 September 2026. Processed from the video-pipeline brief, published raw at /briefs/2026-09-07__brief__video-pipeline/. When the vault moves ahead, this page is behind — and says so rather than guessing.
This page changed state on 8 September 2026. verified 8 Sep 2026 A key was supplied by the project lead for one run, held in one command's environment and written to no file. The video and every material that made it live in an encrypted vault, not in this repository — the repository carries the report and the findings, which is the half that is useful to a reader. What follows is what the run found; the plan it followed is further down, unchanged.
0 · What the first run found
Four of the five predictions in the handover brief were testable. One was confirmed, one was wrong for this account, one could not be tested, and one failure nobody predicted stopped the very first request.
Confirmed — and it was the one called most likely
pcm_44100 is refused below the Pro tier
403 subscription_required: "Output format 'pcm_44100' is only available on the Pro tier and above." verified 8 Sep 2026 The shim asks for raw PCM to avoid a decoder; on anything below Pro that is a dead path, and the documented fallback — MP3 plus decodeAudioData — is the right one.
Nobody predicted this
Stitching is rejected outright on v3
400 unsupported_model: "Providing previous_text or next_text is not yet supported with the 'eleven_v3' model." verified 8 Sep 2026 The pipeline passes neighbouring scenes by default and this site's own text-handling lab offered the same combination, so the first request failed before any audio existed. The lab now refuses the combination rather than sending it.
Prediction wrong, for this account
eleven_v3 runs on a free-tier key
It is listed by GET /v1/models and it generated all nine scenes, with stability: 0.5 accepted and no 422. verified 8 Sep 2026 The guide's worry was reasonable and this account did not share it — which is why the answer had to be run rather than reasoned.
Scoped, not bounded — in one response body
The key said exactly which permission it lacked
Creating a pronunciation dictionary returned 401: "missing the permission pronunciation_dictionaries_write". verified 8 Sep 2026 The platform names a missing permission precisely and has nothing equivalent to say about spend. The only ceiling on that key was the free tier's 10,000 characters a month — which is the argument on §5, arriving as an error message.
0b · The measurement that settles the drift question
This estate has reported 100–500 ms of drift over two minutes across four reels since September, cause unattributed. Decoding every MP3 to PCM and comparing with the alignment:
-shortestour encoder, not their speech verified 8 Sep 2026--window-size of 1080every slide silently cropped until it was measuredSo the drift is not in the audio. A render that advances by the alignment is correct; one that trusts an encoder to stop when the audio does is not — and this render proved it by doing exactly that, adding 14 seconds across ten scenes before the bug was found. The fix is -t <alignment end> instead of -shortest.
That is a question closed, a fortnight after it was asked, for the price of decoding nine files.
0c · What it cost, and where it is
eleven_v3a free-tier key, so it was paid in quota rather than moneyThe video, the nine narrations, the alignments, the slides, the subtitles and the findings are in an encrypted vault, not in this repository. A report site should carry the report; 9 MB of media per reel belongs where media belongs, and the estate already has a place for it. What is published here is what a reader can use: the numbers, the failures, and the method.
What this run cannot tell you is how it sounds. The agent that made it cannot listen to it. Every figure above is measured; no claim is made about the quality of the read, or about how eleven_v3 pronounces sgit — the site's oldest open item is still open, and the first person to play the file closes it.
1 · The pipeline, in one paragraph
A script file is the source of truth and is written first: scenes, each with the narration that is spoken and drawn on screen in the caption band, a separate four-to-eight-word caption for the muted viewer, and a shot — a URL, optional steps to click or scroll the page into the right state, and annotation targets. A capture script drives Chromium, resolves each target to a real element, paints a spotlight on it and screenshots. A render script composes each still into a slide, narrates it with whichever provider is named, records the result in real time through a vendored recorder, and remuxes. ffmpeg makes the MP4; a frames script gives you stills to judge it without watching; a doc script writes a storyboard. The closing slide of every video prints the measured numbers of its own making, including the API cost.
Four reels have been made this way, with a local model and with a hosted one measured 2–3 Sep 2026. The narration provider is a swappable shim, and this vendor is the fourth — the one that has never run written, not run.
2 · What this provider would add that the shipped reels do not have
Every item is a claim the report already makes. Making the video with it is the demonstration, which is the reason to bother.
| What | Why it matters here | State | |
|---|---|---|---|
A speed control on a paid voice — voice_settings.speed, 0.7–1.2 | The incumbent has none, and a portrait cut lost a third of its script rather than 15% of its pace measured 2 Sep 2026 | {{badge:docs | 5 Sep 2026}} |
Character-level timestamps → a real .srt | YouTube's auto-captions render "2,788 nodes" as words and get product names wrong every time. Our own sidecar is strictly better and free once the alignment exists | verified 5 Sep 2026 | |
| Chapters to the sentence rather than to the scene | From the same alignment array, with no second call | written, not run | |
| A pronunciation dictionary | In this pipeline the narration text is the caption text, so sgit dot ai is on screen where a viewer reads it as a typo. A lexicon moves the hack off the screen | written, not run | |
| A seed, and prosody continuity across scenes | A reproducible read, and a reel that sounds like one take rather than sixteen | {{badge:docs | 5 Sep 2026}} |
The video that writes itself: one about the timestamps API, whose own subtitles were generated from the timestamps it is describing, with the cost of making it printed on its closing slide. That is §8 and §3 argued in ninety seconds, and no vendor page can do it.
3 · What it would cost
projected — the arithmetic, not an invoice.
| Workload | Characters | eleven_v3 @ $0.10/1k | flash @ $0.05/1k |
|---|---|---|---|
| One scene (the 187-character bench sample) | 187 | $0.019 | $0.009 |
| A 2-minute landscape reel, ~260 words | ~1,600 | $0.16 | $0.08 |
| A 4-minute landscape reel, ~600 words | ~3,600 | $0.36 | $0.18 |
| A portrait cut of the same, tighter script | 60–70% of the above | — | — |
| A re-render after a script fix | full price again | — | — |
Budget about $1.50 for a first video including the three or four re-runs a first script needs, and draft on flash at half the price vendor docs 5 Sep 2026. The render prints its own cost on the closing slide; the account's character counter is the ground truth, and comparing the two once is an experiment nobody has run.
4 · The script rules that cost time when broken
Measured on six cuts, and repeated here because they are the ones that bite measured 7 Sep 2026:
- 2.1 words per second. Count words before any audio exists. Ten scenes want 200–260 words including intro and outro.
- The intro previews; scene one starts. Otherwise the viewer hears the same sentence twice.
- The caption is not the narration. Four to eight words, different from the sentence spoken over it.
- Element targets, never hand-typed rectangles. Hand-typed ones were ±15 px off and a human spotted it on the storyboard.
- Anchor above the target. The resolver takes the first match at or below the anchor, so anchoring on the sentence under a table finds the next table, off-screen.
- Read every still before rendering. About three seconds each, against a render you would otherwise throw away.
- A portrait cut must land under 3:00 with real margin — 2:51, not 2:58 — or the platform will not treat it as a Short.
5 · Before spending a render: where the unrun path probably breaks
Four predictions from the pipeline's author, who wrote the path from the vendor's reference and could not reach the API to test it written, not run verified 4–5 Sep 2026. Run one scene, not a reel, and work through these first.
Most likely
pcm_44100 may not be on the plan
The shim asks for raw PCM so the bytes go straight into a Float32Array with no decoder. PCM output formats are gated to higher subscription tiers, so on a Creator-tier key this is likely to come back 401 or 422 naming the output format.
The fix is six lines: ask for mp3_44100_128 and decode it in the page with decodeAudioData, returning the buffer's own sample rate rather than the constant. Everything downstream reads the sample rate from the return value. Write down which way it went — "PCM worked on tier X" is as useful a finding as the failure.
Second most likely
eleven_v3 may not be enabled, or may reject the settings
Two risks in one: v3 may not be available for API use on a given key, and it treats stability as three discrete modes rather than a continuum, so the shim's default of 0.5 can 422.
The fallback is eleven_multilingual_v2, which is the stable workhorse and takes a continuous stability. For narrating somebody else's compliance standard: Natural or Robust, never Creative — hallucination in a video about a standard is not a risk worth taking.
Check, do not assume
The alignment may not come back in the expected shape
The shim reads alignment and normalized_alignment and writes both beside the render log. Dump one response before trusting it. If a model returns no alignment, the whole SRT, chapters and karaoke chain is unavailable on that model — and since the alignment is the entire reason to be here, the answer is to change model rather than to work around it.
Wastes a whole run
The render fires two generations at once
Against a concurrency limit nobody has measured written, not run. A 429 halfway through a render wastes everything generated before it.
Run the first real reel with a pool of one. It is slower and it cannot 429. Raise it once the probe has found the wall — and then write the number down, because nobody publishes it.
6 · Three videos worth making first
Each is short, and each demonstrates a claim this site already makes.
- "The bench, in ninety seconds." Paste a key, list voices, generate with timestamps, watch the words light up, build the SRT. Ship its own
.srtalongside it and say so on screen — the subtitles are the demonstration, not a nicety. - "Four patterns." Slides, no capture at all. The strongest ninety seconds available, because it is the argument.
- "What it cost and what went wrong." §8 and §9 read aloud over the real numbers. Nobody else publishes this, which is exactly why it is worth a video.
Landscape first, then a portrait cut under 3:00, with a title, a description and chapters.
7 · Where video would live, when there is one
Decided in advance, because the answer is cheaper before there are twenty files:
- MP4, H.264 + AAC,
+faststartas the delivered file — not WebM measured 7 Sep 2026. - The
.srtbeside the MP4, referenced from the<video>element as a<track>. - A folder per reel holding the script, the stills, both cuts, the storyboard, the logs and the findings — the same shape the pipeline already produces, because on a site whose thesis is show the working, the storyboard and the findings are themselves the content.
- Watch the limits. 100 MB per file is hard and Pages is a soft 1 GB with 100 GB a month of bandwidth. A 4 MB reel is nothing; twenty reels plus stills is worth a thought before it is a problem.
8 · Why this is a plan and not a film
Three reasons, in order of weight, and the briefs page carries the full account.
This site has never held a key verified 7 Sep 2026, and its acceptance list says so as a property rather than a circumstance. Every verified chip here came from a human's own browser. Trading that for a two-minute film would be a bad exchange.
The toolchain is not this site's to hold. The estate's rule is that component code stays canonical where it lives and these sites hold the context; vendoring a render pipeline into a report site contradicts it, and everything the brief is actually worth — the measured numbers, the failure points, the script rules — transfers without the 724 KB.
The interesting half needs a person. The brief's own closing section is what I could not tell you: whether the shim works, which names the model mispronounces written, not run, how the API behaves under the render's concurrency written, not run, whether the drift is in the audio or the recording measured 3 Sep 2026. Those are answered by one person, once, with a key.
9 · What the first run would settle
The ledger rows that would change state, in the order a single afternoon would close them:
| Claim | Today | After one render |
|---|---|---|
| The ElevenLabs render path written, not run | written, not run | verified, or a documented failure — both are findings |
| The four first-run predictions written, not run | predictions | four answers, and the one that broke is the interesting one |
| The lexicon written, not run and the names test written, not run | a hypothesis nobody has heard | a list of what the model gets wrong |
| The concurrency wall written, not run | unknown | a number, published, that nobody else publishes |
| Where the drift comes from measured 3 Sep 2026 | unattributed since September | attributed, in about ten minutes of arithmetic |
That is the most valuable content this site could gain, and it cannot be written by the machine that built it.