In March 2025, the post announcing DeepSRT's ten-thousandth user made a promise:
We'll also show you how to combine whisper to make the captions you want — and fully cover the videos that offer no CC track at all.
That sentence sat there for a year and a half. 1.3.0 keeps it — just not with whisper.
The plan said whisper. Here's why the answer isn't.
Speech recognition was never the hard part. Getting the audio is. The video plays inside YouTube's official player, and there is no API that taps that audio. Every remaining road was closed:
Capture system audio? That's a screen-recording permission — macOS's scariest consent dialog, for a feature the user never asked for. Download the audio stream? We've said publicly that DeepSRT is not a downloader: nothing downloaded, converted, or stored. Breaking an architectural promise for one feature isn't worth it.
So the problem with whisper was never recognition. It was that the audio is unreachable, and we would not take it the dirty way.
The answer is almost disappointingly simple
Gemini accepts a public YouTube URL as a video input.
That's it. The app hands over the URL, the model watches the video, and a timestamped transcript comes back. Nothing downloaded, converted, or stored — fully consistent with having no servers, and it runs on your own key.
Measurement rewrote the design. Twice.
First measurement: for the same video, asking for a summary cost 19,393 input tokens and asking for the full transcript cost 19,431 — practically identical. Ingesting the video is the fixed cost; what you ask changes nothing. Clear conclusion: never make one video call for the transcript and another for the summary. That's paying twice for the same video.
So we split long videos into ten-minute windows, for reliability and progressive display. Then came the second measurement: every window re-ingests the entire video. Asking for only the last 8 minutes of a 28-minute video still billed 156,762 tokens — the full runtime's worth. Three windows means paying three times.
The design rationale we had written into our own commit log was overturned by our own measurement. The final version inverts it: optimistically ask for the whole video in one pass, and only window the ranges that actually came back missing. Cost dropped to a third.
Models slack off, in specific ways
Two stories from the logs.
Asked for the last section of a long video, the model sometimes returns something that isn't SRT at all — apologies, descriptions, anything but cues. The fix: retry once with a blunter prompt. "Do not explain, do not apologise, start output with the line 1." That was enough.
Asked for a whole video in one pass, it returned 60 cues for 28 minutes — 29 seconds each. The words were right and summaries were unaffected, but as live subtitles it was unusable: a wall of text parked on screen for half a minute. One added line — "each cue must cover at most 8 seconds" — took it to 207 cues averaging 8.3s. The extra cost? About one cent.
An honest price tag
A half-hour video with no captions at all, transcribed once on your own Gemini key: about $0.05 (and currently free, while Google's YouTube-URL input is in preview).
The feature is off by default. It spends your own AI credits, so it's a switch you flip yourself — Settings > Videos Without Captions — and while it runs, the progress notice says plainly what it's doing. We don't front costs and we don't hide them. That's been the deal from day one.
That ten-thousand-user post ended with "see you at twenty thousand." Kept. "Cover the videos with no CC track" — now kept too.
DeepSRT is a one-time purchase, on the Mac App Store.