about
// someone else's podcast, transcribed by a machine
[the podcast]
Cloudbase Mayhem is Gavin McClurg's free-flight podcast, running since 2015. long conversations with the pilots, designers, instructors and competitors the sport is made of โ cross-country, acro, comps, and a great deal about what goes wrong and why. independent, and made in his own time.
[support]
the podcast is free and runs on listeners chipping in. if these conversations help your flying, support cloudbase mayhem โ that is where the episodes come from. this transcript site takes nothing and asks for nothing.
[this site]
a fan project, built in my free time and not affiliated with Cloudbase Mayhem. it adds one thing: a transcript you can read along with the audio.
the line being spoken is highlighted and the page keeps up on its own, so a fast passage, an accent or a name you did not catch is in front of you instead of needing a rewind. clicking any sentence moves the audio to that exact moment, and the whole episode sits on one plain page, so your browser's own find reaches every word of it.
episodes are also translated into German and French, so eleven years of hard-won detail is not shut behind English โ the episode list says which have been.
the audio streams from the show's original Blubrry feed; nothing is re-hosted, and the show notes and links are Gavin's. the pages are plain static HTML on Cloudflare Pages: no accounts, no ads, no cookies, and nothing that follows you to other sites. page views are counted, and where you got to in an episode is remembered in your own browser โ [privacy] is the full account.
[how the transcripts are made]
by machine, end to end, on a single desktop GPU. no one proofreads them, so expect mistakes.
- speech โ text
- faster-whisper (
large-v3), which timestamps every individual word. that is what lets you click a sentence and hear the tone it was actually said in โ nothing is guessed or aligned to the audio afterwards. - who is speaking
- pyannote (
speaker-diarization-3.1) cuts the audio into speaker turns, which are then named from the host and the guest in the episode title, in order of first speech โ so a long conversation stays readable as one. - vocabulary
- a hand-kept dictionary of paragliding terms, glider names and pilots, fed to faster-whisper as a hint before the run and used to repair near-misses afterwards, matched phonetically rather than by spelling, so a name the machine heard wrong still finds the right one. English inflection is never rewritten, which is the rule that keeps the repair from inventing its own mistakes.
- translation
- Gemma 4 12B, run locally through llama.cpp, translating one utterance at a time against a glossary that pins the jargon. timestamps and speaker names are copied across untouched, which is why you can read a translated page while following the English audio to the second.
- publishing
- the finished transcripts are built ahead of time into one static page per episode and language, with the waveform computed in advance so the player starts without downloading the whole hour first.
[found a mistake?]
a translated transcript is a machine translation of an already imperfect one. confidently wrong sentences do get through. when a line matters, listen to it โ the audio is the only thing here that is not a guess.
curious how corrections actually work? [changelog] is how the pipeline was built and what each round of correction fixed โ the mistakes it makes, how they are found without anyone listening to the whole back catalogue, and how many have been settled so far.
[built with]
two halves, both deliberately plain:
- the pipeline
- Python. faster-whisper and pyannote on one desktop GPU, llama.cpp for the translation, and everything around them โ naming the speakers, repairing the vocabulary, writing the Markdown, the subtitles and the PDF โ is ordinary Python with no framework under it.
- the site
- Astro. every page is built ahead of time into static HTML, so nothing is rendered when you ask for it and there is no UI framework in the browser. the only JavaScript that ships is the player: wavesurfer.js for the waveform, and the code that keeps the transcript in step with the audio. it is served by Cloudflare Pages.
[the numbers]
what is here today, counted off the transcripts themselves:
- 10
- episodes โ English, with German and French where translated
- 14 h
- of audio behind them
- 151,000
- words of English transcript, before any translation
the back catalogue is being worked through on one desktop machine with a single RTX 4070 Ti SUPER, an episode at a time โ 10 of 278 so far. each one takes about a quarter of an hour end to end: transcribe, split by speaker, translate twice, render the PDF. it will take a while.