Short-form video — TikTok, Reels, Shorts — runs on word-animated captions now. Getting them usually means Submagic, CapCut Pro, or OpusClip: a monthly subscription, a cap on minutes, and your footage sitting on someone else's server before you've even published it.
I built Capite to avoid that trade entirely: free, open source, self-hosted.
What it does
Capite transcribes video audio locally, aligns word boundaries to the millisecond, applies one of 27 motion typography presets (Hormozi, MrBeast, Submagic bounce, karaoke, and others), and burns it into the video at broadcast quality. Docker or plain Python, no API keys, no watermark, no minute cap.
Architecture
Transcription and rendering are decoupled on purpose, so editing a transcript doesn't mean re-running the AI model:
Video upload
→ faster-whisper (CTranslate2): word timestamps + language detection
→ Next.js 16 studio: word-chip transcript editor, typo fixes, timing nudges
→ pysubs2: compiles {\k} karaoke, scale, and highlight tags into an .ass script
→ FFmpeg + libass: burns the video at CRF 18, or exports the raw subtitle file
Why faster-whisper instead of stock Whisper
Vanilla OpenAI Whisper in PyTorch is heavier than most local setups want to carry. faster-whisper, built on CTranslate2, gets a real CPU speedup with INT8 quantization and still returns the millisecond-level word boundaries the animation engine depends on, no GPU required.
Why .ass scripts instead of canvas rendering
A lot of open-source caption tools render by capturing frames from a headless browser canvas or compositing with OpenCV — both are slow and memory-heavy at scale. Capite writes standard .ass (Advanced SubStation Alpha) subtitle scripts and lets FFmpeg's native libass filter composite the typography during encoding, in one pass.
Features
27 motion presets, grouped by category (Trending, Clean & Tech, Editorial & Film, Pop & Expressive).
A transcript editor where clicking a word scrubs the video to that exact millisecond, with 0.1s timing nudges.
Re-encoding after an edit takes under 5 seconds — it skips the transcription step entirely.
Export to MP4, .srt, .vtt, .txt, or .ass for Premiere, Resolve, or Final Cut.
100+ languages, with font fallback for CJK, Arabic, Devanagari, Hebrew, Cyrillic.
Running it
git clone https://github.com/muneebkhan08/Capite.git
cd Capite
docker compose up
Open http://localhost:3000.
Repo: https://github.com/muneebkhan08/Capite
Release: https://github.com/muneebkhan08/Capite/releases/tag/v1.0.0
MIT licensed. Issues and pull requests are welcome, especially on the CJK/Arabic subtitle wrapping, that's the part I trust least right now.
Top comments (0)