Skip to content

Transcript format

A transcript is one JSON document, the same everywhere: in a project, returned by the transcription service, downloaded as JSON from the editor, and stored in the iPhone app’s project files. A project can move between the phone and a server unchanged.

{
"schema_version": 1,
"language": "en",
"language_detection": "manual",
"duration": 4.0,
"segments": [
{
"id": "a",
"start": 0.0,
"end": 2.0,
"text": "alpha beta",
"words": [
{ "text": "alpha", "start": 0.0, "end": 1.0, "confidence": 1.0 },
{ "text": "beta", "start": 1.0, "end": 2.0, "confidence": 1.0 }
]
}
]
}

Transcript

Field
schema_version1.
languageThe ISO 639-1 code of the spoken language (en, fr, ja…).
language_detectionmanual if the language was chosen, auto if it was detected.
durationThe length of the audio, in seconds.
segmentsA list of segments, in order.

Segment: a run of speech that ends at a pause.

Field
idA string that identifies the segment.
start, endSeconds from the start.
textThe segment’s words as one string.
wordsThe words, in order.

Word

Field
textThe word as written, with its punctuation.
start, endSeconds from the start of the audio, at least 0.
confidence0 to 1, how sure the model was. Defaults to 1.
  • Times are seconds, as numbers, and never negative.
  • Words are in reading order, and a word does not start before the word that comes before it. The editor’s text dialog names the segment and the word where this fails.
  • The captions on screen are made from the words, not from the text of a segment: lines are cut every words per line words, or sooner where the speaker paused.
  • The format has no place for styling. A caption’s look is a separate style.

In the editor, Edit transcript as text shows this JSON with a word to a line, and applies a change as one undoable step. The same dialog imports SRT and WebVTT files (with or without per-word times) and OpenCaptions JSON. An SRT cue has no word times, so its words are spread over the cue, longer words taking longer.