Transcribe & subtitle
WhisperX: word-accurate subtitles and speaker labels
A BSD-2-Clause Python tool that adds word timings and speaker labels (diarisation) to Whisper transcripts [2][1].
- Does
- Word-accurate timings and speaker labels for subtitles
- Best for
- Interviews, podcasts and multi-speaker talking-head videos
- Runs
- Locally, on NVIDIA GPU or CPU
Whisper's own timestamps are per utterance and can be several seconds out [2]. WhisperX transcribes with faster-whisper, then realigns each word with a wav2vec2 model [2].
What it does
- Licence
- BSD-2-Clause [1]; diarisation model CC-BY-4.0 [3]
- Input
- Audio such as WAV or MP3, from the command line or Python [2]
- Word timing
- wav2vec2 forced alignment; default models for English, French, German, Spanish and Italian, others via Hugging Face [2]
- Speed claim
- '70x realtime with large-v2' with batched inference (the project's claim) [2]
- Hardware
- GPU: CUDA toolkit 12.8. CPU and Mac:
--compute_type int8 --device cpu[2] - Speaker labels
- Hugging Face read token, plus accepting the model's user agreement [2][3]
Integrations
| Interface | Status | Detail |
|---|---|---|
| MCP server | MCP · Community | Community wrappers |
| Command line | CLI · Built in | Python commands |
| API / library | API · Built in | Python API |
Requirements and setup
Licence, cost and privacy
Limitations
- Words with no characters in the alignment dictionary, such as '2014.' or '£13.60', get no timing [2].
- Overlapping speech is handled poorly; diarisation is 'far from perfect' [2].
- Each language needs its own wav2vec2 model [2].
.assoutput was removed in version 3 (on the to-do list) [2].- Default output files are not documented.
Quick start
Quick start
On a Mac, use the CPU line [2].
Copied from the documentation · source [2]
pip install whisperxCopied from the documentation · source [2]
uvx whisperxCopied from the documentation · source [2]
whisperx path/to/audio.wavCopied from the documentation · macOS · source [2]
whisperx path/to/audio.wav --compute_type int8 --device cpuCopied from the documentation · source [2]
whisperx path/to/audio.wav --model large-v2 --diarize --highlight_words TrueAssembled from documented options, not printed in the docs · source [2]
whisperx path/to/audio.wav --model large-v2 --diarize --hf_token YOUR_HF_TOKENUses for vloggers
- Word-by-word captions for Shorts and Reels, where timing drift shows.
- Speaker-labelled interview transcripts for editing or show notes.
- The free, offline transcription option in VEED OpenEdit [5].
Workflows that use it
Some setupLocal AI subtitles
Turn vlog speech into SRT and VTT subtitle files on your own computer, with an app or the command line, then check every name.
Buzz transcriptionAuto Subs (tmoroney)whisper.cppFFmpeg / ffprobe
Alternatives
Transcribe & subtitlefaster-whisper
Faster Whisper-based transcription with CTranslate2
Free codeOn your computerDeveloperMIT licence
MCP · CommunityCLI · CommunityAPI · Built in
Transcribe & subtitlewhisper.cpp
Run efficient Whisper inference on local hardware
Free codeOn your computerDeveloperMIT licence
MCP · CommunityCLI · Built inAPI · Built in
Transcribe & subtitlepyannote.audio
Identify speakers and diarise multi-voice vlogs
Free codeOn your computer · CloudDeveloperMIT licence
MCP · CommunityCLI · Built inAPI · Built in
Transcribe & subtitleAuto Subs (tmoroney)
Generate speech subtitles inside Resolve, Premiere or After Effects workflows
Free codeOn your computerSome setupMIT licence
MCP · None foundCLI · Built inAPI · None found
Sources
- raw.githubusercontent.com/m-bain/whisperX/main/LICENSE fetched 2 Nov 2026
- raw.githubusercontent.com/m-bain/whisperX/main/README.md fetched 2 Nov 2026
- pyannote/speaker-diarization-community-1 · Hugging Face fetched 2 Nov 2026
- GitHub - jianfch/stable-ts: Transcription, forced alignment, and audio indexing with OpenAI's Whisper · GitHub fetched 2 Nov 2026
- raw.githubusercontent.com/veedstudio/open-edit/main/README.md fetched 2 Nov 2026