Overview
WhisperX uses the Whisper Automatic Speech Recognition (ASR) Systems to transcribe audio files and label them through speech recognition. You can run this locally on your machine by running the Transformer on your GPU.
Pre-Req Installs
First check your Nvidia GPU driver. Open powershell and run
nvidia-smiThis is what the output should look like. Pay attention to the CUDA version.
Mon Jun 29 19:35:14 2026
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 591.86 Driver Version: 591.86 CUDA Version: 13.1 |
+-----------------------------------------+------------------------+----------------------+
| GPU Name Driver-Model | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 3080 Ti WDDM | 00000000:01:00.0 On | N/A |
| 35% 36C P8 31W / 350W | 1832MiB / 12288MiB | 11% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
+-----------------------------------------------------------------------------------------+Also make sure you have python installed. Using python 3.10, 3.11, or 3.12 is preferred. 3.11 is optimal
winget install Python.Python.3.11You can issue a py -0p to check which versions of python are installed.
Make sure you create the virtual env explicitly with Python 3.11
py -3.11 -m venv .venv
.\.venv\Scripts\Activate.ps1 And then just confirm that your venv is on the correct version
python --version
where.exe pythonNow upgrade your packaging tools
python -m pip install --upgrade pip setuptools wheelAnd then install the CUDA-enabled version of pytorch. You’ll want to get 12.8 explicitly as it’s Windows setup instructions recommend Toolkit 12.8
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128Then verify GPU access:
python -c "import torch; print('Torch:', torch.__version__); print('CUDA runtime:', torch.version.cuda); print('Available:', torch.cuda.is_available()); print('GPU:', torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'None')"You should see something like this:
Torch: 2.11.0+cu128
CUDA runtime: 12.8
Available: True
GPU: NVIDIA GeForce RTX 3080 TiYour GPU value may be different, but everything else should be the same.
WhisperX Install
Now you can finally install whisperx using the python installer
pip install whisperxNOTE: After installation verify PyTorch again because package installers will sometimes replace dependencies
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))"Install FFmpeg
I’ll check to see if FFmpeg is already installed
ffmpeg -versionYup i have it already
ffmpeg version 8.1.1-full_build-www.gyan.dev Copyright (c) 2000-2026 the FFmpeg developers
built with gcc 15.2.0 (Rev13, Built by MSYS2 project)
configuration: --enable-gpl --enable-version3 --enable-static Running WhisperX
Finally you can run the m4a through whisperx to get just a transcript for now:
whisperx "C:\Users\nader\Development\whisperx\june29_p2.m4a" `
--model large-v3 `
--device cuda `
--compute_type float16 `
--batch_size 8 `
--language en `
--vad_method silero `
--output_dir "C:\Users\nader\Development\whisperx\output"NOTE: If you get an error about version compatibility…
The PyTorch version (2.8.0+cu128) is not compatible with this version of TorchCodec. Refer to the version compatibility Then you’ll need to switch your vad_method explicitly to silero
VAD is a Voice-Acitivy Detection system, and is used to identify which portions of the recording contain speech, allowing WhisperX to skip or segment silence and background noise.
After a successful run, you should see the transcription output in the configured output_dir
Note: There are a few more config params you can set, this is a version I used.
whisperx "C:\Users\nader\Development\whisperx\june29_p2.m4a" `
--model large-v3 `
--print_progress True `
--initial_prompt "Fudge, Thai, Aster, Nader" `
--output_format all `
--beam_size 5 `
--device cuda `
--compute_type float16 `
--batch_size 8 `
--language en `
--vad_method silero `
--output_dir "C:\Users\nader\Development\whisperx\output"Supplying technical vocabulary
—initial_prompt “Fudge, Thai, Aster, Nader”
Or, in versions that support it:
—hotwords “Fudge, Thai, Aster, Nader”
This can help Whisper recognize unusual names and project terminology. The current CLI passes both an initial prompt and hotwords into its faster-whisper transcription options.
Changing decoding beam size
Beam search considers multiple possible transcriptions while decoding.
--beam_size 5
Lower values are faster:
--beam_size 1
Higher values can occasionally improve ambiguous phrases but increase decoding work.
Diarization (Labeling)
Enabling diarization with Pyannote. Diarization is the process that adds labels such as SPEAKER_01, SPEAKER_02, etc.
Let’s use a Hugging Face account to gain model access, and then run WhisperX with speaker-count constraints while keeping Silero for VAD
Go to the page for the model pyannote/speaker-diarization-community-1 and accept the access conditions
Then go to your Hugging Face account settings and open Access Tokens. Create a new READ token.
You’ll get a copy of your token when you create it. COPY IT IMMEDIATELY
NOTE: You can check if the token was set correctly with
if ($env:HF_TOKEN) { "HF token is set" } else { "HF token is missing" }Then in PowerShell, set the token for the current terminal session.
$env:HF_TOKEN="hf_your_actual_token_here"Then attempt to run WhisperX again with diarization…
whisperx "C:\Users\nader\Development\whisperx\june29_p2.m4a" `
--model large-v3 `
--device cuda `
--compute_type float16 `
--batch_size 8 `
--language en `
--vad_method silero `
--diarize `
--min_speakers 4 `
--max_speakers 4 `
--hf_token $env:HF_TOKEN `
--output_dir "C:\Users\nader\Development\whisperx\output-diarized"The official WhisperX command-line workflow enables diarization with —diarize and passes a Hugging Face read token through —hf_token.
If you know the number of speakers, you can add it like so…
--min_speakers 4 `
--max_speakers 4 `IF YOU RECIEVE AN ERROR LIKE SO:
"C:\Users\nader\Development\whisperx\.venv\Lib\site-packages\whisperx\transcribe.py", line 220, in transcribe_task
diarize_result = diarize_model(
^^^^^^^^^^^^^^
File "C:\Users\nader\Development\whisperx\.venv\Lib\site-packages\whisperx\diarize.py", line 167, in __call__
diarization = output.speaker_diarization
^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'generator' object has no attribute 'speaker_diarization'You may have to revert Pyannot to the previous patch release to maintain compatibility with WhisperX
python -m pip install --force-reinstall --no-deps "pyannote.audio==4.0.5"Then you can verify your install with
python -c "import pyannote.audio, torch; print('Pyannote:', pyannote.audio.__version__); print('Torch:', torch.__version__); print('CUDA:', torch.cuda.is_available())"And try running the WhisperX command again.