Transcribe or translate YouTube clips and local video/audio files with faster-whisper (OpenAI Whisper models, optimized). Optionally speak the result with OpenAI TTS or NovelAI TTS.
- Python 3.11+ (3.10 is not supported;
runmeprefers 3.11, then 3.12+) - ffmpeg on your PATH (needed for yt-dlp audio extraction and chunked TTS)
- Optional GPU: CUDA for much faster Whisper (auto-detected)
Double-click or run:
runme.batThat creates a virtual environment, installs dependencies, and launches the app.
chmod +x runme.sh
./runme.shUse Python 3.11 or newer (not 3.10):
# Windows (prefer 3.11 via the py launcher):
py -3.11 -m venv youtube_transcriber_env
youtube_transcriber_env\Scripts\activate
# macOS/Linux:
python3.11 -m venv youtube_transcriber_env
source youtube_transcriber_env/bin/activate
pip install -r requirements.txt
python main.py
# or: python -m youtube_transcriberrunme.bat / runme.sh will pick 3.11 when available, fall back to 3.12+, and recreate an existing venv if it was built with Python older than 3.11.
- Paste a YouTube URL, or Browse… to a local media file.
- Pick a Whisper model (
tiny→large-v3/turbo/distil-large-v3). - Choose transcribe (same language) or translate (to English).
- Optionally set API keys and a TTS engine to hear the result.
- Click Download & Transcribe.
API keys are stored in the OS settings store (Qt QSettings), not in a project file. Use the menu action Clear saved API keys to remove them.
| Model | Notes |
|---|---|
tiny / base / small |
Fast, good for drafts |
medium |
Better accuracy |
large-v2 / large-v3 |
Best quality (slower, more RAM/VRAM) |
turbo |
Optimized large-v3 speed/quality tradeoff |
distil-large-v3 |
Distilled large model, faster |
First use of a model downloads its weights automatically.
| Engine | Needs |
|---|---|
| None | Transcript only (default) |
| OpenAI | OpenAI API key; voices like alloy, nova, shimmer; models tts-1, tts-1-hd, gpt-4o-mini-tts |
| NovelAI | Persistent API token; NovelAI TTS voices |
| Chatterbox Flash | Local ResembleAI/chatterbox-flash (PyTorch); a ~5–10s reference voice clip for zero-shot cloning |
Leave keys blank if you only want text.
Not installed with the core requirements (torch stack is large). After the main venv is set up:
pip install -r requirements-chatterbox.txt
# Then force a modern CUDA torch (required for Blackwell: 2.7+)
pip install --upgrade torch torchaudio --index-url https://download.pytorch.org/whl/cu128Notes for NVIDIA / Blackwell
chatterbox-tts(pulled in bychatterbox-flash) still declarestorch==2.6.0. Pip will warn that 2.11+cu128 “conflicts”. That is expected — keep the newer torch; Chatterbox Flash was designed around overriding that pin.- You do not need
torchcodecfor this app. Speech is written with the stdlibwavemodule so recenttorchaudio.save()→ TorchCodec requirements are avoided. - Device is auto-selected (
cuda→mps→cpu).
Then choose Chatterbox Flash as the TTS engine and browse to a ~5–10s reference audio file. First run downloads weights from Hugging Face.
- yt-dlp instead of broken/outdated
pytube - faster-whisper instead of stock
openai-whisper(faster, less memory) - Proper background workers (UI no longer freezes)
- Transcribe vs translate option
- Modern models:
large-v3,turbo,distil-large-v3 - Updated OpenAI voices and TTS models
- Save / copy transcript, file browser, status + progress
- Dark UI, settings persistence, clean package layout
- Cross-platform
runme.sh+ improvedrunme.bat
main.py # launcher
youtube_transcriber/
app.py # Qt UI
workers.py # background jobs
config.py # settings + constants
services/
download.py # yt-dlp / local files
transcribe.py # faster-whisper
tts.py # OpenAI + NovelAI speech
See LICENSE.