I download the raw audio track with yt-dlp, give it to qwen asr for raw transcription, then DeepSeek flash for transcription cleanup, formatting, corrections with web search enabled, etc. I use openrouter to call the models. It's a few cents per video (mostly the asr model at ~12 cents per hour) and quality is great. You could probably use a local asr model if you want to save money, I just don't bother because it's so cheap already.
That only makes sense for videos that don't have official (not auto-generated) transcripts of course. If there are official transcripts that are good you can just get them directly with yt-dlp.
[TedTalk] Extracting URL: [1]
[TedTalk] luvvie_ajayi_jones_how_to_be_a_professional_troublemaker: Downloading webpage
ERROR: the JSON object must be str, bytes or bytearray, not NoneType
exit 1
[1] - full URL is: https://www.ted.com/talks/luvvie_ajayi_jones_how_to_be_a_pro...
yt-dlp --update-to master
YouTube tries to shut down yt-dlp and sometimes it is good to have the absolute latest code.