mothermachine

Browse / Video and streaming

VideoLingo

Subtitle translation and dubbing pipeline driven by config.yaml, a prompts file, and a batch spreadsheet.

AdaptableOperable Agent workflowWeb app Hybrid Python Config files License: Apache-2.0

A Streamlit app and batch runner that downloads a video, transcribes with WhisperX, splits and translates subtitles in three LLM passes, burns single-line subtitles, and optionally dubs with GPT-SoVITS, Azure, Fish, Edge, or OpenAI TTS. Every behavior is a key in config.yaml or a prompt in core/prompts.py.

Use it when
  • I publish tutorials in one language and want translated, single-line subtitles and a dub for another market
  • I have a folder of lecture videos to localise overnight from a spreadsheet, on my own GPU
Gotchas
  • Weaker LLMs break the strict JSON steps; delete output/ before retrying
  • Multilingual audio keeps only the main language; loud music needs the Demucs separation option
  • GPU path needs CUDA 12.6 and cuDNN on Windows; Docker needs CUDA 12.4 and driver > 550
  • No API or MCP; an agent drives it by writing config.yaml and the batch spreadsheet, then running the batch script

Last activity Aug 23, 2026. Fit: adaptable 3, operable 1.

Editions

Free · Free open source

  • Clonegit clone https://github.com/Huanshere/VideoLingo
  • Installpython setup_env.py
  • ImageContainer

VideoLingo hosted · Free closed source

For agents: JSON · Markdown

Adaptable: what is yours to change

Make it yours

Config only5 things to edit

Edit config.yaml: api.key, api.base_url, api.model, target_language, whisper, tts_method, burn_subtitles, and the starred advanced keys. Rewrite the translation and summarisation prompts in core/prompts.py. Add terms to custom_terms.xlsx. Write your own TTS in core/tts_backend/custom_tts.py. Batch runs read batch/tasks_setting.xlsx.

Env vars
none
Config files
config.yaml custom_terms.xlsx batch/tasks_setting.xlsx core/tts_backend/custom_tts.py
Prompt files
core/prompts.py
Accounts you need
OpenRouter, 302.ai, or another OpenAI-compatible LLM APIAzure, OpenAI, Fish, or SiliconFlow (dubbing, optional)

Source

Operable: what an agent can drive

Interface

ConfigConfig filespublished by the builderlocal

How an agent can drive an Operable Listing, in five levels: native (built for the agent as the primary interface), official (the Builder ships an agent interface), wrapped (a third party wraps the software's API), config (an agent can only drive it by editing files), gui (screen control only). An interface is official only when it is published by the same organization that ships the software. GUI-level Listings are allowed and sorted last.

Docs
github.com/Huanshere/VideoLingo/tree/main/batch

Reach

Partial coverage. 7 of 10 jobs reachable through the stated interface.

JobThrough the interfaceEvidence
Download a YouTube videoReachableconfig.yaml youtube and ytb_resolution keys; batch/tasks_setting.xlsx takes a URL or file
Word-level transcription with WhisperXReachableconfig.yaml whisper block; core/_2_asr.py runs in batch
Split and translate subtitlesReachableconfig.yaml target_language, max_split_length, reflect_translate; core/prompts.py
Custom terminologyReachablecustom_terms.xlsx at repo root; pause_before_translate key
Burn single-line subtitles into the videoReachableconfig.yaml burn_subtitles
Dub with a chosen TTSReachableconfig.yaml tts_method and per-TTS blocks; core/_10_gen_audio.py through _12_dub_to_vid.py
Batch many videosReachablebatch/tasks_setting.xlsx and OneKeyBatch scripts
Pause, resume, or stop a running taskNot reachableREADME: task control is a Streamlit UI feature
Search the provider's model listNot reachableREADME: model searchbox in the Streamlit UI
Dub multiple speakers separatelyNot reachableREADME Current Limitations: not supported

Code stack

Languages
Python
Frameworks
StreamlitWhisperXspaCyffmpeg
Package manager
uv
Database
none
Hosting target
localDocker (CUDA)Colab
Built
Unknown (recorded, never ranked)

Model stack

Providers
OpenRouter (default)302.aiany OpenAI-compatible APIOllamaAzure TTSOpenAI TTSFish TTSSiliconFlowEdge TTSGPT-SoVITS
Models
deepseek/deepseek-v4-flash (default)WhisperX large-v3
Keys you need
api.key (config.yaml)
Prompts live in
core/prompts.py

Evidence and confidence

FieldWhere it was seenConfidence
formFactorREADME: streamlit run st.py on :850195%
executionModelREADME: fixed pipeline; LLM does translation, WhisperX does ASR, TTS does dubbing90%
operabilityNo API; batch/ directory with tasks_setting.xlsx plus config.yaml is the only non-GUI path90%
effortconfig.yaml at repo root with commented keys; core/prompts.py present; custom_tts.py named in README90%
editionsREADME license: Apache 2.0; README links 'Try VL Now' at videolingo.io with no price shown70%
activeGitHub pushedAt 2026-08-23–
reach85%

Open questions

  • videolingo.io hosted edition pricing; docs.videolingo.io returned 404 to the fetcher
  • Whether batch mode honours every config.yaml key or only a subset listed in batch/README.md

Sources