Speech Recognition
Self-host Whisper. One 24GB card handles the whole transcription pipeline.
From a 574MB q5_0 quant to a 10GB large-v3, Whisper is one of the rare models small enough for any card and accurate enough for production. Rent a GPU and keep the audio inside your network.
Whisper · self-hosted
Whisper is OpenAI's automatic speech recognition model, open-sourced in 2022 and still deployed everywhere. It is a plain encoder-decoder Transformer: audio is sliced into 30-second windows, converted to a log-Mel spectrogram for the encoder, and the decoder autoregressively emits timestamped text. The newest open weights are still large-v3-turbo from October 2024 — OpenAI has not released a newer open Whisper since, and the last openai-whisper pip release is v20250625. So "which version is current" has effectively converged for Whisper; the real iteration is happening in the inference runtimes around it.
Know the two workhorse checkpoints. large-v3 has 1550M parameters, uses 128 Mel bins (large-v2 used 80), was trained on 1 million hours of weakly labelled plus 4 million hours of pseudo-labelled audio, covers 99 languages, and OpenAI reports a 10%–20% error reduction over large-v2. large-v3-turbo is a pruned-and-finetuned 809M version whose decoder layers were cut from 32 to 4; the official table lists it at ~8x relative speed for a minor accuracy loss. Critically, it was never trained for translation — pass --task translate and it will still return the source language. That is the single most common selection mistake.
There are two sets of VRAM numbers for Whisper and you need both. The official repo quotes the reference implementation: ~1GB for tiny/base, ~2GB small, ~5GB medium, ~10GB large, ~6GB turbo. But almost everyone shipping to production runs faster-whisper (CTranslate2) or whisper.cpp (GGML), where the measured footprint is far lower — faster-whisper's own benchmark shows large-v2 at 4525MB in fp16 and 2926MB in int8. So the honest answer to "how much VRAM does Whisper need" depends on your runtime, and the table below lists both.
01 —
Every Whisper variant and what it actually costs in VRAM
Official reference-implementation requirements, real CTranslate2 and GGML weight sizes, and who should use which
| Version | Parameters | VRAM | Context | Notes |
|---|---|---|---|---|
| whisper-large-v3 | 1550M | Official ~10GB / faster-whisper fp16 measured 4.5GB / GGML fp16 3.1GB / q5_0 1.08GB | 30-second audio window, 448-token decoder limit | The accuracy baseline. 128 Mel bins, 99 languages, includes a Cantonese token. Use it when you need top transcription quality or multilingual translation. |
| whisper-large-v3-turbo | 809M | Official ~6GB / GGML fp16 1.62GB / q5_0 just 574MB | 30-second audio window, 448-token decoder limit | Decoder pruned 32 layers to 4 then finetuned; ~8x relative speed, RTFx around 200 on the model card. The default choice for pure transcription — but it will not translate. |
| whisper-medium / medium.en | 769M | Official ~5GB / GGML fp16 1.53GB | 30-second audio window, 448-token decoder limit | Largely superseded by turbo. Still worth it on an 8GB legacy card, or when an English-only checkpoint is needed to hold hallucination rates down. |
| whisper-small / small.en | 244M | Official ~2GB / GGML fp16 488MB | 30-second audio window, 448-token decoder limit | The sweet spot for low-latency streaming. A T4 can host several concurrent streams, and whisper.cpp gets close to realtime on CPU alone. |
| distil-large-v3.5 | 756M (English-only, MIT) | Same class as turbo, roughly 1.6GB of fp16 weights | 30-second audio window, 448-token decoder limit | Distilled from large-v3 on 98k hours, about 1.5x faster than turbo. The better trick: use it as the draft model for speculative decoding with large-v3 for ~2x speedup with byte-identical output. |
02 —
Which GPU to rent for Whisper
Metered per second, compute billing stops the moment the instance stops, no quota request
Single-card evaluation and small-to-mid offline batches (turbo fp16 or q5_0)
RTX 3090 24GB$0.193/GPU-hour
Turbo weights are only 1.6GB, so 24GB leaves room to push batch size to 16–32 and still keep an alignment model resident; Ampere gives you SDPA and FlashAttention-2. Best price-performance on the whole fleet for Whisper.
Production pipeline: large-v3 fp16 at batch 16 with WhisperX alignment and pyannote diarization co-resident
RTX 4090 24GB$0.540/GPU-hour
All three models still fit inside 24GB, and Ada's decode throughput is well ahead of the 3090 — lowest unit cost once your queue is thousands of audio-hours a day.
Many concurrent workers, speculative-decoding model pairs, or multi-hour long-form queues
A100 PCIE 80GB$0.824/GPU-hour
80GB holds large-v3 and distil-large-v3.5 together for speculative decoding, or six to eight workers saturating one card. It is $0.007 more than the 48GB RTX A6000 at $0.817 for an extra 32GB.
Absolute cheapest fp16 offline batch runs
Tesla V100 32GB$0.188/GPU-hour
Cheapest card we rent and it carries 32GB; the fp16 paths in faster-whisper and whisper.cpp are rock solid on Volta. Just know that Volta has no bf16 and no FlashAttention-2, so the newer transformers optimisation paths are off the table.
03 —
Four steps to a running Whisper service
From bare instance to an OpenAI-compatible transcription endpoint
- 01
Launch an instance on a PyTorch image and install faster-whisper
NexGPU ships 2,000+ prebuilt images — boot the PyTorch or Whisper ASR image and the CUDA stack is already in place. Note that recent ctranslate2 builds only support CUDA 12 and cuDNN 9; nine out of ten "cannot find libcudnn_ops_infer.so.8" errors are a version mismatch, and a prebuilt image sidesteps the whole class.
pip install -U faster-whisper==1.2.1 - 02
Run a turbo baseline to confirm throughput and footprint
The first run pulls the CTranslate2 weights from Hugging Face automatically. Start with compute_type float16; if VRAM is tight, switch to int8_float16 — faster-whisper's own benchmark drops large-v2 from 4525MB to 2926MB in int8 and gets faster doing it. Turning on VAD noticeably cuts hallucinations across silent stretches.
python -c "from faster_whisper import WhisperModel; m=WhisperModel('turbo', device='cuda', compute_type='float16'); segs,info=m.transcribe('audio.wav', beam_size=5, vad_filter=True); print(info.language); [print(f'[{s.start:.2f}->{s.end:.2f}] {s.text}') for s in segs]" - 03
Add WhisperX for word-level timestamps and speaker labels
Whisper natively emits token-level timestamps at 0.02s precision, so real word boundaries require forced alignment. WhisperX aligns with wav2vec2 and diarizes with pyannote's speaker-diarization-community-1, reaching roughly 70x realtime on large-v2 with batched inference while staying under 8GB at beam_size=5. The diarization model is gated — accept the agreement on Hugging Face and pass a token.
whisperx audio.wav --model large-v3 --compute_type float16 --batch_size 16 --diarize --hf_token $HF_TOKEN --output_format srt - 04
Serve it: vLLM exposes an OpenAI-compatible transcription API
vLLM's OpenAI-compatible server supports /v1/audio/transcriptions and /v1/audio/translations for ASR models, so existing clients can point the openai SDK at your instance with no application changes. Use the NexGPU vLLM image to skip the build, then reach the endpoint over an SSH tunnel or through the REST API.
vllm serve openai/whisper-large-v3-turbo --port 8000
What 1,000 hours of audio actually costs
Start from a sourced speed anchor. faster-whisper's published benchmark: an RTX 3070 Ti 8GB on CUDA 12.4 transcribes 13 minutes of audio with large-v2 in fp16 at batch_size=8 in 17 seconds — roughly 46x realtime. large-v3-turbo has one-eighth the decoder depth of large, so estimating 60x realtime on an RTX 4090 is conservative. Take a 1,000-hour archive of meeting recordings: 1,000 / 60 = 16.7 GPU-hours, plus about 0.3 hours to pull weights and warm up, call it 17 hours. 17 x $0.540 = $9.18, or $0.0092 per audio-hour. Want it cheaper? Move to the RTX 3090 24GB. The same job at a conservative 40x realtime is 25 GPU-hours: 25 x $0.193 = $4.83. A thousand hours of recordings for under five dollars. Storage is separate: faster-whisper's large-v3 weights are 3.09GB and turbo is 1.62GB, and even with the wav2vec2 alignment model and pyannote diarization on top, a 10GB volume is plenty — 10 x $0.414 = $4.14/month. Storage keeps billing until the volume is destroyed, while compute billing stops the second the instance does, so stop the instance when the batch finishes and keep the volume for next time instead of re-downloading weights. Egress is a rounding error: transcripts are plain text. Even pulling all 1,000 hours of 16kHz mono WAV (about 115GB) back down costs 115 x $0.0081 = $0.93.
04 —
FAQ
How much VRAM does Whisper really need? Is an 8GB card enough?
large-v3 or large-v3-turbo — is turbo simply better?
Whisper hallucinates, loops the same phrase, and invents captions over silence. How do I fix it?
Can Whisper identify speakers or give accurate word-level timestamps?
Is Whisper still the right choice, or have Parakeet and Voxtral overtaken it?
What licence are the Whisper weights under, and does my audio have to leave my network?
More in Speech recognition
Start building on NexGPU
Enterprise R&D team or solo developer — either way, your first job can be running in minutes.
Sign up to browse live network pricing. No payment method required.
