Work · Jul 2026 – Jul 2026
Podcast ASR at 158× realtime
Will one A100 transcribe 173 hours of audio in 75 minutes?
- Corpus
- 216 episodes / 173 audio-hours
- Words
- 1.1M
- Runtime
- 75 min on one A100
- Throughput
- 158× realtime
I needed 1.1M words of spoken-word text, and the naive way to get it — transcribe each episode, one at a time — was going to take days of GPU time.
The pipeline is faster-whisper large-v3 with batched inference: audio is chunked into clips and decoded in batches rather than sequentially, which is what turns a memory-bandwidth-bound workload into a throughput-bound one. The difference is not incremental. Batched clips ran at roughly 220× realtime against 40.5× sequential — same model, same weights, different execution shape.
The measured result: 216 podcast episodes, 173 audio-hours, 1.1M words, in 75 minutes on a single A100. That is 158× realtime including audio decode and all the bookkeeping.
Two things mattered more than batch size. First, coverage checking: every episode's transcript is validated to have at least 0.95 coverage against its audio duration, so a silently truncated episode cannot slip into the corpus as "one where the speaker paused a lot." Second, treating the run as a restartable job — per-episode checkpoints mean a crash at episode 200 costs one episode, not three hours.
What I'd do differently: validate a small sample end to end — decode, transcribe, coverage, word counts — before launching the full corpus. Batch width is exactly the kind of setting that can quietly degrade quality on the longest episodes, and coverage and word-count metrics will not tell you the text is wrong. On a corpus this size, spot-reading the longest episodes is the check that actually catches it.
The corpus is the foundation for the rest of my language work: everything downstream assumes those 1.1M words are complete and correctly attributed.
Timeline
- Batched faster-whisper pipeline transcribed the full corpus in 75 minutes
faster-whisper · CTranslate2 · Python · A100