VideoLingo: Connecting the World, Frame by Frame
๐ Overview (Try VideoLingo Now! (opens in a new tab))
VideoLingo is an all-in-one video translation, localization, and dubbing tool aimed at generating Netflix-quality subtitles. It eliminates stiff machine translations and multi-line subtitles while adding high-quality dubbing, enabling global knowledge sharing across language barriers.
Key features:
-
๐ฅ YouTube video download via yt-dlp
-
๐๏ธ Word-level subtitle recognition with WhisperX
-
๐ NLP and GPT-based subtitle segmentation
-
๐ GPT-generated terminology for coherent translation
-
๐ 3-step direct translation, reflection, and adaptation for professional-level quality
-
โ Netflix-standard single-line subtitles only
-
๐ฃ๏ธ Dubbing alignment with GPT-SoVITS and other methods
-
๐ One-click startup and output in Streamlit
-
๐ Detailed logging with progress resumption
Difference from similar projects: Single-line subtitles only, superior translation quality, seamless dubbing experience
๐ฅ Demo
Language Support
Input Language Support(more to come):
๐บ๐ธ English ๐คฉ | ๐ท๐บ Russian ๐ | ๐ซ๐ท French ๐คฉ | ๐ฉ๐ช German ๐คฉ | ๐ฎ๐น Italian ๐คฉ | ๐ช๐ธ Spanish ๐คฉ | ๐ฏ๐ต Japanese ๐ | ๐จ๐ณ Chinese* ๐
*Chinese uses a separate punctuation-enhanced whisper model, for now...
Translation supports all languages, while dubbing language depends on the chosen TTS method.
Installation
Install Git (opens in a new tab), uv (opens in a new tab) and FFmpeg (opens in a new tab) first. Reopen your terminal and verify they are on PATH. For FFmpeg shared libraries and NVIDIA runtime requirements, follow the installation guide.
- Clone the repository
git clone https://github.com/Huanshere/VideoLingo.git
cd VideoLingo- Create the Python 3.13 environment and install dependencies
uv run --no-project --python 3.13 setup_env.py- Start the application
.venv\Scripts\python -m streamlit run st.py # Windows
.venv/bin/python -m streamlit run st.py # macOS / LinuxDocker
For Linux NVIDIA containers, use Docker with a compatible driver and NVIDIA Container Toolkit. The image uses the same Python 3.13 setup; see Docker docs:
docker build -t videolingo .
docker run -d -p 8501:8501 --gpus all videolingoAPI
The project supports OpenAI-Like API format and various dubbing interfaces:
- Choose an OpenAI-compatible Chat Completions provider and a model capable of returning structured JSON. Set the API URL, key and model in the sidebar.
azure-tts,openai-tts,siliconflow-fishtts,fish-tts,GPT-SoVITS
For detailed installation, API configuration, and batch mode instructions, please refer to the documentation: English | ไธญๆ
Current Limitations
-
WhisperX transcription performance may be affected by video background noise, as it uses wav2vac model for alignment. For videos with loud background music, please enable Voice Separation Enhancement. Additionally, subtitles ending with numbers or special characters may be truncated early due to wav2vac's inability to map numeric characters (e.g., "1") to their spoken form ("one").
-
Using weaker models can lead to errors during intermediate processes due to strict JSON format requirements for responses. If this error occurs, please delete the
outputfolder and retry with a different LLM, otherwise repeated execution will read the previous erroneous response causing the same error. -
The dubbing feature may not be 100% perfect due to differences in speech rates and intonation between languages, as well as the impact of the translation step. However, this project has implemented extensive engineering processing for speech rates to ensure the best possible dubbing results.
-
Multilingual video transcription recognition will only retain the main language. This is because whisperX uses a specialized model for a single language when forcibly aligning word-level subtitles, and will delete unrecognized languages.
-
Cannot dub multiple characters separately, as whisperX's speaker distinction capability is not sufficiently reliable.
๐ License
This project is licensed under the Apache 2.0 License. Special thanks to the following open source projects for their contributions:
whisperX (opens in a new tab), yt-dlp (opens in a new tab), json_repair (opens in a new tab), BELLE (opens in a new tab)
๐ฌ Contact Us
- Join our Discord: https://discord.gg/9F2G92CWPp (opens in a new tab)
- Submit Issues (opens in a new tab) or Pull Requests (opens in a new tab) on GitHub
- Follow me on Twitter: @Huanshere (opens in a new tab)
- Email me at: team@videolingo.io
โญ Star History
If you find VideoLingo helpful, please give us a โญ๏ธ!