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".
npx skills add jianshuo/claude-skills --skill wjs-dubbing-video --agent claude-code
Same command for any agent — swap --agent for codex, cursor, copilot.
Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.
# 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
- When to use
- When NOT to use
- Number of speakers — default to one
- Engine routing — by voice ID
- Volcano TTS (Chinese only)
- Resource ID — important quirk
- Response format
- Speaker catalog (verified working under volc.servicetype.10029)
- Audio params
- edge-tts (Microsoft Edge neural TTS)
- Voice selection — match the original speaker
- Chinese voices (Volcano preferred, edge-tts fallback)
- English voices (edge-tts neural, all multilingual)
- Picking heuristics
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
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.
