用途:用户已有视频和目标语言SRT(如entrevista.zh-CN.srt),希望视频用该语言说话,或提到“中文配音/配音/dub it/voice over”时使用。无SRT需先转写、翻译;只烧录字幕不改音频则用后续烧录技能。输出为 <源文件名>_<语言>_dub.mp4,作为下一步 /wjs-burning-subtitles/render.py 的输入。
主要能力:脚本 scripts/dub.py 按声音ID前缀自动路由引擎。zh_..._bigtts 走火山引擎TTS,需环境变量 VOLC_TTS_APPID 与 VOLC_TTS_ACCESS_TOKEN,可先 set -a; source ~/code/.env; set +a 加载;zh-CN-...Neural/en-US-...Neural 等走 edge-tts,免费无需密钥。流程为逐条合成MP3、ffprobe测时长、超长用 atempo 加速、偏短补静音,并按SRT间隙插静音使音频长度与视频一致,最后 -c:v copy 封装。默认假设单一说话人;仅当用户明确提到双人、访谈、对话、区分说话人等才启用多说话人。多说话人推荐 scripts/visual_diarize.py 视觉分离(需 mediapipe、opencv-python),输出带 [A]/[B] 标签的SRT;也可手工在SRT加标签,并用 --voice-map "A=...,B=..." 映射声音。
使用方式示例:.venv/bin/python ~/.claude/skills/wjs-dubbing-video/scripts/dub.py zh_female_gaolengyujie_moon_bigtts -8% +0Hz;英文示例加 en-US-AvaMultilingualNeural -5% -3Hz。全片合成前建议先用最长与最短文本试听3–4组声音、语速、音高并等用户确认。中文偏短时可降 --rate 至 -12%/-15%,或对单条做 0.82×–0.95× 拉伸,极端情况才扩写译文(需用户确认,会改字幕)。
限制:火山 TTS 仅接中文;未提供英文火山声音。资源ID默认 volc.service_type.10029,若实例不同可用 VOLC_TTS_RESOURCE 覆盖。常见错误:401 code=45000010 表示未开通资源,需去火山引擎语音合成大模型实例管理开通;403 code=45000030 表示声音不在实例包内;55000000 表示资源与声音不匹配。edge-tts 应装在项目venv并由单一常驻Python进程调用,不要每段用 uvx,否则易被限流中断。部分文档列出的声音(如 vv_uranus_bigtts、qingxin_moon_bigtts 等)在常见实例可能不可用,承诺前需先测。收费与价格信息暂未提供。