Transcribe, translate, and burn subtitles into any video — fully offline, GPU-accelerated.
Point it at a video, and it will:
- Transcribe the speech (Whisper, via faster-whisper) - with automatic NVIDIA GPU acceleration and CPU fallback.
- Optionally translate the subtitles into another language (Argos Translate), with per-segment language detection so mixed-language content (e.g. a podcast that switches languages mid-recording) is handled correctly.
- Optionally separate speakers (pyannote.audio), labeling the transcript "Speaker 1", "Speaker 2", etc. - renameable afterwards.
- Deliver the result either as hardsub (burned directly into the video, works in every player) or softsub (a selectable subtitle track, fast lossless mux, no re-encode).
Everything runs locally - no cloud APIs, no data leaves your machine.
The same backend is usable three ways:
- Web UI - a polished Next.js frontend (upload, live progress, log viewer, settings).
- Desktop GUI - the same web UI in a native window (via pywebview), no browser needed.
- Terminal UI - a full Textual TUI for headless/server use, including a built-in file browser.
You can also cancel an in-progress job at any point, and unload models on demand to free GPU/RAM for other apps.
Download SubtitleBurnerSetup.exe from the latest release and run it.
- You choose the install directory (nothing is forced into
Program Files). - The installer bundles its own portable Python, Node.js, and ffmpeg - no prerequisites needed on a clean machine.
- First launch downloads the heavier ML dependencies (PyTorch, speech/translation models - a few GB) and needs an internet connection; this is one-time.
A .deb package is planned but not published yet. In the meantime, run from source:
git clone https://github.com/HACK3RRABBIT/subtitle-burner.git
cd subtitle-burner
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cd web && npm install && npm run build && cd ..
python app.py # backend, then in another terminal:
cd web && npm start # frontend(See installer/build_deb.sh / installer/debian/ if you want to build the .deb yourself on a real Linux machine - it isn't tested yet, see installer/README.md.)
The backend (subburn/) is organized in layers, with ASR/translation/diarization each behind a small plugin registry - adding a new engine is a new file plus one registration call, no changes to the core pipeline:
subburn/
core/ job state, cancellation, pipeline orchestration
engines/ ASREngine / TranslationEngine / DiarizationEngine base classes + registry
(faster-whisper, Argos Translate, pyannote.audio implementations)
models/ resident-model caching (used by engines, and the model-management API)
subtitles/ SRT + transcript generation
media/ ffmpeg (extract, burn-in, softsub mux)
web/ FastAPI routers (auth, jobs, models, settings, logs)
app.py, launcher.py, gui.py, and tui.py are thin entry points on top of this.
FastAPI · Next.js · faster-whisper · Argos Translate · pyannote.audio · pywebview · Textual · ffmpeg
MIT. FFmpeg is bundled with the Windows installer under its own GPL license (invoked as a separate subprocess, not linked into anything here) - see installer/README.md.
