Upload a recording and download a JSON transcript: the full text, segments with start and end times, word-level timestamps. Automating it? See the WhipScribe API. Files over 500 MB continue on the upload page. Packs from $4, credits never expire. · packs from $4 for 500 minutes, credits never expire.
How it works
One upload, then a file any programming language can read.
MP3, M4A, WAV, FLAC, OGG, WebM, MP4 or MOV, up to 10 hours or 5 GB per file. The box on this page takes files up to 500 MB; larger files continue on the upload page.
When the transcript is ready, open the export menu and choose JSON. The file is named after your transcript.
Python, JavaScript, a database or a notebook all read JSON natively, so there is no custom parser to write before you start.
Inside the file
Read the keys you need and ignore the rest; the same transcript feeds every export.
The whole transcript as one string, ready for full-text search or a quick pass through a language model.
The transcript split into passages. Each has a start time, an end time and its text.
Words inside each segment carry their own start and end times, so you can highlight the word being spoken, cut on word boundaries or align text to video.
The detected language and the length of the recording sit alongside the text, handy when you process a batch of files.
Uses
Timings are what make a transcript useful to software.
Index each segment as its own document with its start time. A search hit can then open the recording at the moment the words were said.
Chunk by segment instead of by character count, and keep the time as metadata so an answer can point to where it came from.
Build captions in your own format, or highlight each word as it plays, straight from the word timings.
Measure segment lengths, count words, or measure pace and pauses across a set of recordings.
The file, key by key
A shortened example of the JSON download. The keys are the ones the transcription worker writes; a real file has one segment per passage and can carry a few more bookkeeping keys, which you can ignore.
{
"language": "en",
"duration": 1834.6,
"text": "Welcome back to the show. Today we are talking about ...",
"segments": [
{
"start": 0.0,
"end": 3.42,
"text": "Welcome back to the show.",
"words": [
{"start": 0.0, "end": 0.48, "text": " Welcome", "score": 0.97},
{"start": 0.48, "end": 0.81, "text": " back", "score": 0.99},
{"start": 0.81, "end": 0.95, "text": " to", "score": 0.99},
{"start": 0.95, "end": 1.12, "text": " the", "score": 0.99},
{"start": 1.12, "end": 1.60, "text": " show.", "score": 0.98}
],
"speaker": null
}
]
}
| Key | Type | What it holds |
|---|---|---|
| language | string | The detected language code, such as en, es or tl. |
| duration | number | Length of the recording in seconds. |
| text | string | The whole transcript as one string. |
| segments[].start, .end | number | Seconds from the start of the recording. |
| segments[].text | string | The passage, trimmed. |
| segments[].words[] | array | Each word with start, end, text and score. Words keep their leading space, so joining them rebuilds the sentence. |
| words[].score | number | The model's confidence for that word, from 0 to 1. Low scores are the words to check first. |
| segments[].speaker | null | Present but empty. Speakers are named in the summary, key quotes and chapters, not per segment. |
import json
t = json.load(open("transcript.json", encoding="utf-8"))
print(t["language"], round(t["duration"] / 60), "min")
for seg in t["segments"]:
print(f'{seg["start"]:8.2f} {seg["text"]}')
# words the model was least sure of
low = [w for s in t["segments"] for w in (s["words"] or []) if (w["score"] or 1) < 0.5]
jq -r '.segments[] | "\(.start)\t\(.text)"' transcript.json
| You need | Export | Why |
|---|---|---|
| Word timings, confidence, structure for code | JSON | The only export with per-word times and scores. |
| Captions for a video player | SRT or VTT | Cues already split for reading on screen. |
| A document to read or edit | DOCX or TXT | Paragraphs with timestamps, no markup. |
All five come from the same transcript and every pack includes all of them.
JSON is priced like every export: by the minute of audio. A one-hour recording uses 60 minutes, $0.48 from the $4 pack (500 minutes), $0.36 from the $12 pack or $0.29 from the $24 pack. Files run up to 10 hours or 5 GB each. The free preview covers the opening minutes; the JSON download needs a pack. Automating it from code needs API access, which comes with the $24 pack or Workspace ($19 a month), not with the smaller packs.
Pricing
After that, $4 buys 500 minutes, $12 buys 2,000 minutes and $24 buys 5,000 minutes. Credits never expire and there is no subscription. JSON costs the same as every other export.
Cost example: a single 30-minute recording is $0.24 on the $4 pack. An archive of 400 hours is 24,000 minutes; five $24 packs give 25,000 minutes for $120, and the 1,000 minutes left over stay on your account. See pricing for details.
FAQ
A top-level object with language, duration in seconds and the full text, plus a segments array. Each segment has start, end, text, a words array with each word's start, end, text and confidence score, and a speaker field that is left empty.
No. Each segment has a speaker field, but it is empty. Speakers are identified and named in the summary, key quotes and chapters instead.
Yes. Words carry a score from 0 to 1, the speech model's confidence, or null where the model gave none. Sorting by it is a fast way to find the words worth checking.
Yes, with API access. It comes with the $24 pack (5,000 minutes) or Workspace at $19 a month, not with the smaller packs. On the website, any pack opens the JSON download.
Upload the recording on this page, wait for the transcript, then choose JSON from the export menu. You can preview with no signup; a pack from $4 opens the full transcript.
Yes. Each segment lists its words with start and end times, alongside the segment's own start time, end time and text.
Yes. The WhipScribe API accepts files from your code and returns the same transcript formats. See the API page to get started.
Yes. All downloads come from one transcript. SRT, VTT and DOCX are formatted for people and video players; JSON keeps the structure and the word timings for software. Speakers are identified and named in the summary, key quotes and chapters.
Search indexes, retrieval for AI tools, custom caption formats, word highlighting in a player and pace analysis are the common ones.
MP3, M4A, WAV, FLAC, OGG, WebM, MP4 and MOV, up to 10 hours or 5 GB per file. The box on this page takes up to 500 MB and larger files continue on the upload page.
Packs from $4, credits never expire. After that, packs are $4 for 500 minutes, $12 for 2,000 minutes or $24 for 5,000 minutes, and credits never expire.
Instant preview, no signup. A free account keeps every transcript in one searchable library.
For the recordings you have now: see transcription services from $4 and audio transcription services.