buildwiththis home

Best free tool to caption a video or podcast: Whisper vs Vosk

You publish videos or a podcast and want accurate captions and a transcript without paying per minute or uploading your recordings anywhere.

Last tested Oct 16, 2026 Re-test due by Nov 15, 2026 Published Oct 16, 2026 Test log (4 entries)

Our pick
Whisper via faster-whisper96/100
Why
Passed all 7 checks. Word error rate 7.7% on clean speech, 8.1% with background noise and 13.2% on real earnings-call audio. Every caption started within a second of the speech, it processed audio at 0.13× real time on 8 CPU cores, and it peaked at 1.2 GB of memory with the network switched off.
Not for you if
you want captions without touching Python (faster-whisper has no app or command-line tool; Vosk's vosk-transcriber writes an .srt in one command but makes far more mistakes), or you need near-perfect captions with no review.

Short answer: Use Whisper, run with faster-whisper (96/100). On a normal laptop CPU it captioned our test audio about 8 times faster than real time, with punctuation and captions in sync, and nothing left the machine. Expect to skim the captions: it got about 1 word in 13 wrong on clean speech and once dropped a whole sentence. Vosk was less accurate, slower and writes no punctuation.

The verdict

Winner

Whisper via faster-whisper

96/100

OpenAI's open-source Whisper speech recognition model, run with faster-whisper, a faster re-implementation that runs well on an ordinary CPU.

Passed all 7 checks with the small English model on CPU. Word error rate 7.7% on clean speech, 8.1% with background noise, 13.2% on real earnings-call audio. All 73 captions in our test episode started within a second of the speech. It processed 29 minutes of audio in 3 min 41 s (0.13× real time) at 1.2 GB peak memory, offline. One fix needed: a dependency it pulls in crashed it until we pinned an older version. Score: 96/100.

Visit Whisper via faster-whisper

Runner-up

No runner-up named

None of the tools we tested earned this slot.

Also tested

Tested on the same app but not picked. The reasons are in the write-up below.

On this page
  1. Quick answers
  2. Why
  3. Gotchas
  4. Scores
  5. What it costs
  6. Caveats
  7. Not tested yet
  8. Test log
  9. Affiliate disclosure
  10. Sources

Quick answers

What's the best free way to make captions for a video?

In our test, Whisper run with faster-whisper. With its small English model on an 8-core CPU it passed all 7 of our checks: 7.7% word errors on clean speech, 13.2% on real conversation, captions in sync and about 8 times faster than real time. It's free and open source (MIT) and runs on your own computer.

How accurate is Whisper for transcribing a podcast?

With the small English model, about 1 word in 13 was wrong on clean read speech (7.7% word error rate) and about 1 in 8 on real earnings-call audio with many accents (13.2%). Background noise at 10 dB barely changed it (8.1%). Once it returned one word for a 22-word sentence, so skim the captions before you publish.

Is Vosk good enough for captions?

Not by our bar. With its 128 MB English model, Vosk got 12.3% of words wrong on clean speech, 24.0% with background noise and 38.6% on real earnings calls, and its output has no punctuation or capital letters. It used less memory (729 MB) and its vosk-transcriber command writes an .srt file directly.

Do I need a GPU to run Whisper?

No. We used faster-whisper's small English model with 8-bit weights on an 8-core CPU and no GPU. It processed 29 minutes of audio in under 4 minutes and peaked at 1.2 GB of memory.

Does my audio get uploaded anywhere?

No, with either tool. After the one-time model download, we ran every transcription with the network switched off and both worked.

Can I auto-generate subtitles (SRT) for free?

Yes, offline. Whisper via faster-whisper gave the most accurate text in our test (7.7% word errors on clean speech); it returns timestamped text, and we turned that into an .srt file with a short script. Vosk's vosk-transcriber writes an .srt in one command, but made far more mistakes and has no punctuation.

Why

Who this is for: you make videos or a podcast and want captions (an .srt file) and a transcript, without a per-minute bill and without uploading your recordings to anyone. You’re comfortable running a short Python script, or having an AI assistant run it for you.

Our pick: Whisper, run with faster-whisper (96/100). It passed all 7 of our checks on an ordinary 8-core CPU with no GPU and no network. It got about 1 word in 13 wrong on clean speech and about 1 in 8 on real earnings calls, wrote punctuation and capitals, and every caption started within a second of the speech. It got through 29 minutes of audio in under 4 minutes.

No runner-up. Vosk failed our core accuracy check (12.3% of words wrong on clean speech; the bar was 10%) and writes no punctuation, so it can’t take a pick slot. It’s lighter and has a one-line caption command, but expect to fix much more by hand.

Gotchas

Whisper: skim before you publish. In one clip Whisper returned the single word “Cal” for a 22-word sentence. The rest of that recording was fine. It’s rare, but it’s why a quick read-through still matters.

faster-whisper: pin PyAV. On 2026-10-16, pip install faster-whisper (1.2.1) pulled in PyAV 19.0.1 and transcription crashed with TypeError: open() got an unexpected keyword argument 'metadata_errors'. pip install "av<19" fixed it.

faster-whisper: there’s no caption command. It gives you text and word timestamps from Python; turning those into an .srt file takes a few lines of code. Our caption builder is in the public check script.

Pick the model for your machine. The README example uses large-v3 on a GPU. On a laptop CPU, small.en with compute_type="int8" is what we tested: 1.2 GB of memory, about 8× faster than real time.

Vosk: no punctuation. Its output is all lowercase with no full stops, so captions need editing before they’re readable.

Scores

Scored with our published rubric. Tested 2026-10-16. One run each: the gap was 28 points, so no second run was needed.

CriterionWhisper (faster-whisper)Vosk
Task success (35)5 (7 of 7)1 (3 of 7: failed clean, noisy and real-conversation accuracy, and speed)
Effort (15)5 (1 fix: pin PyAV)5 (no fixes)
Time (10)5 (4 min 45 s)4 (24 min, mostly transcription time)
Cost (10)5 ($0, runs locally)5 ($0, runs locally)
Quality of what you get (10)3 (3 of 5: no caption command; README example crashed as written)4 (4 of 5: no punctuation)
Ownership (10)5 (MIT, offline)5 (Apache 2.0, offline)
Safe defaults (10)5 (4 of 4)5 (4 of 4)
Total9668
Word error rate (lower is better)WhisperVosk
Clean read speech (73 clips, 8 min)7.7%12.3%
Same clips + background noise (10 dB)8.1%24.0%
Real earnings calls (40 clips, 3.8 min)13.2%38.6%
Processing time ÷ audio length0.130.70
Peak memory1,228 MB729 MB

The 7 checks: a valid caption file (cues in order, at most 7 seconds and 2 lines of 42 characters), at most 10% word errors on clean speech, 15% with noise and 25% on real conversation, at least 90% of captions starting within 1 second of the speech, processing in half the audio’s length or less, and peak memory of 2 GB or less.

What it costs

Both are free and open source, run on your own computer and have no usage limits. Whisper’s code and weights are MIT; Vosk and its models are Apache 2.0. The small.en model is a 464 MB download; Vosk’s lgraph model is 128 MB. Our runs cost $0.

Caveats

  • Small models on a CPU. We tested the largest model of each tool that fits in 2 GB of memory, because most solo builders don’t have a GPU. Larger Whisper models are more accurate and much slower on a CPU; Vosk’s big model needs far more memory.
  • Test audio, not your podcast. Clean read audiobooks, the same with added noise, and short segments of real earnings calls. Music beds, crosstalk and heavy accents will change the numbers.
  • One caption builder for both. We turned both tools’ word timestamps into captions with the same few lines of code, so caption layout didn’t decide anything.
  • Hosted services weren’t tested. Paid transcription APIs and apps (Descript, Rev, AssemblyAI, Deepgram and others) need a signup we couldn’t do in this run.
  • Runs were done by an AI agent following each tool’s official docs, with the network off. The check script is public.

Next step: give it a voice. Need narration for the same video? See our tested pick for making a voiceover from a script.

Not tested yet

  • Hosted transcription (AssemblyAI, Deepgram, Rev, Descript): each needs a browser signup. Queued.
  • whisper.cpp and larger Whisper models (medium, large-v3, turbo): same model family; we’ll add them in a GPU-or-laptop follow-up.

Test log

DateAgentStepResult
Oct 16, 2026Lando (agent)Setup for both tools: 73 clean LibriSpeech utterances (8 min), the same 73 with pink noise at 10 dB, 40 segments of real earnings calls from Earnings-22 (3.8 min), and a 9-minute test episode joined from the clean set. Each tool got a fresh Python environment, and every scored run had the network switched off.Inputs and human transcripts hashed and frozen before the runs. Both tools are open source with no benchmarking restrictions.
Oct 16, 2026Lando (agent)Whisper, run j10-whisper-r1: pip install faster-whisper, model small.en, int8 on CPU, beam size 5 as in the README; transcribed all three sets and the episode with word timestamps, then built the .srt with our shared caption builder.First attempt crashed in the audio decoder: pip had installed PyAV 19.0.1, which faster-whisper 1.2.1 doesn't support. Pinned av<19 and reran. All 7 checks passed: WER 7.7% clean, 8.1% noisy, 13.2% earnings calls; 73 of 73 captions in sync; 0.13× real time; 1,228 MB peak. 4 min 45 s from a fresh environment to the caption file. $0.
Oct 16, 2026Lando (agent)Vosk, run j10-vosk-r1: pip install vosk, model vosk-model-en-us-0.22-lgraph (128 MB), following the official Python example with word timestamps; same inputs and caption builder.3 of 7 checks passed. WER 12.3% clean (core check failed, limit 10%), 24.0% noisy, 38.6% earnings calls; captions in sync (73 of 73); 729 MB peak; 0.70× real time (one CPU core). No punctuation or capitals in the output. Score: 68/100.
Oct 16, 2026Lando (agent)Vosk, unscored: ran the install page's command, vosk-transcriber -i test.mp4 -t srt -o test.srt, on a 60-second clip.Worked unchanged: it downloaded its small English model and wrote a valid .srt in 4.0 s. Lowercase, no punctuation.

Affiliate disclosure

This page has no affiliate links yet. Every link goes to the tool’s own homepage. Affiliate deals never decide a pick, and a tool with no affiliate program can still win. How we make money.

Sources