faster-whisper (speech to text) 1.2.1 (CTranslate2 4.8.4): our test log
faster-whisper 1.2.1 transcribed 41 s of speech at 2.4 percent word error with the base.en model in float32 (deterministic), but the int8 setting gave 2 to 60 percent on identical audio across runs.
Tested by us on 2026-10-25. Local open-weight model, not the vendor's hosted models. A smoke test on a CPU-only box, not a benchmark.
Result at a glance
| Field | Value |
|---|---|
| Result | Passed |
| Version tested | 1.2.1 (CTranslate2 4.8.4) |
| Date and time | 2026-10-25, 22:54 to 23:01 CDT (America/Chicago) |
| Task | Transcribe the ten Piper sentences (41.29 s, 124 words in total) with faster-whisper tiny.en, base.en and small.en on CPU, compute types int8 and float32, 8 and 4 CPU threads, three runs each, and compute the word error rate against the known text (jiwer, punctuation and case ignored). |
| Model used | none (no language model involved) |
| Hardware | Linux x86_64 virtual machine (Debian 13), 8 vCPU (Intel Xeon, 1 thread per core), 15 GiB RAM, no GPU |
| float32 WER, base.en and small.en | 0.0242 on 9 of 9 runs |
| int8 WER, base.en, 8 threads | 0.105, 0.315, 0.452 (three runs) |
| Real-time factor | 0.07 to 0.61 depending on model and compute type |
What we found
- float32 was deterministic: tiny.en gave 0.0403 and base.en and small.en gave 0.0242 on every run (3 of 3, 8 threads). That is 5 and 3 wrong words out of 124.
- int8 was not: on identical audio and settings the word error rate ranged 0.040 to 0.597 for tiny.en, 0.032 to 0.452 for base.en and 0.024 to 0.25 for small.en across runs (8 threads) and similar ranges at 4 threads. A first run (discarded) gave 0.645. Several int8 outputs contained garbage text for a segment.
- Speed: the real-time factor (transcription time divided by audio time) was 0.07 to 0.29 for the tiny and base models and 0.22 to 0.61 for small.en, i.e. all faster than real time on 8 shared vCPUs.
- We did not find the cause of the int8 variation. It appeared on this virtual machine when other jobs were running; we cannot say it happens on your hardware, but verify int8 output against a known reference before relying on it.
What we ran, step by step
| Step | Wall time | Exit code | Notes |
|---|---|---|---|
| Install with uv | 1 s | 0 | faster-whisper 1.2.1, ctranslate2 4.8.4, onnxruntime 1.31.0, jiwer 4.0.0; 440 MB. The 1.0 s looks quick for 440 MB even with --no-cache; we recorded it as measured and cannot explain it further. |
| First run: model load failed on av 19.0.2 | n/a | 1 | TypeError: open() got an unexpected keyword argument 'metadata_errors' from an unpinned av 19.0.2. Fixed by uv pip install av==18.1.0 (see gotchas). |
| Transcription runs | n/a | 0 | 27 timed runs; models downloaded on first use (not timed). |
# Install with uv
uv venv -p 3.13 work/py/faster-whisper && VIRTUAL_ENV=work/py/faster-whisper uv pip install --no-cache -q faster-whisper jiwer
# First run: model load failed on av 19.0.2
python voice_stt.py tiny.en
# Transcription runs
CT=int8 TH=8 python voice_stt.py tiny.en base.en small.en # also CT=float32, TH=4Raw output (excerpts)
compute threads model WER per run (3 runs) RTF range
int8 8 tiny.en [0.339, 0.508, 0.597] 0.083 to 0.111
int8 8 base.en [0.105, 0.315, 0.452] 0.095 to 0.126
int8 8 small.en [0.25, 0.024, 0.242] 0.215 to 0.318
int8 4 tiny.en [0.04, 0.113, 0.04] 0.069 to 0.091
int8 4 base.en [0.032, 0.387, 0.032] 0.091 to 0.287
int8 4 small.en [0.065, 0.04, 0.218] 0.215 to 0.394
float32 8 tiny.en [0.04, 0.04, 0.04] 0.104 to 0.145
float32 8 base.en [0.024, 0.024, 0.024] 0.118 to 0.197
float32 8 small.en [0.024, 0.024, 0.024] 0.341 to 0.609av 19.0.2 (unpinned, faster-whisper requires av>=11): TypeError: open() got an unexpected keyword argument 'metadata_errors'. Workaround: uv pip install av==18.1.0 (works){"slug": "faster-whisper", "model": "tiny.en", "compute_type": "int8", "cpu_threads": 8, "model_load_incl_download_seconds": 1.81, "transcribe_seconds": 7.21, "audio_seconds": 41.29, "realtime_factor": 0.175, "wer": 0.6452, "words": 124, "loadavg_after": "3.87", "start": "2026-10-25 22:54:33 CDT", "Gotchas and things that broke
- Unpinned av 19.0.2 broke the install-time import: use av==18.1.0 (the version that worked) with faster-whisper 1.2.1.
- The int8 results above include runs under load average up to 9; float32 runs were under similar load and were stable, which is why we call out int8 specifically.
What we did not test
- Other audio: one synthetic (Piper) voice, English only, no noise, no accents, no long recordings.
- GPU, other compute types (float16, int8_float16) and the larger models.
- Not a benchmark; this is a smoke test on 41 seconds of audio.
Reproduce it
Versions change. These commands install whatever is latest on the day you run them unless a version is pinned, so expect different results later. The version we measured is in the table above.
uv venv -p 3.13 .venv && VIRTUAL_ENV=.venv uv pip install faster-whisper jiwer av==18.1.0
# synthesise audio with Piper (see that test), then run a script that calls WhisperModel("base.en", device="cpu", compute_type="float32").transcribe("s0.wav", beam_size=5, language="en")How to read this test
Every number on this page was measured on this one machine, which also ran other jobs, so timings are indicative and vary run to run. A pass means our small task worked once or as stated, a fail means it did not work as we ran it; neither says how the tool behaves with a vendor's frontier model, on a GPU, or at scale. Where a tool could not run without an account or a GPU, we say so instead of guessing.
See the testing rig for the hardware, the local model and the rules we follow, and the test hub for every other test.
Related tests: voice, speech and image
- Piper (text to speech): Piper 1.8.0 synthesised 10 sentences (about 41 s of 22.05 kHz audio) on CPU in 1.4 to 1.5 s each including process start; 3.5 s uv install, 167 MB.
- whisper.cpp: We could not run whisper.cpp: no prebuilt Linux release was available for download and this machine has no make, g++ or cmake to build it.
- ComfyUI: ComfyUI 0.42.0 installed in 17.42 s and its CPU-only server was ready in 30.1 s with 1014 node types, but we did not generate an image.
FAQ
Should I use int8 or float32 with faster-whisper on CPU?
On our machine float32 gave identical 2.4 percent word error on every run while int8 varied from 2 to 60 percent on the same audio, so we would check int8 against a reference first.
Sources
- faster-whisper repository (fetched 2026-10-25)
Related
Markdown version for agents: /tests/faster-whisper.md