Ever tried adding subtitles to a video manually? It's tedious. That's why I built Subtitle Generator—an AI-powered tool that leverages Whisper's speech-to-text through the blazing-fast whisper.cpp backend.
✨ Key Features
- 🎯 7 Output Formats — VTT, SRT, ASS, TTML, LRC, JSON, TXT
- 🚀 Fast Processing — Powered by whisper.cpp for high-performance inference
- 📦 Batch Processing — Process folders of videos with resume capability
- 🔄 Video Embedding — Embed subtitles directly into videos with
--merge - 🌍 Multilingual — Support for multiple languages
- 🔀 Async API — Concurrent processing for Python applications
🛠️ Installation
pip install subtitle-generator
Prerequisite: FFmpeg required —
brew install ffmpeg(macOS) orsudo apt install ffmpeg(Ubuntu)
📖 Quick Start
Generate subtitles (VTT format):
subtitle video.mp4
Generate SRT format:
subtitle video.mp4 --format srt
Use a larger model for better accuracy:
subtitle video.mp4 --model large
Generate and embed into video:
subtitle video.mp4 --merge
Batch process a folder:
subtitle batch --input-dir ./videos --output ./subtitles
Available Models
| Model | Size | Speed | Best For |
|---|---|---|---|
tiny | ~75MB | ⚡⚡⚡⚡ | Quick previews |
base | ~140MB | ⚡⚡⚡ | General use (default) |
small | ~460MB | ⚡⚡ | Quality output |
medium | ~1.5GB | ⚡ | Professional work |
large | ~3GB | 🐢 | Maximum accuracy |
Tip: Use
.enmodels (e.g.,base.en) for English-only content—faster and more accurate.
CLI Options
| Option | Description |
|---|---|
--model, -m | Model: tiny, base, small, medium, large |
--format, -f | Format: vtt, srt, txt, json, lrc, ass, ttml |
--merge | Embed subtitles into video |
--threads, -t | Processing threads (default: 4) |
--resume | Resume interrupted batch |
🔗 Links
- PyPI: subtitle-generator
- GitHub: innovatorved/subtitle
- Issues: GitHub Issues
Status: 🚀 v2.0.2, MIT Licensed, actively maintained
If you find it useful, a star on GitHub would be appreciated! ⭐
For support: vedgupta@protonmail.com