Every video, every language. Dub, subtitle, and clip right from your coding agent. "Dub this video into English" is the whole workflow.
English | 한국어 | Español | Português | Русский | Bahasa Indonesia | Deutsch | ไทย | 日本語 | 繁體中文 | 简体中文 | Tiếng Việt | Français
Files, folders, and YouTube/TikTok URLs all work.
Agent installing from this repo URL?In Claude Code, run this now (non-interactive, safe to re-run):
claude plugin marketplace add perso-ai/perso-dubbing-plugin && claude plugin install perso-dubbing@perso-ai
Have the user restart so
/dubbing
,/srt
,/clip
load. Other hosts:npx perso-dubbing
. No terminal (ChatGPT / Gemini):[docs/chatgpt-setup.md]·[docs/gemini-setup.md]
Claude desktop app (paid plan): open the Code tab, pick a folder, choose Local, paste:
claude marketplace add perso-ai/perso-dubbing-plugin && claude install perso-dubbing@perso-ai
Claude Code CLI: /plugin marketplace add perso-ai/perso-dubbing-plugin
, then /plugin install perso-dubbing@perso-ai
Codex · Antigravity · anything else: npx perso-dubbing
detects your hosts and installs into each — or, cross-agent via skills.sh:
npx skills add perso-ai/perso-dubbing-plugin
Requires Node.js 18+, nothing else. Visual walkthrough · FAQ
FREE · RUNS LOCALLY
Pick one of twelve presets, or just describe the look in plain words: "yellow text, black outline, bottom." The burn runs locally on ffmpeg: no upload, no queue, no account. Several languages? Each SRT gets its own finished video.
FREE · RUNS LOCALLY
Hand over any SRT and name the languages you want. Several at once is fine, one pass covers them all. Every line keeps its exact original timing, appearing and disappearing at the same moments as before. Before delivery, the result is checked for lines that run too long or read too fast.
FREE · RUNS LOCALLY
Timecodes in, vertical shorts out: reframed 16:9 → 9:16, named, and ready for subtitles. Or hand over the transcript and AI picks the moments that work as shorts: opens on a hook, rides the reaction to its peak, cuts before the energy drops. 30–90 seconds each.
PERSO API
One run takes a file, a whole folder, or a YouTube/TikTok URL and dubs it into several languages from a single upload. Videos over the plan limit split, process, and merge back on their own; an interrupted run resumes exactly where it stopped, never re-billing finished parts. Dubbing clones the original voice into the new language, and lip-sync moves the mouth to match that cloned audio.
PERSO API
No subtitles yet? Speech-to-text runs on Perso's servers and uses credits to turn the video's audio into an SRT in the original language, for one file or a whole folder. Every step after the SRT exists is free: translating, styling, burning.
PERSO API
Splits a video or audio into clean tracks: the voice and the background. With several speakers, each person's voice comes out as its own track. Swap the soundtrack, remaster the dialogue, or reuse any track on its own.
MIT, free and open-source. Everything that runs on your machine costs nothing and needs no account: styling and burning subtitles, translating an SRT you have, cutting clips at timecodes. Credits come in only when a job runs on Perso's servers: dubbing, lip-sync, voice separation, and speech-to-text, billed per processed second via the Perso Dubbing API.
No setup ceremony. The first time a server job runs, a browser opens: sign in, one click, key stored encrypted. Free steps never ask.
Privacy: /dubbing
, /srt
, and /clip
send usage events to improve the skills, covering what ran and how it went, media length, style choices, coarse locale, app version/OS, and whether a Perso API key was used (and registered). Each event has a random per-install ID and your workspace number; never your key, media, filenames, or subtitle text. Opt out with PERSO_NO_TELEMETRY
.
License: the skill code is MIT. API usage is subject to the Perso AI Terms of Service and pricing.