multi-voice-dubbing · 多角色对话配音

多角色对话配音 skill:按选角表(cast)与逐行对白(lines),为每个角色分配独立音色与情绪,合成多声线音轨与带角色名的字幕。
情绪标注自动喂进配音引擎的真情感通道驱动演绎;旁白/主讲单列,与所有角色声线区分。要成品级的"像人"效果需配云配音 provider,免费引擎只适合草稿。
调用示例:在聊天框中说"给这段双人访谈配音,主讲用沉稳男声,提问者用活泼女声"。
产品详解
定位
multi-voice-dubbing 把"多人对话 / 多角色脚本"合成为多声线音轨:每个角色一个符合其人设的声音,而不是全程一个声音。产出的 voice.mp3 可直接喂给视频合成,voice.srt 是带角色名的对齐字幕。
核心能力
- 选角管理:cast.json 为每个说话人定音色(性别/年龄/气质/身份),旁白/主讲单列;
cast check校验音色有效、旁白独立、无撞音色。 - 逐行情绪驱动:lines.json 每行的 emotion(愤怒/冷笑/温柔等)自动喂进 provider 的情感通道,情绪标注越具体演绎越贴戏。
- 多声线合成:逐行按角色音色合成,ffmpeg 拼成一轨;
dub会打印用了几种声线,多人对话不该只有一个声音。 - 说话人字幕:按逐行实测时长对齐的带角色名字幕。
- 配音质量分层:edge 免费引擎仅供草稿(无情感引擎,只能变速变调);要成品效果用云 provider(SiliconFlow CosyVoice2 中文最稳、Gemini 免费层、MiniMax 等),无需 GPU。
- 自动降级:缺 key / 失败时该角色自动回退免费音色并告警,不阻断整体。
工作流程
- 选角(cast.json):为每个说话人定音色,校验无撞音色
- 逐行对白(lines.json):拆成有序逐行,标注每行情绪
- 合成(
multivoice.py dub):输出 voice.mp3 + voice.srt - 入视频:作 narration 喂视频合成器,或与 BGM 混音
输入与输出
| 输入 | 说明 |
|---|---|
| cast.json | 必填,选角表:每个说话人 → 音色与引擎配置 |
| lines.json | 必填,逐行对白 [{speaker, text, emotion}] |
| 输出路径 | 选填,默认 voice.mp3 + 同名 srt |
输出:多声线音轨 voice.mp3、带角色名的对齐字幕 voice.srt。
与相邻 skill 的区别
- tts-voiceover:单人整段口播的单一公共音色;多人对话用本 skill。
- voice-clone:克隆本人音色;本 skill 为虚构角色分配合适音色。
- short-drama:整部短剧的编排层,短剧对白已在内部委派给本 skill。
适用场景
- 短剧/有声剧的多角色对白配音
- 论文双人问答讲解(主讲 + 提问者)
- 访谈/播客脚本的多声线版本
- 任何"多个说话人"的口播内容
使用前准备
- 要成品级的"像人"效果,需自备云配音 provider 的 API key 并配置于项目
.env(推荐 SiliconFlow,中/英文文档均有配置示例)。 - 免费 edge 引擎只能变速变调、没有情感通道,适合草稿试听;缺外网时 edge 也无法合成。
- 缺 key 的角色自动回退免费音色并告警,不会中断;逐行 emotion 写得越具体,演绎越贴戏。
multi-voice-dubbing 隶属于 Aiglade Skill 库。在 Aiglade 聊天框中用自然语言描述需求即可调用。