A local-first desktop workbench that turns audio, video, YouTube, podcasts and documents into clean Markdown, ready to be used as a corpus for a RAG system.
Download for Windows: get the ready-to-run .exe from the latest release. No Python needed.
Windows SmartScreen: the file is not code-signed, so Windows may show "Windows protected your PC". Click More info, then Run anyway. You can also run the app from source (see Quick start) and read every line of the code first.
Companies that hold valuable know-how (lectures, interviews, calls, manuals) cannot always send it to a public AI service. TranscriptLab runs the heavy work on your own machine: speech-to-text with OpenAI Whisper, document conversion with MarkItDown, and cleaning rules that make the output consistent. The result is a folder of tidy Markdown files with metadata headers, which is the raw material for a retrieval-augmented generation (RAG) pipeline or later fine-tuning.
The app is a Tkinter desktop GUI with one tab per job:
| Tab | Purpose |
|---|---|
| Transcription | Batch queue for audio/video files, Whisper model choice per language, model download on demand, live log and progress |
| Live | Capture audio playing on the PC (Windows loopback) and transcribe it in chunks |
| MD | Convert PDF, DOCX and subtitle files to Markdown |
| MD Polish | Re-flow wrapped lines, remove caption noise and hyphenation, apply custom correction dictionaries, optional Claude-assisted clean-up levels |
| YouTube | Fetch captions for videos or channels and save them as Markdown |
| Download | Download media with yt-dlp, with pacing and optional automatic transcription |
| Podcast | Read RSS feeds, download episodes and transcribe them |
| Link Grabber | Collect video links from a channel with filters (duration, sections) |
| Dictionaries | Vocabulary profiles that prime Whisper and fix recurring mistakes |
| Comparison | Run two Whisper models on the same excerpt and compare the output |
Other features: metadata header per Markdown file, ETA estimates learned from past runs, saved queues, a LAN status page to watch long batches from a phone, and a built-in tools manager that installs and checks Whisper, ffmpeg, pandoc and Docling.
- Install Python 3.9+ and ffmpeg.
- Run
TranscriptLab.bat(orpython TranscriptLab.py). - Open the tools manager inside the app to install Whisper and MarkItDown.
- Add files in the Transcription tab, choose language and model, press start.
Whisper models run locally. Nothing is uploaded unless you turn on the optional Claude-assisted polish, which needs your own API key.
Speech-to-text output usually needs correcting before it becomes a corpus, and a correction can silently change or invent text. tcqa is a small offline checker that proves a corrected transcript changed only what its log says, before the text goes into a RAG or fine-tuning corpus.
Only transcribe or download material you have the right to use. The repository contains code only; it ships no transcripts, recordings or corpus data.
- About 27,000 lines of Python in one file, organised in clear sections
- More than 70 numbered versions, from a 35 KB prototype to the current build (see
archive/versions/) docs/legacy/has the first READMEs
- Read API keys from environment variables or the OS keychain instead of the local settings file
- Split the single file into modules and add automated tests
- Export chunked Markdown with embeddings metadata for common vector stores
Built with Claude (Anthropic) as the coding partner. I wrote the requirements and the revision prompts, tested every build on real data, and decided what to fix next. The archive/versions/ folder keeps every earlier release so the iteration history is visible.
Security note: the app stores any API keys you enter in a local settings file outside this repository. .gitignore excludes config and settings files so keys are never committed.
See CONTRIBUTING.md and SECURITY.md. Bug reports and ideas are welcome through the issue templates.
MIT. See LICENSE.
Luiz Junqueira - junqueira.ch - LinkedIn

