ihateaudio

Subtitle Generator

Timed captions, written by listening to the file.

Drop a video or audio file here

or paste one from your clipboard

MP4 · MOV · MKV · WEBM · MP3 · WAV and moreYour file stays on your device. Always.

How to use it

  1. Drop the audio or the video file in. Video works directly — the audio is pulled out of it and the video itself is never uploaded or altered.
  2. Press Generate. Whisper listens in overlapping windows and records when each phrase starts and stops, which is what turns a transcript into subtitles.
  3. Check the cues in the list. Timing is where automatic subtitles go wrong, and the two things worth scanning for are cues that overlap and cues that flash past too quickly to read.
  4. Download SRT for almost anything, or VTT for the web. Both contain the same cues; the formats differ only in punctuation and a header line.

Where the timings come from

Whisper was trained to write out not only words but also timestamps, as tokens in the same stream. So when it transcribes, it is periodically predicting "and the time is now about here" alongside the text, which is why one model produces both the words and the cues rather than needing a second alignment pass.

That design has a consequence worth knowing. Because the timestamps are predictions rather than measurements, they are influenced by what the model expects speech to look like, not only by what it heard. Cues therefore drift a little on unusual material — very fast speech, heavy accents, overlapping voices — in the same way the words do. When a transcript is accurate the timings almost always are too, and when the words start going wrong the timings go with them.

What makes subtitles readable rather than merely correct

Reading speed is the constraint nobody thinks about until they see their own subtitles on screen. A cue needs to be on long enough to read at roughly fifteen to twenty characters per second, which means a forty-character line wants at least two seconds. Automatic cues follow the speech instead, so a quickly-spoken clause gets a cue that is technically accurate and physically unreadable.

Line length is the other one. Two lines of about forty characters is the broadcast convention, and it exists because the eye takes in a short line in one movement. A single long line forces a horizontal scan that competes with watching the picture.

Neither of these is something a model can fix for you, because both are trade-offs against fidelity: making subtitles readable means condensing what was actually said. That is an editorial decision, and it is why professional subtitling is a craft rather than a conversion.

Getting the text right first

Clean audio produces better subtitles, and the cheapest wins are the same as for transcription: the noise remover if the recording is hissy or roomy, and the volume booster if speech sits close to the noise floor. If there is music under the dialogue, the vocal remover is unexpectedly effective, since separating a voice from an arrangement is exactly what it does.

If you want the words without the timings, the audio transcriber produces the same transcript as prose with paragraph breaks, which is the better starting point for an article or a set of notes.

Questions

SRT or VTT?
SRT if you are unsure. It is the older and more widely understood format, and YouTube, Premiere, Resolve, VLC and every social platform accept it. VTT is the format HTML video wants, so use it if the subtitles are going into a <track> element on a web page. The cues are identical either way — VTT adds a WEBVTT header and writes the fractional second with a full stop where SRT uses a comma.
How accurate is the timing?
Good enough to read along with, and not frame-accurate. Whisper produces timings by emitting timestamp tokens as it goes, at a resolution of about twenty milliseconds, and it is more confident about where speech starts than where it stops. In practice cues tend to land slightly early and run slightly long, which is the forgiving direction — a subtitle appearing a moment early is barely noticeable, while one appearing late is immediately wrong.
The cues are too long to read.
Whisper breaks at natural pauses in speech rather than at a comfortable reading length, so a long unbroken sentence becomes one long cue. Broadcast practice is roughly two lines of forty characters, held for at least a second and a bit. If you are subtitling something properly, splitting the long cues by hand afterwards is the step that separates readable subtitles from a transcript with times attached.
Can I use this on a video without re-encoding it?
Yes, and you should. A subtitle file sits alongside the video rather than inside it, so nothing about the video is touched. Most players load a .srt automatically if it has the same filename and sits in the same folder. Burning subtitles into the picture is a separate and irreversible step, and it is worth being sure of the text first.
It wrote something during a silent passage.
That is hallucination, and silence is where it happens. The model was trained on speech and will occasionally produce the most probable thing a person might have said when handed a stretch with no speech in it. In subtitles it is more visible than in a transcript, because the cue appears on screen over a silent shot. Running the silence remover first helps, though it shifts every timing, so for subtitles it is usually better to generate first and delete the spurious cues.
Does it label who is speaking?
No. Identifying speakers is a separate task called diarisation and needs a different model. For a two-person interview you will be adding the dashes or names yourself, which is quick in any text editor since the cues are already split at the pauses where speakers tend to change.
What languages?
English only. This is the English-specific Whisper model, which is more accurate at English than the multilingual one of the same size. It will produce output for other languages and that output will be wrong.