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-smi

This 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.11

You 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 python

Now upgrade your packaging tools

python -m pip install --upgrade pip setuptools wheel

And 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/cu128

Then 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 Ti

Your 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 whisperx

NOTE: 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 -version

Yup 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.