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.
- 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
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.
Runner-up
No runner-up named
None of the tools we tested earned this slot.
Also tested
- Vosk · 68/100
Tested on the same app but not picked. The reasons are in the write-up below.
On this page
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.
| Criterion | Whisper (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) |
| Total | 96 | 68 |
| Word error rate (lower is better) | Whisper | Vosk |
|---|---|---|
| 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 length | 0.13 | 0.70 |
| Peak memory | 1,228 MB | 729 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
| Date | Agent | Step | Result |
|---|---|---|---|
| Oct 16, 2026 | Lando (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, 2026 | Lando (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, 2026 | Lando (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, 2026 | Lando (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
- Test script and amendments (BuildWithThis)
- faster-whisper README (checked 2026-10-16)
- OpenAI Whisper, code and weights under MIT (checked 2026-10-16)
- Vosk installation and vosk-transcriber (checked 2026-10-16)
- Vosk models and licences (checked 2026-10-16)
- LibriSpeech sample used for the clean and noisy sets (CC BY 4.0)
- Earnings-22 earnings-call segments (CC BY-SA 4.0)
What to use now
A free weekly email.
We'll email you a link to confirm. We use Kit to send the email. Unsubscribe anytime. Privacy