To run OpenAI’s Whisper locally in 2026 — the open-source standard for transcribing audio to text — install faster-whisper, a drop-in replacement for the original openai-whisper library that’s 4× faster on the same hardware. Setup is two commands: pip install faster-whisper and brew install ffmpeg (or apt-get install ffmpeg on Linux). With int8 quantization on a mid-range laptop, a 10-minute audio file transcribes in 18–22 seconds; on an RTX 4070 it’s 12 seconds at large-v3 accuracy. Local Whisper costs nothing past the one-time install — no per-minute fees, no API tokens, no audio leaving your machine.

OpenAI’s hosted Whisper API charges $0.006 per minute for the same transcribe-audio-to-text workflow, so anyone processing more than ~3 hours of audio per month breaks even on the local install on day one. faster-whisper supports all six Whisper model sizes (tiny, base, small, medium, large-v2, large-v3) and 99 languages out of the box. This guide walks through the install, hardware benchmarks across Apple Silicon / NVIDIA GPU / x86 CPU, model-size selection, a minimal Python script with word-level timestamps, and the five most common errors first-time installers hit.

Why faster-whisper instead of openai-whisper?

The original openai-whisper library is the reference implementation — clean code, hackable, but slow on standard CPUs. faster-whisper is a drop-in replacement built on CTranslate2, a fast inference engine for Transformer models. Two things make it the default choice in 2026:

  1. 4× faster than the original implementation on the same hardware
  2. Lower memory — int8 quantization runs the large-v3 model in ~3 GB instead of ~10 GB

If you’re running Whisper inside a creator workflow (transcribing podcasts, captioning videos, generating subtitles), faster-whisper is the right pick. The benchmarks below all use it.

Transcribe audio to text: desktop, web, CLI and hosted options

Whisper is an open-source speech-to-text model from OpenAI, and “transcribe audio to text” is its primary use case. There are four common ways to run it in 2026:

  1. CLI / Python script (faster-whisper) — the most flexible setup, covered in detail in this guide. Best for developers, automation pipelines and batch jobs. Free.
  2. Whisper desktop apps — pre-packaged GUI applications that bundle faster-whisper (or whisper.cpp), FFmpeg and a Python runtime so you don’t manage any of it. ViralMint is one option — free, open-source under AGPL-3.0, includes a full creator pipeline (captions, clip extraction, viral-score analysis) on top of the transcription step. MacWhisper is a popular Mac-only paid option, and WhisperDesktop by Konstantin is a free Windows-only GUI built on whisper.cpp.
  3. Whisper web — browser-based wrappers like TurboScribe that upload audio to a cloud-hosted Whisper instance. Convenient for one-off transcription of short clips, but re-introduces the per-minute cost and privacy concerns that running locally solves. Most use the OpenAI API under the hood and add a small markup.
  4. OpenAI’s hosted Whisper API — the official cloud endpoint at $0.006 per minute. Fastest for single short clips (no model-load overhead), but each minute adds to your bill, and audio is uploaded to OpenAI servers.

If your use case is occasional, one-off transcription of short audio, the hosted API is fine. If you process more than ~3 hours of audio per month, transcribe sensitive content (interviews, medical, legal), or want to chain transcription into a downstream pipeline (word-by-word captions, viral-clip extraction, AI script generation), running Whisper locally — via CLI for developers or via a packaged desktop app for everyone else — is the clear winner on both cost and privacy.

Hardware benchmarks (2026)

Real-world numbers from ViralMint’s internal testing — same 10-minute audio file across different hardware and model sizes. Time-to-transcribe measured wall-clock, including model load.

HardwareModel SizeAudio LengthTime to Transcribe
Apple M3 Max (64GB)large-v310 minutes32 seconds
Apple M2 Max (32GB)medium10 minutes22 seconds
Apple M2 Max (32GB)large-v310 minutes45 seconds
Apple M2 Pro (16GB)medium10 minutes31 seconds
Apple M1 (8GB)small10 minutes38 seconds
NVIDIA RTX 4070 (12GB)large-v310 minutes12 seconds
NVIDIA RTX 3060 (12GB)medium10 minutes18 seconds
NVIDIA RTX 3060 (12GB)large-v310 minutes28 seconds
AMD Ryzen 7 7700X (CPU only)medium10 minutes62 seconds
Intel i7 (12th Gen, CPU only)small10 minutes55 seconds
Intel i7 (12th Gen, CPU only)medium10 minutes88 seconds

For most creator use cases, the M2 Max + medium combination (~22s per 10min) is the sweet spot. For maximum accuracy on multilingual content, large-v3 is worth the longer runtime.

Which Whisper model should you pick?

Whisper ships in six sizes, plus the .en variants that drop multilingual support for English-only speed. Pick by your priority:

ModelParametersVRAM (int8)SpeedWhen to use
tiny39M~1 GBFastestReal-time captioning, voice commands, English-only
base74M~1 GBFastVoice notes, short clips, English-only with base.en
small244M~2 GBBalancedYouTube Shorts, TikTok captions, fast multilingual
medium769M~5 GBSlowDefault for podcasts and long-form video
large-v21.5B~8 GBSlowerWhen medium misses technical terms or rare languages
large-v31.5B~8 GBSlowestBest accuracy in 2026, improved tokenizer + training data

English-only .en variants (tiny.en, base.en, small.en, medium.en) are 1.5-2× faster than their multilingual siblings because they skip the language-detection layer. If your audio is exclusively English, use them.

Default recommendation: start with small for a Mac laptop, medium for a desktop with 16GB+ RAM, large-v3 if you have a GPU or are doing technical content where accuracy matters.

Step 1: Install dependencies

You’ll need Python 3.11 or higher. A virtual environment is strongly recommended — Whisper pulls in PyTorch, which can conflict with other ML libraries.

# Create a venv (one-time)
python3.11 -m venv ~/whisper-env
source ~/whisper-env/bin/activate   # Linux/macOS
# .\whisper-env\Scripts\activate    # Windows PowerShell

# Install faster-whisper
pip install faster-whisper

You also need FFmpeg on your system path. It’s used internally to decode audio formats (mp3, m4a, mp4, etc.) into Whisper’s expected PCM format.

# macOS — via Homebrew
brew install ffmpeg

# Ubuntu / Debian
sudo apt-get install ffmpeg

# Windows — via Chocolatey
choco install ffmpeg

Verify both are reachable:

python -c "from faster_whisper import WhisperModel; print('faster-whisper OK')"
ffmpeg -version | head -1

Step 2: The transcription script

Minimal working example. Loads the medium model and transcribes an audio file with word-level timestamps — the foundation for word-by-word animated captions.

from faster_whisper import WhisperModel

model_size = "medium"

# Run on GPU with int8 if available, else fall back to CPU.
# device="auto" picks CUDA when CUDA-toolkit is present, otherwise CPU.
# compute_type="int8" gives the best speed/memory trade-off on consumer
# hardware. Try "float16" on RTX 3060+ for slightly better accuracy.
model = WhisperModel(model_size, device="auto", compute_type="int8")

segments, info = model.transcribe(
    "audio.mp3",
    beam_size=5,
    word_timestamps=True,   # enables .words on each segment
)

print(f"Detected language: {info.language} ({info.language_probability:.2f})")

for segment in segments:
    print(f"[{segment.start:.2f}s → {segment.end:.2f}s] {segment.text}")
    # Per-word access for caption timing:
    # for word in segment.words:
    #     print(f"  {word.word} ({word.start:.2f}s)")

Local Whisper vs cloud Whisper API: cost comparison

The economic argument for running locally compounds quickly:

ScenarioCloud API ($0.006/min)Local Whisper
One 30-min podcast$0.18$0 (one-time install)
Weekly 60-min podcast × 52 weeks$18.72/year$0
Daily 10-min video × 365 days$21.90/year$0
100-episode podcast archive (10 hours total)$3.60$0
Real-time captioning, 8 hours/day × 250 days$720/year$0

The break-even point is roughly 3 hours of audio — past that, local Whisper pays for itself on a single laptop. The only costs are electricity (negligible) and the time to set up the Python environment.

Caveat: cloud Whisper API returns the result instantly with no model-load overhead. If your workflow needs sub-second latency on a single short clip and you don’t want to keep a process alive, the API wins on convenience. For batch / long-form / privacy-sensitive workloads, local wins outright.

Privacy and local processing

When Whisper runs locally, your audio files never leave the machine. This matters for:

  • Pre-release content — podcast episodes under embargo, video drafts, journalistic interviews
  • Sensitive material — therapy transcripts, legal depositions, medical recordings
  • Sponsor / NDA work — branded content under a content-protection clause
  • Bulk competitor research — transcribing dozens of competitor videos without flagging your activity to a cloud provider

Cloud APIs (OpenAI’s, Deepgram’s, AssemblyAI’s, etc.) all retain logs at minimum. Some retain audio for “service improvement” unless you opt out. Local Whisper sidesteps the whole question.

Common errors and how to fix them

A few traps that hit most first-time installs:

OSError: [E001] Could not find an installed CTranslate2 backend

CTranslate2 ships as part of faster-whisper, but if you have a stale pip cache it can install without the backend. Fix:

pip uninstall faster-whisper ctranslate2 -y
pip install --no-cache-dir faster-whisper

RuntimeError: CUDA out of memory

You’re loading a model too large for your GPU’s VRAM. Either drop to a smaller model (mediumsmall) or switch to int8:

model = WhisperModel("medium", device="cuda", compute_type="int8")

FileNotFoundError: ffmpeg

FFmpeg isn’t on the PATH. On macOS, brew install ffmpeg and restart your terminal. On Windows, the choco install ffmpeg doesn’t always update the current session’s PATH — open a fresh PowerShell.

Transcription is much slower than the benchmarks above

Three likely causes:

  1. You’re on CPU instead of GPU. Confirm with model.device — should print cuda or mps, not cpu.
  2. You’re using compute_type="default" instead of int8. On consumer CPUs, default uses float32 which is 3-4× slower.
  3. You’re including model-load time. Whisper loads ~2-8 GB into memory on the first transcribe call. After that, subsequent calls reuse the loaded model. Time the second call, not the first.

Warning: language detection failed, defaulting to English

Audio is too short, too quiet, or non-speech. Whisper needs ~30 seconds of speech to detect language confidently. For known-language content, pass language="en" (or appropriate ISO code) to skip detection entirely.

Alternatives: whisper.cpp, mlx-whisper, openai-whisper

faster-whisper is the default, but other implementations have niches:

  • whisper.cpp — C++ port, no Python required. Best for embedded use cases or when you specifically want to ship a Whisper-powered tool without a Python runtime. ~2× slower than faster-whisper on CPU.
  • mlx-whisper — Apple Silicon-native via Apple’s MLX framework. 2-3× faster than faster-whisper on M-series Macs for the same model size. Worth the switch if your workflow is Mac-exclusive.
  • openai-whisper (original) — the reference implementation. Slowest of the three but the most hackable. Use if you’re researching Whisper internals or fine-tuning.
  • distil-whisper — Hugging Face’s distilled model, 6× faster than large-v2 at near-equivalent accuracy. Worth trying if you’re CPU-bound and need throughput more than peak accuracy.

For 95% of creator workflows, stick with faster-whisper.

Automate with ViralMint

If you don’t want to manage Python environments, model downloads and FFmpeg paths, ViralMint bundles a pre-configured faster-whisper engine in a one-click desktop app. It uses the same int8 + medium-by-default configuration as the benchmarks above and chains the output straight into:

  • Word-by-word animated captions — burnt-in viral-style subtitles synced to Whisper’s word timestamps
  • Silent-pause detection for the silence remover
  • Viral clip extraction — Whisper transcribes long videos, AI scores moments by hook strength
  • AI script generation that’s transcript-aware when learning from competitor videos

Download ViralMint at viralmint.net to start transcribing for free on your own hardware. Or see the standalone local Whisper transcription tool page if you only need the transcription side.

Frequently asked questions

Can I run Whisper without a GPU?

Yes. faster-whisper runs on CPU with int8 quantization in reasonable time on any modern laptop. A 10-minute audio file takes 55-90 seconds on a recent Intel i7 or AMD Ryzen 7. For batch workloads (overnight transcription of a podcast archive), CPU-only is perfectly viable. GPUs are 3-5× faster but not required.

Which Whisper model is the most accurate in 2026?

large-v3 is the most accurate as of 2026, with improved tokenization for code-switched speech and better handling of technical terminology compared to large-v2. For most podcast and video content, medium produces near-equivalent results in a quarter of the time.

Is local Whisper free to use commercially?

Yes — OpenAI released Whisper under the MIT license, which permits commercial use, modification and redistribution. faster-whisper inherits the MIT license. There are no per-minute fees, no API tokens, and no revenue-share obligations. You only pay for the hardware electricity.

How do I transcribe videos, not just audio?

faster-whisper takes any FFmpeg-readable format directly — .mp4, .mov, .mkv, etc. It extracts the audio track internally before transcribing. If you need to download a video first (YouTube, TikTok, etc.) for transcription, pair Whisper with yt-dlp or use ViralMint’s bundled pipeline that does both in one step.

What’s the difference between word_timestamps=True and the default?

By default, Whisper returns segment-level timestamps — typically 5-10 seconds per segment. Setting word_timestamps=True makes it return per-word timing using an alignment pass over the segment. This adds about 15% to the runtime but is required if you want to render word-by-word animated captions in the TikTok / Shorts style.

Can Whisper transcribe non-English languages?

Yes — 99 languages out of the box. Whisper auto-detects the language from the first 30 seconds and switches its decoder accordingly. Accuracy varies by language and accent; the model card on Hugging Face has per-language WER (Word Error Rate) benchmarks. For languages with very limited training data (some African and indigenous languages), accuracy drops significantly.