TTS Word Timestamps: Create SRT Subtitles
- tts
- subtitles
- timestamps
- srt
- whisper
- guide
Word-level timestamps connect generated speech to the exact text being read. With a start and end time for each word, one TTS result can power SRT subtitles, karaoke highlighting, video captions, audiobook read-along, and language-learning playback.
OfflineTTS adds this workflow to all four browser TTS engines. Generate audio in Kokoro, Kitten, Piper, or Supertonic, then play the result in a waveform interface while the current words are highlighted.
Quick Answer
The browser TTS engines do not consistently provide native word timing. OfflineTTS therefore uses a two-stage strategy:
- Whisper first: transcribe the generated audio locally with a timestamp-capable Whisper model and reconcile recognized words with the original source text.
- Weighted estimate second: if Whisper cannot return a complete, reliable alignment, estimate each source wordโs duration from text weight and total audio length.
Both paths can produce subtitle cues and synchronized playback. Whisper alignment is preferred; estimated timing is a resilient fallback rather than an accuracy claim.
Word Timing vs Subtitle Timing
Word timing stores a start and end time for each token:
[
{ "text": "Private", "start": 0.18, "end": 0.56 },
{ "text": "speech", "start": 0.57, "end": 0.92 },
{ "text": "generation", "start": 0.93, "end": 1.52 }
]
An SRT file normally groups several words into one readable cue:
1
00:00:00,180 --> 00:00:01,520
Private speech generation
Word data is best for fine-grained highlighting and seeking. Grouped cues are better for video players because viewers need time to read a complete phrase.
How OfflineTTS Aligns Generated Speech
1. Generate the Waveform
The selected TTS engine creates PCM audio in the browser. The result panel renders a waveform and exposes play, pause, seek, speed, and download controls.
2. Run Local Whisper
When Synced subtitles is set to Fast or Accurate, OfflineTTS loads a timestamp-capable Whisper model. The generated audio is transcribed locally, so it does not need to be uploaded to a subtitle service.
The selected size changes the trade-off:
- Whisper Tiny downloads faster and is useful for quick drafts.
- Whisper Base requires more storage and processing but can align harder passages more reliably.
For transcription of existing media rather than generated speech, use the speech-to-text app or the SRT and VTT subtitle generator.
3. Reconcile Recognition with Source Text
A raw transcription is not enough. Whisper may normalize punctuation, split contractions, or substitute a similar-sounding word. OfflineTTS compares recognized words with the original text and keeps timing only when the complete source can be mapped safely.
This protects read-along display from silently dropping text. A partial timestamp list would look precise while highlighting the wrong sentence.
4. Fall Back to a Weighted Estimate
If alignment is incomplete, OfflineTTS uses the source text and measured audio duration. It gives different character groups and punctuation different weights, then distributes time across the passage.
The estimate:
- preserves every source word;
- stays inside the actual audio duration;
- supports waveform seeking and highlighted playback;
- creates downloadable SRT cues;
- does not pretend to be a model-derived boundary.
The result panel labels estimated subtitles so users know which path produced them.
Create SRT from TTS
- Open the free TTS app.
- Enter the final version of your script.
- Choose a model and voice.
- Set Synced subtitles to Fast or Accurate.
- Generate speech.
- Wait for the local timing step to finish.
- Press Play to review highlighted words against the waveform.
- Download the SRT file.
Do not rewrite the script after timing is generated. Even a small edit changes source offsets and can invalidate the alignment.
How SRT Cues Are Grouped
Putting every word in a separate subtitle cue is distracting. OfflineTTS groups timed words using:
- sentence-ending punctuation;
- meaningful pauses;
- maximum cue duration;
- readable phrase length;
- the exact source text when source offsets are available.
The grouping can be used directly for a draft, but a video editor may still need line breaks, speaker labels, style rules, or platform-specific safe areas.
Karaoke Highlighting
During playback, the result panel compares the audio playerโs current time with the word intervals. The active word receives a visual highlight, and clicking a timed word seeks the waveform to that point.
This pattern is useful for:
- lyric-style or karaoke captions;
- pronunciation practice;
- narrated product demos;
- accessible reading support;
- checking whether a generated voice skipped or repeated text.
The highlight remains available when timing uses the estimate fallback, although the boundary can lead or lag the spoken word.
Video Automatic Subtitles
For short-form video, a practical workflow is:
- finalize the script;
- generate TTS audio and SRT together;
- review timing in the waveform player;
- import both files into the video editor;
- adjust cue breaks around cuts and on-screen motion;
- burn in captions or attach the SRT as a subtitle track.
If the video already has narration, skip TTS and generate captions from the media with the subtitle generator.
AI Audiobook Read-Along
Long books benefit from paragraph or sentence synchronization rather than an enormous single transcript. The ebook-to-audio tool parses EPUB, TXT, and text-based PDF files into chapters and paragraphs, then caches completed audio locally.
Its reader highlights the active paragraph and remembers reading position. Word-level TTS timing can add finer synchronization for passages where a karaoke-style experience is useful, while paragraph boundaries keep long projects manageable.
Language Learning
Synchronized text helps learners connect spelling, pronunciation, and rhythm. Use it to:
- repeat a sentence from the waveform;
- slow playback while keeping the same cue sequence;
- compare Kokoro and Supertonic pronunciation;
- click an unfamiliar word to hear the surrounding phrase;
- export SRT for a lesson video.
Whisper alignment can still make mistakes with code-switching, names, and beginner-oriented slow speech. Review the text rather than treating automatic timing as a pronunciation authority.
Why Whisper Alignment Can Fail
Common causes include:
- the chosen Whisper language does not match the generated speech;
- the voice pronounces names or abbreviations differently from the source;
- a very short clip provides too little context;
- long silence or audio artifacts confuse word boundaries;
- the smaller model cannot map every source word;
- punctuation and normalization create a source mismatch.
Try the Accurate option, simplify unusual abbreviations, or generate a shorter passage. If alignment still fails, the estimate fallback keeps SRT and playback available.
Accuracy Checklist
Before publishing:
- Play the first and last cue.
- Seek to at least three points in the middle.
- Check names, numbers, acronyms, and contractions.
- Watch for a growing offset near the end.
- Split cues that cover a scene cut.
- Use a subtitle editor when frame-level timing matters.
Automatic timing removes much of the initial work. Human review is still the final quality step.
Use the Right Tool
Frequently Asked Questions
Do text-to-speech models return word timestamps?
Can I download SRT after generating TTS audio?
Why are some TTS subtitles estimated?
Are estimated timestamps accurate enough for video?
Related articles
Try OfflineTTS
Four local TTS engines, Whisper transcription, and private browser audio tools.
Open TTS Tool