Guides

    Transcripts as readable documents, not dumps

    Turn a caption dump into a transcript with headings, speaker labels, and optional timestamps so the page is useful even if the video never plays.

    Versely Team8 min read

    An .srt file is a cue list. It is timed, fragmented, and written to be read three words at a time against a moving picture. Pasting it under the video and calling it a transcript is how you get a page nobody can use without hitting play. WCAG 2.2 Success Criterion 1.2.8 Media Alternative (Prerecorded) (Level AAA) asks for something else: an alternative for time-based media that "reads something like a book." Dialogue, non-speech sound, and visual information, in order, in the same language as the video, usable by someone who will never see the player.

    Captions still matter. They are the Level A/AA job, timed to speech, including speaker identity and meaningful non-speech audio, as SC 1.2.2 describes. A transcript is the document you publish next to the video so the page works as text. Those are two outputs from one speech pass, not one file with two names.

    A caption file is not a transcript

    The differences are structural, not cosmetic.

    Caption cue list Transcript as a document
    One or two lines, timed to a shot Paragraphs, grouped by topic
    Line breaks chosen for reading speed Line breaks chosen for grammar
    Timestamps on every cue Timestamps optional, usually at section starts
    Speaker ID only when the face is off-screen Speaker labels on every change of voice
    Useless if the video is missing Complete without the video

    Burned-in captions versus SRT and VTT sidecars is the delivery question for the timed track. This page is the delivery question for the document. If you only have a sidecar, you still have to rewrite it. Cue-by-cue text dumped into a <pre> is not an alternative for time-based media. It is a subtitle file wearing a larger font.

    Versely's transcribe_audio step is the right starting point and the wrong finish. It runs Cartesia's ink-whisper model against a clip and returns plain text, billed per clip by length. That is speech-to-text, not a caption burn-in and not a formatted article. The get a video transcript task and the transcribe audio to text agent path both land on that same plain-text output. Accuracy follows audio quality: overlapping speakers, noise, and heavy accents all degrade it. Read it before you publish it.

    What the raw dump will not give you, even on a clean studio track:

    • Headings where the topic changes
    • Consistent speaker names
    • Non-speech sounds the caption track would have marked
    • Visual beats a deaf-blind reader cannot infer (a slide change, a product held up, on-screen price)
    • Paragraphing

    Those are editorial. Budget them as a pass, the same way you budget a caption readability pass for reading speed, line breaks, and contrast.

    Build the document in five passes

    Work from the plain text, not from the .srt. If you only have a sidecar, convert it so you can see the words without the timestamps shouting. The SRT to VTT converter runs in the browser and never uploads the file; it will not format a transcript for you, but it will get a caption file into a shape you can copy from. Then:

    1. Restore speakers. Every time the voice changes, start a new paragraph labeled with a name. "Host:" and "Jordan Chen, product:" beat "SPEAKER 2." If the automatic transcript collapsed two voices into one block, split it. If you cannot tell who is talking from the audio, say so with [unidentified] rather than guessing.

    2. Paragraph by thought, not by cue. Merge the fragments that were split because a caption line maxed out at 42 characters. Split the run-on that was one caption because someone spoke fast. A transcript paragraph should survive being quoted in an email.

    3. Add headings at topic changes. A 20-minute interview that is one heading ("Transcript") is still a dump. Use the same outline you would use for show notes: the problem, the demo, the pricing question, the close. Headings are how a screen-reader user, and everyone else, jumps.

    4. Treat timestamps as navigation, not as the skeleton. Put a timestamp on each heading, or on a handful of landmark beats, if the reader might want to scrub the video. Do not prefix every sentence with [00:00:04.120]. That is caption syntax. Optional means optional: a press transcript on a newsroom page often wants them; a landing-page explainer often does not.

    5. Describe what the audio does not say. This is the part a speech model will never do. If the host holds up a packaging change, write it. If a slide appears with three numbers, write the numbers. SC 1.2.8 wants visual information in the document, not only dialogue. Keep those descriptions in [square brackets] so they do not read as spoken lines.

    Non-speech audio belongs in the same brackets: [door slam], [laughter], [music fades]. Skip the ones that do no narrative work. Keep the ones a reader would miss.

    Publish it as a page, not as an attachment

    A PDF of the dump is still a dump, and it is worse for search. Put the transcript on the same URL as the video, immediately after the player, with a skip link that is visible, not a "click here for transcript" that opens a new file. Technique G58 is the WCAG version of that placement: a link to the alternative right next to the media.

    If you already treat the transcript as raw material for other content, keep a clean archival copy and derive the public document from it. Do not publish the archival copy. The archival copy can stay verbatim, ums included, for search inside the team. The public document can drop false starts unless the false start is the point.

    A short example of the difference, using the same 20 seconds of audio:

    Caption dump:

    00:00:01,000 --> 00:00:04,200
    so um the thing we changed this
    quarter was the
    
    00:00:04,200 --> 00:00:07,800
    return window it is now
    thirty days not fourteen
    

    Transcript:

    Returns policy
    [00:01]
    
    Jordan Chen, product: The thing we changed this quarter
    was the return window. It is now 30 days, not 14.
    [She points to an on-screen table: 14 days struck through,
    30 days in the new column.]
    

    The second one can be read on a train with the sound off and the video never requested. That is the test.

    A template you can paste

    Copy this, delete the italic coaching, and fill it from the plain-text transcript.

    # [Video title]
    
    Published: [YYYY-MM-DD]
    Duration: [mm:ss]
    Language: [en]
    Speakers: [Name, role]; [Name, role]
    
    [One-paragraph summary a reader can use without playing
    the file. Include the claim, the product, and any number
    that appears on screen.]
    
    ## [First topic]
    [optional timestamp]
    
    Name, role: Spoken paragraph, punctuated as prose.
    
    Name, role: Next paragraph.
    [Visual or non-speech description.]
    
    ## [Second topic]
    [optional timestamp]
    
    Name, role: ...
    

    House rules that keep the template from rotting:

    • Names are stable across the document. Do not switch from "JC" to "Jordan" halfway.
    • Numbers match the on-screen graphic, not the speaker's slip, unless you are quoting the slip on purpose. Note the correction in a bracket.
    • Do not invent a visual you did not check. If you did not watch the section, you cannot write the bracket.
    • Link the transcript heading in the page's table of contents the same way you link any other section.

    The speech pass is cheap relative to a reshoot. The editorial pass is the part most teams skip, which is why so many "transcripts" are still cue lists. Run transcribe_audio, then spend the next hour on speakers, headings, and brackets. That hour is the difference between a dump and a document.

    FAQ

    Do I still need captions if I publish a transcript?

    Yes, if you want Level A/AA for prerecorded synchronized media. Captions are timed to the media; a transcript is not. People who can see the video and cannot hear it need the words on the frames, at the moment they are spoken. A document under the player does not replace that.

    Should every filler word stay in?

    Keep them when they change meaning or character. Cut them when they are debris from a captioner's duty to be verbatim. A public transcript that reads "so um so um yeah the window" is not more honest; it is less readable. Mark a true omission with [...] if you are editing for length.

    Can I auto-generate the headings?

    You can propose them from the outline you already used to shoot the video. Do not trust a model to invent section titles from an uncorrected dump. Wrong headings are worse than none, because they send a jumping reader to the wrong beat.

    Where do timestamps belong on a marketing page?

    On the headings, or not at all. A landing page whose transcript is a column of [00:00:00.000] prefixes looks like an export log. If the video is a 45-minute webinar, landmark timestamps earn their keep. If it is a 40-second spot, skip them.