分离完一首歌,先听伴奏。副歌人声一进来,伴奏立刻发薄;人声一停,那一块又像被抽空。整条伴奏单独放,感觉有人在 1~4kHz 挖了个坑,吉他和钢琴的「肉」都不见了。
多数人第一反应是人声没分干净。实际正相反:是分得太狠了。

先破除误解:不是没分开,是多扣了一块
把分离想成筛子的人很多:人声筛到一边,伴奏留在另一边,筛孔大小决定干净程度。这个模型漏掉了关键一步------筛完之后还要决定「每一格能量归谁多少」,而这个分配比例是可以偏的。
偏的方向只有一个:宁可多扣。因为听感上,伴奏里残留人声(bleed)比伴奏本身变薄更刺耳、更容易被判为「没分好」。工程实现会主动把这个人声的份额抬高,代价就落在伴奏身上。
底层原理:掩码是怎么把伴奏扣掉的
频域里,混合信号近似等于人声加伴奏:X(f,t) = V(f,t) + A(f,t)。
模型要估的是人声掩码 M(f,t),取值 0~1,表示这一格能量里人声占多少。于是:
V̂ = M · X, = (1 − M) · X。
理想情况下 M 就是真实占比,两轨相加还原原曲。实际系统为了压串音,会对掩码做一次「抬高」:M' = min(1, γ · M),γ 取 1.2~2.0,等价于把掩码往 1 推。或者用 1/γ 次幂,效果类似。
抬高的后果很直接:人声强的格子里,1 − M' 比 1 − M 小,伴奏被多乘了一个小于 1 的系数。人声越密、越持续,伴奏在那个频段被扣得越狠。

来源一:过减系数与训练目标的不对称
γ 的存在不是实现失误,是权衡的结果。γ = 1 时串音最明显,γ = 2 时伴奏最薄。多数工具的默认值落在中间偏保守的位置。
更深一层的原因在训练目标。分离模型常用的损失(比如 SI-SDR 一类的尺度不变指标)对两类错误的惩罚并不对称:
• 人声轨里混进伴奏 → 直接拉低指标,而且听感上明显;
• 伴奏轨里少了乐器 → 指标上损失较小,听感上要 A/B 对比才发现。
模型于是学出一个系统性偏置:遇到拿不准的格子,倾向判给人声。这就是为什么很多工具的人声轨听感很好,伴奏轨却总是发薄。不是伴奏不重要,是它没被当成主要考核项。

来源二:人声与伴奏在 1~4kHz 高度重叠
掩码是逐格判断的,一格通常对应几十毫秒乘几十赫兹。人声的能量主体在 200Hz~4kHz,第一、第二共振峰(F1/F2)密集落在 300Hz~3kHz。
而伴奏里的吉他、钢琴、弦乐、合成器 Pad,基频和低次谐波也大量堆在同一片区域。换句话说,这一带本来就是人声和乐器抢地盘的战场。
一旦某一格被判给人声,格里那部分乐器能量就跟着走了。乐器越密、编曲越满,被连带扣掉的越多。这也解释了为什么民谣、清唱类素材的伴奏分离得干净,而金属、电子、大编制流行一分离就「中间空」。

来源三:时间平滑让掩码在字与字之间还在扣
逐帧估计的掩码有方差,工程上一定会做时间平滑:中值滤波、递归平滑,或者带 attack/release 的包络跟踪。平滑窗口常见 20~50ms。
平滑压住了抖动,也带来了滞后。人声一个字的能量结束了,掩码还停在高位几十毫秒;下一个字还没起来,掩码已经提前压下去了。结果是伴奏在字与字之间、换气处、句尾被继续扣,波形包络出现有规律的凹陷------听感上就是「抽气」。
这个现象在语速快、气口多的素材上最明显:说唱、播客、快节奏流行。慢歌反而听不出来,因为字与字之间的间隔足够长,掩码有时间回落。
落地方案:用多条掩码分摊单条掩码的偏置
既然凹陷来自「一条掩码承担了所有判断」,一个实用的思路是把判断拆细。
先用两轨模式听一遍,确认凹陷程度;如果这条伴奏要用于正式混音,改用六轨分离,把鼓、贝斯、钢琴、吉他、其他分别取出来,再把非人声轨相加。每条轨的掩码各自估计,过减造成的凹陷被打散到不同频段,叠加后通常比单条伴奏轨均匀。代价是轨间相位与电平需要再对一遍。
操作上,把本地音频文件上传到 AI音轨拆分,选六轨;素材本身底噪大、或者来自现场录像,先走深度分离,先降噪再分离能减少掩码误判。

最后
掩码是一个概率判断,不是一次硬切。人声残留和伴奏被扣是一对跷跷板,工程实现永远在两边找平衡点。听感上人声残留更刺耳,所以默认值多半偏向保守。
知道这一点,你就知道该往哪边调:要伴奏厚一点,就得接受一点串音;要绝对干净,就得接受中频薄。两边都想要,只能靠多轨拆分把判断做细。