Skip to content

About

Local-first desktop workbench: Whisper transcription, YouTube/podcast capture and Markdown polishing into a RAG-ready corpus. Windows exe with built-in update check. Built with Claude.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

TranscriptLab

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.

License: MIT Python Platform CI

TranscriptLab screenshot

Download for Windows: get TranscriptLab-<version>-win64.zip (about 13 MB, the exe plus README and CHANGELOG) or the single TranscriptLab_v_<version>.exe from the latest release. No Python needed. Put the exe anywhere (Desktop, Downloads, D:\Apps). Since 0.16.9 everything the app writes (settings, dictionaries, logs, and the tools it installs for you) lives in one folder, %LOCALAPPDATA%\TranscriptLab by default or another folder you choose at the first start, so moving the exe loses nothing. The SHA-256 of each file is in the release notes.

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.

Why it exists

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.

How it works

How it works

What it does

The app is a Tkinter desktop GUI with one tab per job:

Tab Purpose
A/V 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
To Markdown 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
YT Transcripts Fetch captions for videos or channels and save them as Markdown
YT Download Download media with yt-dlp, with pacing and optional automatic transcription
Podcasts Read RSS feeds, download episodes and transcribe them
Link Grabber Collect video links from a channel with filters (duration, sections)
Dictionary 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 (Help → Check for Tools) that installs, finds and updates Whisper, FFmpeg, MarkItDown and yt-dlp, with Docling and pyaudiowpatch optional.

Since 0.16.9:

  • One folder for everything: settings, dictionaries, queues, logs, tools, Whisper models and the app's own Python 3.12 (downloaded once, about 15 MB, checked) live in one folder you can choose. The first start walks through three steps: the folder, what was found from an older install (use it where it is, move it, or start fresh), and Install the tools now?. Settings → Storage shows the size per part and can move the folder.
  • Check for Tools: one table with Install / Update per tool, Install All and Update All, and a window per tool (status, version, location, Repair, Use another copy, Search again). Tools you already have (winget, scoop, Chocolatey, Program Files, the PATH) are found and used where they are.
  • Recordings from Tiny Recorder: TranscriptLab --transcribe <file> hands a recording to the open window (there is always one window); it starts at once when TranscriptLab is idle and ready.
  • Interface in English, Portuguese (Brazil) and Spanish, following the Windows display language or chosen in Settings → General.
  • Optional: FFmpeg, yt-dlp and Whisper can be put on your user PATH (never the system PATH) so other programs can use them.

Since 0.16.8:

  • Whisper models are downloaded by the app itself (Settings → Whisper → AI models): progress, Cancel, resume after a dropped connection, SHA-256 check. A model manager shows the size on disk and can verify or delete a model.
  • Help menu with Check for updates… (asks the GitHub releases API, no key). The exe can download the new version next to itself, check its SHA-256 and start it; the old exe is kept. An optional daily check at start is off by default.
  • Unexpected errors go to TranscriptLab_Data\logs\app.log (API keys removed).

Quick start (Windows)

  1. Install Python 3.9+ (Tkinter comes with it on Windows).
  2. Run TranscriptLab.bat (or python TranscriptLab.py).
  3. Follow the first-start steps, then use Help → Check for Tools → Install All to get Whisper, FFmpeg, MarkItDown and yt-dlp.
  4. Add files in the A/V 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.

Next step: AI revision you can check

Speech-to-text output usually needs correcting before it becomes a corpus, and a fluent correction can silently change or invent text. tcqa covers that step in two parts: a Claude Code agent revises the transcripts and logs every change, a second agent re-checks each correction, and an offline checker (no AI, no network) confirms that each corrected transcript changed only what its log says, before the text goes into a RAG or fine-tuning corpus.

Responsible use

Only transcribe or download material you have the right to use. The repository contains code only; it ships no transcripts, recordings or corpus data.

Project facts

  • About 34,900 lines of Python in one file, organised in clear sections
  • 77 numbered versions, from a 35 KB prototype to the current build (see archive/versions/)
  • 362 unit tests in tests/test_v0_16_9.py; about 335 run on every push (Ubuntu, Python 3.10 and 3.12). The others use the Windows registry, taskkill or drive paths and are skipped there; on Windows 361 pass and 1 is skipped (build report of 0.16.9)
  • Run the tests: python -m pytest tests -v (the Tk tests need a display; CI uses xvfb-run). They use a temporary data folder and never touch TranscriptLab_Data
  • docs/legacy/ has the first READMEs

Roadmap

  • Read API keys from environment variables or the OS keychain instead of the local settings file
  • Split the single file into modules
  • Export chunked Markdown with embeddings metadata for common vector stores

How this was built

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.

Contributing and security

See CONTRIBUTING.md and SECURITY.md. Bug reports and ideas are welcome through the issue templates.

Licence

MIT. See LICENSE.

Author

Luiz Junqueira - junqueira.ch - LinkedIn

About

Local-first desktop workbench: Whisper transcription, YouTube/podcast capture and Markdown polishing into a RAG-ready corpus. Windows exe with built-in update check. Built with Claude.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages