Transcribe Audio to Subtitles
The first run downloads the speech model — about 45 MB for the fast tier, 81 MB for the accurate one, served by this site and cached by the browser afterwards. Nothing is uploaded, and the transcript is machine-made: proofread the wording and the timings before you publish it.
Options
Two tiers of the same model. The fast one is about 45 MB and transcribes roughly twice as quickly; the accurate one is about 81 MB and gets capitalisation and punctuation closer to right. Both run here, and the download happens once per browser. On a long recording, try the fast tier first to check the language is right.
The language being spoken in the recording. There is no automatic option: this build of the model does not detect language, and with none chosen it assumes English. A Chinese recording read as English does not fail — it produces fluent-looking nonsense, which is far harder to notice. Pick the language you actually hear.
.srt plays everywhere, including older editors and TV sets; .vtt is the web format and carries slightly more structure. Both hold exactly the same cues with exactly the same timings, so pick the one the next tool in your chain expects.
This page listens to a recording and writes down what it hears, as a subtitle file: one cue per sentence, with the start and end of each cue placed where the words actually happen. Drop in an interview, a lecture, a voice memo or the audio track of a film that has no subtitle track at all, and you get a .srt or a .vtt that plays in any player. No subtitle track needs to exist beforehand — this is the page for when there is nothing to extract.
The listening happens in the tab. The speech model runs on WebAssembly through onnxruntime, the model files are served from this site, and the only network traffic is that download: about 45 MB for the fast model, about 81 MB for the accurate one, cached by the browser afterwards. The recording is never sent anywhere. If you check the Network panel while a file is being transcribed you will see requests going down for model data and not one byte going up.
What comes out is a machine's best guess, not a transcript of record. Words it mishears stay misheard, and the timings are accurate to roughly the length of a phrase rather than to a frame. Proofread before you publish, and treat the result the way you would treat a first pass typed by a fast human who did not know the subject. This is the same honesty rule the OCR pages follow, and it is the reason this page says so at the top instead of in a footnote.
The recording is cut into 30-second windows with a 5-second overlap, and each window is transcribed on its own. That is what makes long files possible without holding an hour of audio in the model at once, and it is also why cancelling takes effect at the next window rather than instantly. Sentences that straddle a boundary are de-duplicated by dropping anything the next window reports that starts before the previous window ended — the earlier reading wins, because it heard the whole phrase.
Long sentences are split at sentence boundaries, then by a pair of limits: no cue longer than seven seconds and no cue wider than 84 characters, wrapped to at most 42 characters per line. Those are the same limits most broadcasters specify, so the output usually passes a first compliance check without editing.
Frequently asked questions
What happens when the recording is a language other than English?
You have to tell the page which language is spoken, because this build of the model does not detect it. There is no automatic option, and that is deliberate: with no language chosen the model assumes English. A Chinese recording read as English does not fail — it returns confident-looking English words that sound vaguely like the original, which is much harder to notice than an error message. Pick the language you actually hear, and if you are unsure, transcribe thirty seconds with the fast model first and check.
How accurate are the timings compared with a hand-made subtitle?
Good enough to play, not good enough to broadcast unedited. Each cue's start and end come from the model's own segment boundaries, which land on phrase edges rather than on the exact frame a word begins. Where two cues would overlap, the later one is pushed forward and the adjustment is counted in the losses list, so nothing overlaps and nothing goes backwards in time. If a customer needs frame-accurate sync — a subtitling house delivering to a broadcaster — the honest answer is that this output is a draft to be timed by hand, not a delivery.
Why is the fast model offered at all if the accurate one exists?
Because on a long file the difference is the difference between waiting and giving up. Measured on a minute of clear speech, the fast model takes about 3.7 seconds and the accurate one about 7.5 — roughly twice the wait for every minute of audio. The fast model also capitalises more aggressively and sometimes invents punctuation; the accurate one is closer to what a person would write. A common pattern is to run the fast model over an hour-long interview to check the language and the audio quality, then re-run with the accurate one once you know the file is fine.
What does "no speech was recognised" mean when I can hear talking?
It means the model heard nothing it could write down, which has three usual causes: the language setting does not match what is spoken, the speech is buried under music or noise, or the audio track is very quiet. The file itself is intact — the page distinguishes this from a file whose audio could not be decoded at all, because the two need different fixes. Switch the spoken language, or check that the audio track you dropped is the one you meant (a film's commentary track is a different stream from its dialogue).
Can I stop a transcription that is going to take too long?
Yes, and the page is explicit about when it stops. Downloading the model can be cancelled at any moment. During recognition, the model cannot be interrupted in the middle of a window — so cancelling takes effect at the start of the next 30-second window, which on the fast model is a couple of seconds away. Nothing partial is offered as a download. The model stays cached, so trying again does not re-download it.
Does the resulting .srt keep the speaker labels or punctuation?
It keeps whatever punctuation the model produced, which is usually sensible but not reliable, and it does not invent speaker labels: this model does not separate voices, so two people talking turn into one stream of text. Adding speaker labels is a manual job here. If you need them, transcribe first and then edit — the file opens in any subtitle editor, and the cues are already split at sentence boundaries, which makes the pass much quicker than starting from a blank timeline.