Every subtitle on our channel — episode captions, karaoke-timed music-video lyrics, shorts — comes from faster-whisper running locally. Free, unlimited, and word-level accurate. Same pipeline transcribes voice memos, meetings, and long videos into searchable text.
Setup
python -m venv whisper-env && whisper-env/bin/pip install faster-whisper
from faster_whisper import WhisperModel
model = WhisperModel("large-v3-turbo", device="cuda", compute_type="float16")
segments, _ = model.transcribe("input.wav", word_timestamps=True, vad_filter=True)
for seg in segments:
for w in seg.words:
print(f"{w.start:6.2f} {w.end:6.2f} {w.word}")
large-v3-turbo is the sweet spot: near-flagship accuracy, a fraction of the compute. On our GPU it transcribes faster than real time; on CPU it still works, just slower. word_timestamps=True is the magic — you get every word’s exact start/end, which is what makes karaoke-style captions (and YouTube-quality burned-in subs) possible instead of just paragraph blobs.
The two tricks that fix “it always gets that word wrong”
Whisper will confidently mis-hear names and jargon forever unless you intervene:
- Hotwords — pass your vocabulary as a hint:
transcribe(..., hotwords="Aillex, ComfyUI, LoRA, Ollama"). Cheap and surprisingly effective. - A FIXES dictionary — for the mishears that survive, post-process: we map
laura → LoRA,allura → LoRA, several spellings of our character’s name, and so on. Two lines of code, permanent fix. Build yours incrementally: every time you catch a wrong word in output, add the mapping.
From words to burned-in captions
Word timestamps → an .ass subtitle file (each word gets its own timed event, styled as you like) → ffmpeg burns it in:
ffmpeg -i video.mp4 -vf "subtitles=captions.ass" -c:a copy out.mp4
That’s the entire caption stack: no service, no per-minute fee, no upload. The same word timing also gives you section anchors for editing — we cut our music video on lyric timestamps from this exact pipeline.
Beyond subtitles
Point the same script at voice memos (summarize with your local LLM), lecture recordings (instant study notes), or any long video you’d rather read than watch. One tool, one GPU, everything transcribed.
