about
// someone else's podcast, transcribed by a machine
[the podcast]
Podz-Glidz is Lucian Haas's paragliding podcast, part of his Lu-Glidz blog. long, deep conversations with pilots, designers, testers and record holders โ independent, ad-free, and made entirely in his own time.
[support]
the podcast is free and runs on listeners chipping in. if these interviews help your flying, support lu-glidz โ 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 Podz-Glidz or Lu-Glidz. 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, a dialect 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.
most episodes are also translated into English and French, so the scene's knowledge is not shut behind German โ the episode list says which.
the audio streams from Lucian's original SoundCloud feed; nothing is re-hosted, and the show notes and links are his. 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 (
PotzglitzfindsPodz-Glidz). German 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 German 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.
if you spot a mangled name, an invented sentence or a translation that has gone somewhere else entirely, report it from the transcript itself: select the words on any page, in any of its languages, and a [fix] button appears. that route is worth taking over the form below, because the selection carries the episode, the timecode and the exact wording with it โ everything needed to check the claim against the audio, none of which has to be described in a sentence.
every one is checked against the audio by hand before it lands. where it lands depends on which page it came from, and it is worth knowing which: a correction on the german is a correction to what was heard, so it is made before the translation runs and every language gets it. a correction on the english and the french is a correction to the wording, and reaches that language alone. so if a name is wrong everywhere, the german page is the one to report it from.
either way the transcript is rebuilt afterwards, which is a manual run on the same desktop โ expect weeks rather than minutes.
[anything else]
a speaker labelled wrongly for a whole turn, a page that will not play, an episode that is missing, a suggestion, or a question โ none of that is a word or two of transcript, so none of it fits the [fix] popover. this is where it goes.
// for a wrong word in a transcript, use [fix] on the page it is on โ it arrives with the timecode attached and is far quicker to act on than a description.
// no account. the message is stored so I can read it, an email address is used to reply and nothing else, and [privacy] says exactly what is kept and for how long.
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 one thing that runs on a request is the small endpoint the forms post to.
[the numbers]
what is here today, counted off the transcripts themselves:
- 193
- episodes โ German, with English and French where translated
- 223 h
- of audio behind them
- 2.1 million
- words of German transcript, before any translation
the back catalogue was done in one go in July 2026, on one desktop machine with a single RTX 4070 Ti SUPER โ under two days of it running, not a data centre:
- 44 h
- to get through the backlog: 189 episodes in one pass, the other three already done
- ~15 min
- per episode, end to end: transcribe, split by speaker, translate twice, render the PDF
- 5ร
- real time โ five hours of podcast for every hour of machine