Whisper Local Transcription 2026
Cloud transcription bills by the minute and uploads your audio first. Whisper runs locally for free, but the wrong fork, compute type or flags cost an order of magnitude in speed. Here is a config that works and six real traps.
📜 Table of Contents
Whisper Local Transcription 2026: Open Source Speech-to-Text Without the Cloud
Cloud transcription bills by the minute and ships your audio to someone else's server. Local transcription fixes both: the file never leaves the machine, and hours of audio cost electricity.
Whisper is the standard, but the original implementation is unusably slow on CPU. Three projects split the work in 2026: the original as reference, faster-whisper for production, whisperX for word-level timestamps and speaker separation.
Pick the right one
| Project | Backend | Strength | Use when |
|---|---|---|---|
| openai/whisper | PyTorch | Closest to the paper | Reproducing results |
| faster-whisper | CTranslate2 | Several times faster, CPU-capable | Default choice |
| whisperX | faster-whisper + alignment | Word timestamps, diarization | Subtitles, multi-speaker meetings |
Ten minutes with faster-whisper
pip install faster-whisper # plus ffmpeg on PATH
from faster_whisper import WhisperModel
model = WhisperModel("small", device="cpu", compute_type="int8")
segments, info = model.transcribe(
"meeting.mp3",
language="zh", # specify, don't let it guess
vad_filter=True, # skip silence, prevents hallucination
beam_size=5,
)
for s in segments:
print(f"[{s.start:7.1f} -> {s.end:7.1f}] {s.text}")
segments is a generator, so long files stream instead of loading at once. Writing SRT is a dozen lines over the same iterator.
Model tiers and compute types
| Model | Params (approx.) | Speed | Quality | Suggested |
|---|---|---|---|---|
| tiny | 39M | Fastest | Rough | Keyword search only |
| base | 74M | Very fast | Fair | Pipeline testing |
| small | 244M | Medium | Readable | Default on CPU |
| medium | 769M | Slow | Clearly better | GPU |
| large-v3 | 1.55B | Slowest | Best | GPU, final delivery |
| compute_type | Hardware | Note |
|---|---|---|
float16 |
GPU | Default, fast |
int8_float16 |
GPU | Less VRAM, minimal loss |
int8 |
CPU | Best CPU option |
float32 |
CPU | Slow, rarely needed |
VRAM is roughly 2-4GB for medium and 4-6GB for large-v3 on GPU, depending on beam size.
Six traps
- Traditional Chinese output. A training-data artifact, not a config error. Fix with an
initial_promptasking for Simplified, or post-process with OpenCC (more reliable). - Auto language detection mislabels short clips. Specify the language when you know it.
- Hallucinated text over silence — "thanks for watching" and similar. Enable
vad_filter=True. - Repetition loops on long audio — set
condition_on_previous_text=False. - Proper nouns come out wrong. Put names and jargon in
initial_promptas a glossary. - cuDNN/cuBLAS errors on GPU. CTranslate2 is version-sensitive; matching cuDNN matters. Falling back to CPU int8 is often fine.
Speed and cost
An hour of audio on a laptop CPU with small + int8 runs near real time. The point is not the money: legal, medical and HR recordings are about "may process" versus "must not leave the machine".
FAQ
Faster than real time? On GPU, yes — large-v3 with float16 typically is. On CPU, only with small models.
Speaker separation? Not in faster-whisper; use whisperX with a diarization pipeline.
Video files? Yes, any ffmpeg-decodable container.
Chinese punctuation? Decent, but long sentences and quotes need a human pass.
No Python? whisper.cpp compiles to a single binary.
Note: sizes, VRAM and speed are order-of-magnitude; verify against your hardware and the official docs.
Related
Written by our editorial team; tools listed here are tested or verified against public sources. Links point to official sites or GitHub repos for reference only — no paid placements.