Question · Speech recognition
What is the difference between whisper.cpp, faster-whisper and WhisperX?
Pick whisper.cpp for a native build that runs without Python, especially on a Mac or a CPU. Pick faster-whisper for Python work, including transcription on a CPU in int8 mode. Pick WhisperX when you need word-level timestamps or speaker labels, since it adds those to faster-whisper's output.
Updated October 17, 20264 min read8 cited facts, each traced to its source
These are three different programs, not three versions of one program. All three run the Whisper speech recognition model, which OpenAI released, but each uses its own engine and adds its own features. whisper.cpp is the native, Python-free route. faster-whisper is a faster engine for Python. WhisperX builds on faster-whisper and adds timing and speaker features that the others do not give. Choose by the output you need and the hardware you have, not by the name alone.
whisper.cpp is a native implementation that runs without Python
The whisper.cpp README describes the project as high-performance inference of OpenAI's Whisper automatic speech recognition model 1. It is written in C and C++, so you run it as a command-line program. You do not need a Python environment.
Its strongest case is a computer without a suitable GPU, and Apple silicon Macs. The guide to running Whisper locally covers the install steps. Choose whisper.cpp when you want a single program with no Python packages to manage.
faster-whisper is a Python reimplementation on the CTranslate2 engine
faster-whisper is a reimplementation of OpenAI's Whisper model that runs on CTranslate2, which the README describes as a fast inference engine for Transformer models 2. You use it from Python code or from a Python command-line tool.
It is the choice for Python work, and for a processor in int8 mode, which the benchmark below covers.
WhisperX adds word timestamps and speaker labels on top of faster-whisper
The WhisperX README lists the faster-whisper project as the backend it uses for batched inference 3. The WhisperX README says it adds word-level timestamps and speaker diarization to the output 4. Word-level timestamps tie each word to its moment in the audio, which matters for subtitles. Speaker diarization sorts the speech by speaker, which matters for meeting transcripts.
WhisperX is a separate open-source project, not an OpenAI model. People search for "openai whisper x" and "whisper x ai model" because the name sounds like an OpenAI product, but it is a community project with its own repository. If you only need plain text, the extra features are not worth the added setup.
Speed depends on the processor, and the benchmarks come from the faster-whisper project
The faster-whisper README includes a benchmark of a 13-minute recording 5. On a CPU with the small model, whisper.cpp took 125 seconds in fp32 precision 6. faster-whisper in int8 mode took 102 seconds on the same run 7.
Read that result with care. The benchmark comes from the faster-whisper project, which also includes the whisper.cpp result, and it covers one recording and one set of hardware. The gap between the two CPU routes is modest, so the other factors above should decide the choice. The GPU picture and the other benchmarks are in the guide to running Whisper locally.
A standalone XXL build gives Windows users Faster-Whisper without Python
Searches for "whisper xxl" usually mean a standalone program. Purfview's whisper-standalone-win project publishes executables of OpenAI's Whisper and Faster-Whisper for people who do not want to bother with Python 8. Its README lists extra features of its own, so read it before you choose.
This is a third-party project, not from OpenAI or SYSTRAN. Download executables only from its own releases page, and check that the version you use is current before you rely on it for a long job.
Which one to choose
| What you need | Pick | Why |
|---|---|---|
| A single program with no Python | whisper.cpp | A native build, with a command line and no Python packages |
| Python code on an NVIDIA GPU | faster-whisper | A Python library on the CTranslate2 engine, with GPU support |
| Word-level timestamps for subtitles | WhisperX | Adds word-level timestamps and speaker labels to faster-whisper |
| A Windows program without Python | Purfview's XXL build | A third-party standalone executable of Faster-Whisper |
| Transcripts on a CPU with no GPU | whisper.cpp or faster-whisper in int8 mode | Both are measured in the small-model CPU benchmark above |
It depends on what you transcribe and what you can install
The choice changes with three conditions.
- Your output. Plain text needs only the base engine. Subtitles and speaker labels need WhisperX.
- Your platform. A Mac points to whisper.cpp for its native build. An NVIDIA card points to faster-whisper or WhisperX.
- Your skills. A command-line program is simpler to set up than a Python environment, and a standalone executable is simpler still, if you trust its source.
The same model family runs in all three, so the transcript quality depends mostly on the model size you pick. Read our answer on which Whisper model to use before you tune the engine. For the processor question, see whether Whisper can run without a GPU.
If you want to skip the install entirely, running Whisper in Google Colab gives a notebook route. For the subject as a whole, see the speech recognition overview.
Evidence
Every number on this page, with where it comes from. Open a fact to see the exact words in its source.
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.