Agent skill · Media & Video

wjs-dubbing-video

Use when the user has a video + a target-language SRT and wants the video to actually speak that language — generates a time-aligned TTS voice dub. Routes by voice ID — Volcano (豆包) TTS for Chinese, edge-tts neural for any language. Defaults to one voice (single-speaker); opt-in multi-speaker via visual diarization. Outputs `*_<lang>_dub.mp4` with the dub audio in place of the original. Final mixing (audio bed + burn-in) is handed off to `/wjs-burning-subtitles`. Triggers — "配音", "中文配音", "Chinese dub", "voice over this", "dub the video", "TTS this SRT", "different voice for each speaker".

jianshuogithub.com/jianshuoGitHub ↗
claude-codecodexships scriptsMIT
Install
npx skills add jianshuo/claude-skills --skill wjs-dubbing-video --agent claude-code

Same command for any agent — swap --agent for codex, cursor, copilot.

Facts
Files in the skill folder: 3
SKILL.md size: 21 KB
Bundled scripts: yes
Path: wjs-dubbing-video/SKILL.md
Open the folder on GitHub →
Where it comes from
Stars: 112
Language: Python

Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.

From the SKILL.md

# wjs-dubbing-video Video + target-language SRT → `*_<lang>_dub.mp4` with a time-aligned TTS voice. **This skill stops at the dub track.** Burn-in + audio bed mixing is the next skill (`/wjs-burning-subtitles/render.py` composites everything in one final encode). ## When to use - User has a target-language SRT (e.g., `entrevista.zh-CN.srt`) and wants the video to speak that language. - User says "中文配音 / 配音 / 帮我做配音 / dub it / voice over". - User has multiple speakers on camera and wants different voices per speaker. ## When NOT to use - No SRT yet → run `/wjs-transcribing-audio` then `/wjs-translating-subtitles` first. - Source-language only TTS (rare; usually you translate first) → still use this skill, but pass the source SRT. - Burn-in only, no audio change → skip to `/wjs-burning-subtitles`. ## Number of speakers — default to one **Default: assume one speaker.** Use a single voice for the entire dub. This is the right answer for monologues, vlogs, recorded talks, narrator-only clips, and the overwhelming majority of videos people ask about. Don't run diarization, don't tag the SRT with `[A]`/`[B]`, don't bring up multi-speaker complexity. **Switch to multi-speaker only when the

What's inside
Steps it walks through
  1. When to use
  2. When NOT to use
  3. Number of speakers — default to one
  4. Engine routing — by voice ID
  5. Volcano TTS (Chinese only)
  6. Resource ID — important quirk
  7. Response format
  8. Speaker catalog (verified working under volc.servicetype.10029)
  9. Audio params
  10. edge-tts (Microsoft Edge neural TTS)
  11. Voice selection — match the original speaker
  12. Chinese voices (Volcano preferred, edge-tts fallback)
  13. English voices (edge-tts neural, all multilingual)
  14. Picking heuristics
Ships with 2 files
  • scripts/dub.py
  • scripts/visual_diarize.py
Commands it runs
set -a; source ~/code/.env; set +a
uv venv .venv
uv pip install --python .venv/bin/python edge-tts
Mature Chinese contemplative female (Volcano):
zh_female_gaolengyujie_moon_bigtts -8% +0Hz
Warm English caring female (edge-tts, multilingual):
en-US-AvaMultilingualNeural -5% -3Hz
Default Chinese fallback (no Volcano creds needed):
zh-CN-XiaoxiaoNeural -8% -10Hz
uv pip install --python .venv/bin/python mediapipe opencv-python
More from claude-skills
All skills →
About this skill
What does the wjs-dubbing-video skill do?

Use when the user has a video + a target-language SRT and wants the video to actually speak that language — generates a time-aligned TTS voice dub. Routes by voice ID — Volcano (豆包) TTS for Chinese, edge-tts neural for any language. Defaults to one voice (single-speaker); opt-in multi-speaker via visual diarization. Outputs `*_<lang>_dub.mp4` with the dub audio in place of the original. Final mixing (audio bed + burn-in) is handed off to `/wjs-burning-subtitles`. Triggers — "配音", "中文配音", "Chinese dub", "voice over this", "dub the video", "TTS this SRT", "different voice for each speaker".

How do I install it?

Run `npx skills add jianshuo/claude-skills --skill wjs-dubbing-video --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.

Where does this skill come from?

From jianshuo/claude-skills, a repository with 112 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.

Is a popular skill a good skill?

Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.

Keep going