人声分离(什么时候要、怎么要、怎么不吹)
一、先问:真的需要分轨吗?
分轨是手段,不是目的。按这个顺序判断:
- 只是不想被压住(口播被音乐盖)→ 用让位(
keep-dialogue),不需要分轨; - 想换掉环境声/加音效(现场声脏、有穿帮噪声)→ 需要"人声保留、伴奏丢弃"(
replace-bed); - 只留人声(配音重做、口播干净音轨)→ 需要"人声/伴奏"两轨;
- 只想留伴奏(去人声做 K 歌/翻唱底)→ 需要伴奏轨。
只有在 2/3/4 才真需要分离;多数成片配乐落在第 1 类。
二、两档引擎(工位实际执行顺序)
| 档位 | 引擎 | 质量 | 依赖 | 适用 |
|---|---|---|---|---|
| A(优先) | demucs / audio-separator | high(深度学习分轨) | 外部安装,不随仓分发(python-audio-separator 为 UVR 模型族的 Python 封装,MIT) | 母带级分轨、翻唱底、配音重做 |
| B(降级) | ffmpeg 中心声道近似 | approximate | 只需 ffmpeg(工位已装) | "让人声更清楚"、环境声替换的轻量场景 |
档位 B 的原理与边界(必须讲清楚,否则就是吹):
人声(中心)≈ 0.5·L + 0.5·R # 中置分量:对白/主唱通常在中间
伴奏(两侧)≈ 0.5·L − 0.5·R # 侧分量:立体声乐器/环境声
- 只对立体声素材成立;单声道素材直接拒绝(
separation_unavailable),不做"假装分离"; - 中置的伴奏(贝斯、底鼓、居中吉他)会漏进人声轨,人声混响也会漏进伴奏轨;
- 因此不能用它做"母带级分轨",也不能把结果说成"AI 分离"。
三、交付纪律
- 质量等级必须随产物标注:
engine+quality(high/approximate)+ 限制说明; - 抽听验收:分轨后至少抽听开头/中段/结尾各 5 秒(相位抵消会造成"空心"或"金属感");
- 不留中间垃圾:临时预处理文件清理,只保留
vocals.wav/instrumental.wav与回执; - 分离失败不静默降级:引擎失败要么按档位 B 降级并标注降级,要么直接报错;两者都不允许"当成 deep 成功";
- 不上行:客户素材与分轨结果只落工位/租户素材区,不进蜂群、不进日志。
四、与开源生态的关系(2026-09-22 核验)
| 项目 | 许可 | 状态 | 本仓口径 |
|---|---|---|---|
facebookresearch/demucs | MIT | 仓库已归档(最后推送 2024-04),模型仍可用 | 可用作档位 A 引擎,但需自担维护风险 |
nomadkaraoke/python-audio-separator | MIT | 活跃(最新发布 v0.47.0,2026-08) | 推荐的档位 A 引擎(UVR 模型族 CLI/Python 封装) |
Anjok07/ultimatevocalremovergui(UVR GUI) | MIT | 活跃(GUI,最后发布 v5.6,2023-09) | 人工精修的桌面工具;工位不依赖 GUI |
deezer/spleeter | MIT | 仓库活跃但发布线停在 v2.3.0(2021-09) | 不推荐新接入(模型较老) |
以上许可与状态来自本仓 2026-09-22 的联网核验;接入前请以各项目最新说明为准。
五、失败与不可修复
| 现象 | 归因 | 处置 | 案例 |
|---|---|---|---|
| 单声道素材 | 素材本身 | 拒绝近似分离;如需分轨安装档位 A 引擎 | — |
| 分离后"空心/金属感" | 相位抵消 | 降低分离用途(改回让位)或换档位 A | — |
| 人声轨里有鼓/贝斯 | 中置伴奏泄漏 | 档位 B 的固有局限;母带级需求走档位 A | — |
| 对白本身已削波/底噪极大 | 拍摄或渲染阶段 | 不可修复,退回上游,不用音乐掩盖 | — |
六、工艺判据(档位 → 质量 → 适用 → 来源)
| 判据 | 档位/做法 | 质量标注 | 适用与限制 | 来源 |
|---|---|---|---|---|
| 立体声素材 + 需要母带级分轨 | 档位 A:demucs / python-audio-separator(UVR 模型族) | high | 翻唱底、配音重做、母带级分离;引擎需外部安装 | KB:nomadkaraoke/python-audio-separator(MIT,v0.47.0,2026-08) |
| 立体声素材 + 只想"人声更清楚" | 档位 B:0.5·L+0.5·R / 0.5·L−0.5·R 中心声道近似 | approximate | 轻量场景;中置伴奏与混响会泄漏,不得称"AI 分离" | KB:本套件 §二 |
| 单声道素材 | 拒绝分离 | — | 直接报 separation_unavailable,不做假装分离 | KB:本套件 §二 |
| 只被压住(口播被音乐盖) | 不分轨,改用让位(keep-dialogue) | — | 多数成片配乐属于这一类 | KB:本套件 §一 |
| 分轨后交付 | 抽听开头/中段/结尾各 5 秒 | — | 检查相位抵消导致的"空心/金属感" | KB:本套件 §三·2 |
| 分离失败或降级 | 显式标注降级或报错 | — | 禁止"当成 deep 成功";不得静默降级 | KB:本套件 §三·4 |
知识库引用
知识库:library/bgm-kb/ — SCORE-001 人声与音乐协同电平口径("先让位、再考虑分轨"的电平协同判据依据:多数片子正确解是 ducking 而非分离)。检索入口:library/bgm-kb/_INDEX.md
历史事故案例:见 library/bgm-kb/failure-cases/(本技能暂无直接对应案例,分轨降级与电平协同相关事故见该目录)。