Independent. No commercial relationship with ElevenLabs — no credits, no programme, no agreement — checked 5 September 2026. Disclosures · how every claim here is evidenced

elevenlabs.providers.sgit.ai / experiments / Align and verify — subtitles for old renders, and a QA gate for new ones

Align and verify — subtitles for old renders, and a QA gate for new ones

Two endpoints, both priced as speech-to-text, both cheap enough to run on everything you have ever published. One gives subtitles to videos rendered before any of this existed; the other catches the mistakes we have actually shipped.

Which pattern this is — read before you paste anything

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 · Forced alignment — subtitles for audio you already have

Send a file you already rendered and the exact words it speaks; get back per-word timing over your text. Priced as speech to text, so a two-minute reel is a fraction of a cent. The transcript must be plain text — not JSON — and it must be what the audio actually says, in the order it says it.

Nothing sent.
#wordstartend

2 · Scribe as a QA gate — does the video say what the script says?

Transcribe the finished file and diff it against the script, both sides normalised: lower-cased, punctuation stripped. This catches the two failures this pipeline has actually shipped — a number spoken wrongly, and an outro claiming "no API cost" over a slide printing $0.1554.

#ExpectedHeard

3 · Log

Forced alignment — the cheapest useful thing on the list

POST /v1/forced-alignment takes the audio (up to 3 GB or 10 hours) and the transcript as plain text — not JSON — up to 675,000 characters, and returns per-character and per-word timing over the text you supplied. It is priced at the speech-to-text rate of $0.22 per hour of audio vendor docs 5 Sep 2026.

The estate this site comes from has six rendered cuts and the exact words each one speaks. Aligning all six costs under two cents and produces an SRT for every one — including the two cuts rendered with a local model that will never have API timestamps. Nobody has done it written, not run.

Two ways to get it wrong, both easy:

Scribe as a QA gate

POST /v1/speech-to-text with model_id=scribe_v1 returns the text with per-word timing, at the same $0.22 per hour. On its own that is a transcript; diffed against the script, it is a gate.

Two failures this pipeline has shipped and then caught by eye would have been caught automatically:

  1. a number spoken wrongly, which nobody notices until it is on YouTube;
  2. an outro saying "no API cost" over a closing slide printing $0.1554 — because one outro served both a free cut and a paid one measured 3 Sep 2026.

The diff normalises both sides — lower-cased, punctuation stripped — and lists what it could not line up. It is a word-level alignment diff, not a semantic one: it will flag "two thousand seven hundred and eighty-eight" against "2,788" as a mismatch, and that is correct behaviour, because whether the model normalises numbers reliably is a separate question with its own lab.

A provider-independent gate is worth more than a provider's own transcript check: the incumbent returns a transcript of what it spoke and reported zero mismatches across 61 generations measured 3 Sep 2026, which is reassuring and unfalsifiable — it is the same system marking its own homework.

What is unverified here

Everything. The request shapes come from the vendor's reference vendor docs 5 Sep 2026 written, not run; the response parsing in this lab handles both the word-array and character-array shapes because we have not seen either one come back. If the field names have moved, the log will say so before the table does.