Wjs Dubbing Video — Wjs 配音视频
v3当用户拥有一个视频和目标语言的SRT文件,并希望视频实际上使用该语言说话时使用 —— 生成时间对齐的TTS语音配音。通过语音ID路由 —— Volcano(豆包)TTS用于中文,edge-tts neural用于任何语言。默认为单一语音(单个说话者);通过视觉分割可选多个说话者。输出`*_<lang>_dub.mp4`,其中配音音频取代了原始音频。最终混合(音频床和烧录)交给 `/wjs-burning-subtitles` 处理。触发器 —— "配音", "中文配音", "Chinese dub", "voice over this", "dub the video", "TTS this SRT", "different voice for each speaker"。
运行时依赖
安装命令
点击复制技能文档
wjs-dubbing-video 视频 + 目标语言 SRT → __dub.mp4,带有时间对齐的 TTS 声音。该技能在配音轨道停止。烧入 + 音频床混音是下一个技能(/wjs-burning-subtitles/render.py 将所有内容组合成一个最终编码)。何时使用 用户具有目标语言 SRT(例如,entrevista.zh-CN.srt)并希望视频使用该语言。用户说“中文配音 / 配音 / 帮我做配音 / dub it / voice over”。用户在摄像机上有多个说话者,并希望每个说话者使用不同的声音。何时不使用 没有 SRT → 先运行 /wjs-transcribing-audio 然后 /wjs-translating-subtitles。仅源语言 TTS(罕见;通常先翻译)→ 仍然使用此技能,但传递源 SRT。仅烧入,不更改音频 → 跳过到 /wjs-burning-subtitles。说话者数量 — 默认为一个 默认:假设一个说话者。使用单个声音进行整个配音。这是单人谈话、视频博客、录制的演讲、旁白仅剪辑和大多数人要求的视频的正确答案。不要运行人声识别,不要在 SRT 中标记 [A]/[B],不要引入多说话者复杂性。仅当用户明确要求时才切换到多说话者 — 诸如“两个说话者”、“采访”、“对话”、“对话”、“分离说话者”、“每个说话者使用不同的声音”或直接请求进行人声识别。当触发时,按照下面的“多说话者配音”部分进行操作。如果您不确定视频是否为一个说话者或多个说话者,请先发送单声道版本。稍后添加说话者分离很便宜(只要重新生成配音);默认发送混乱的多说话者输出会浪费用户的时间。引擎路由 — 通过语音 ID 脚本/dub.py 自动路由通过语音 ID 前缀:语音 ID 模式 引擎 认证 zh_..._bigtts Volcano (字节跳动豆包) TTS VOLC_TTS_APPID + VOLC_TTS_ACCESS_TOKEN zh-CN-...Neural / en-US-...Neural / 等 edge-tts (Microsoft Edge 神经网络) 无(免费)对于普通话,Volcano 的自然度明显高于 edge-tts,尤其是对于情感/沉思内容。使用 edge-tts 当 Volcano 凭证不可用或作为调试回退时。Volcano TTS(仅限中文)端点:https://openspeech.bytedance.com/api/v3/tts/unidirectional(用于 TTS 1.0 和 2.0;Resource-Id 标头选择后端)。标头:X-Api-App-Id:(env:VOLC_TTS_APPID)# 10 位语音 App ID X-Api-Access-Key:(env:VOLC_TTS_ACCESS_TOKEN)# 32 位字符令牌来自语音控制台 X-Api-Resource-Id:volc.service_type.10029 # 参见资源 ID 注释以下 Content-Type:application/json 加载凭证:大多数用户将它们存储在 ~/code/.env 中。通过以下方式在任何会话开始时读取它们:set -a;source ~/code/.env;set +a 资源 ID — 重要的怪癖 文档列出了 seed-tts-2.0 作为“TTS 2.0(推荐)”资源,但典型的 TTS-SeedTTS2.0 控制台实例不包括流行的 _bigtts说话者目录(爽快斯斯,高冷御姐,开朗姐姐等)。尝试使用这些说话者对 seed-tts-2.0 返回 200 代码 = 55000000“资源 ID 与说话者相关资源不匹配”。解决方法是使用 volc.service_type.10029(TTS 1.0 V3 端点)— bigtts 说话者的音频质量相同,它们都可以在此资源中使用。捆绑的 dub.py 默认为 volc.service_type.10029;如果您有不同的实例,请使用 VOLC_TTS_RESOURCE 环境变量覆盖。其他 401/403 错误:401 代码 = 45000010“加载授权:请求的授权在 SaaS 存储中未找到” — App ID + 密钥组合对网关有效,但用户尚未激活此资源。他们必须前往火山引擎 → 语音技术 → 语音合成大模型 → 实例管理并开通服务。没有变通方法。403 代码 = 45000030 — 说话者不包含在用户的实例包中。响应格式 尽管文档使用随意的语言,但响应是流式 NDJSON,而不是单个 JSON 对象或原始音频字节。每行都是一个单独的 JSON 事件,带有 base64 编码的 MP3 块在数据中。终端事件具有代码:20000000(这意味着在此 API 的成功代码中为 OK — 与代码:0 不同)。连接解码块以获取完整的 MP3。导入 base64、json、requests audio = b"" r = requests.post(url,headers = h,json = payload,timeout = 60,stream = True) for line in r.iter_lines():if not line:continue evt = json.loads(line) if evt.get("code") not in (0, None, 20000000):raise RuntimeError(f"code={evt.get('code')} {evt.get('message')}") if evt.get("data"):audio += base64.b64decode(evt["data"]) 说话者目录(在 volc.service_type.10029 下验证)完整列表在 volcengine.com/docs/6561/1257544 — 但可用性取决于您的实例包。确认为 SeedTTS-2.0 普通启动实例的工作女声:说话者 ID 中文名 感觉 zh_female_gaolengyujie_moon_bigtts 高冷御姐 最适合沉思/精神内容。成熟、克制、平静。zh_female_kailangjiejie_moon_bigtts 开朗姐姐 温暖的老姐讲故事。zh_female_shuangkuaisisi_moon_bigtts 爽快斯斯 多才多艺、对话式基线。