同一台机器、同一个模型,跑一首男声主唱的歌,人声轨干净得几乎能直接用;换一首女声主唱,伴奏轨里就飘起一层人声「鬼影」,副歌长音处尤其明显;再换一首童声,干脆连主旋律都剥不完整。你换参数、换模式,折腾一圈发现难度不是随机的——它跟着歌手的音高走。
先破除一个误解:模型对所有人声不是一视同仁
很多人以为,分离效果不好就是素材脏、码率低,模型对男声女声童声是一碗水端平的。其实不是。在素材质量完全相同的前提下,人声本身的基频(Fundamental Frequency,F0)高低,会系统性地改变分离难度。男声、女声、童声不是「同一道题的不同难度」,是三道不同的题——难的点完全不一样,验收时该盯的位置也不一样。
底层原理:人声是一把「梳子」,分离是在给梳齿找归属
人声的频谱不是铺满整个频带的,而是一把梳子的形状:一个基频 F0,加上它整数倍的一系列谐波(Harmonics)。成年男声 F0 大约 85~180Hz,女声 165~255Hz,童声可以到 250~400Hz 以上。
主流分离模型在 STFT 时频图上工作,对每一格能量判决「多大比例归人声、多大比例归伴奏各轨」。它依赖的核心线索之一,就是这把梳子的形态:梳齿落在哪些频点、间隔多大、跟别的乐器的梳齿错不错得开。
有两个物理约束决定了难度跟着基频走。一是时频图的频率分辨率有限:44.1kHz 采样、2048 点窗,每格约 21.5Hz,低频段一格就是人声基频的好几分之一,几个声源的基频挤在相邻几格之内,模型只能给出模糊判决。二是谐波重叠:任何两个声源的谐波系列总会在某些频点撞上,撞上的格子不可能判给「都对」,只能按能量比例分摊。基频的高低,直接决定了这两个约束在哪里咬人。
影响一:男声——基频扎进底鼓贝斯的地盘,低频格挤、掩蔽重
男声基频 85~180Hz,而底鼓(Kick)的基频区大约 50~150Hz,贝斯(Bass)大约 41~200Hz——三把梳子的根部几乎完全叠在一起。
这一带恰好是时频分辨率最粗的地方:21.5Hz 一格,男声一个基频只占 4~8 格,底鼓的基频、贝斯的根音、人声的 F0 常常落在同一两格里。再叠上低频掩蔽效应——底鼓瞬态的能量远高于人声稳态,同一格里能量大者会「盖住」小者的特征——模型在这片区域给出的掩码天然是模糊的:这一格 0.6 归人声、0.4 归贝斯,按比例切。
听感后果是双侧的:人声轨低频发浑(鼓和贝斯的能量渗进来),或者伴奏轨的鼓点里带出一截人声哼鸣。但也有个反直觉的补偿:男声基频低,意味着单位带宽内谐波更密、梳齿更多,中高频区的归属线索反而丰富。所以男声的整体轮廓通常分得清,难的从来是低频段的干净归属。
影响二:女声——基频上了中频,谐波撞进乐器主战区
女声基频 165~255Hz,它的 2~5 次谐波落在 330Hz~1.3kHz——正好是吉他、钢琴、键盘、弦乐群的能量主区。中频是流行编曲里信息最密集的地带,模型要在这里把女声的梳齿从一堆乐器的梳齿里一根根剔出来。
更麻烦的是,女声基频高,谐波间隔比男声宽、梳齿更稀,单根谐波承载的能量占比更高。它与乐器谐波相撞时不是「你中有我」的渐变,而是硬碰硬:同一根频点上,女声的第三谐波和钢琴的某根弦音几乎重合,掩码只能按比例劈。
听感后果也很典型:伴奏轨飘人声「鬼影」,尤其是副歌的长音、拖腔处;或者反过来,人声轨发闷、发虚——中频能量被判给了乐器。有意思的是,女声齿音所在的 5~8kHz 反而好分,因为那个高度乐器稀少,梳齿一目了然。
影响三:童声——基频更高更飘,训练样本还最少
童声基频普遍在 250Hz 以上,比女声更高,而且声带未发育成熟,基频稳定性差——唱同一个音也会抖、会飘,梳子的「齿距」本身就不均匀。
这带来双重不利。其一,基频越高,谐波越稀,模型能利用的梳齿线索越少;其二,也是更本质的——分离模型的训练语料以成年男女声为主,童声的频谱形态在训练集里占比极低。模型对「没见过几次」的音色缺乏稳定先验,给出的掩码要么保守(该判给人声的不敢判),要么飘忽(相邻两格判决互相打架)。
听感后果是:童声独唱的人声轨容易发薄、发碎,像被抽掉了芯;童声合唱更糟,高音区的童声与女声、与高频打击乐(镲片、铃鼓)挤在同一片频带,容易混作一团分不开。这是三类人声里唯一「换模式也补不回来」的情况,原因在数据,不在算法参数。
落地方案:先认人声类型,再按频段对症处理
实际操作的链路不复杂:第一步先判断素材的人声类型和音区分布——男声盯低频,女声盯中频,童声直接下调预期。第二步选模式:编曲复杂、底鼓贝斯能量大的歌走深度分离,它内建先降噪再分离的顺序,低频段的判决环境会干净一些;编曲简单的干声素材普通分离即可。第三步分段验收,最低音和最高音的段落各听一处,再决定要不要补救。
补救按频段来:人声轨低频发浑,高通轻切 100Hz 以下;中频缺损,对人声轨 3~5kHz 轻补提清晰度;伴奏轨有人声鬼影,别整体重跑,先确认鬼影是不是集中在高音段落。
难度跟着基频走,本质是「梳子和梳子错不错得开」
搞清楚机制之后,「这个工具行不行」就变成了一个更具体的问题:这首歌的人声住在哪个频段,它的邻居是谁。男声的邻居是底鼓和贝斯,女声的邻居是整个中频乐器群,童声的邻居是数据稀缺。听分离结果之前先想清楚这一点,比在三个模型之间来回重跑省时间得多——难度不是模型给的,是频谱分布给的。