Singing Accompaniment Generation(SAG,人声伴奏生成)想做的事很直观:给你一段干净的人声/旋律,模型生成一段和声、节奏匹配的伴奏。

但现实里,很多SAG系统都踩在同一个坑上:它们训练时用的“人声输入”,往往不是录音棚里的干声,而是通过源分离(Music Source Separation, MSS)从整首歌里“抠出来”的人声。

问题来了:源分离的人声通常带着各种“分离瑕疵”(artifact),比如:

  • 频谱泄漏:伴奏残留混到人声里

  • 失真、涂抹、金属感等分离噪声

而主流做法(用mel谱、或SSL特征如MERT/w2v-BERT)会忠实保留这些声学细节。

结果就是:

1)模型学到的不是“旋律→伴奏”,而是“瑕疵→伴奏”

训练集中,人声里总带着分离瑕疵,模型会把“瑕疵纹理”当成条件的一部分,甚至把它当成“该怎么配伴奏”的线索。

2)出现致命的 Train-Test Mismatch(训练-测试不匹配)

  • 训练:输入=“带瑕疵的分离人声”

  • 测试:真实应用常见输入=“干声人声(无瑕疵)/录音棚stem”

于是模型一到干净人声就“找不到它熟悉的线索”,直接崩盘:生成的伴奏跟旋律毫无关系。

3)更极端:给“乐器独奏旋律”配伴奏几乎完全失败

如果输入变成一段solo吉他/钢琴旋律(没有人声、没有分离瑕疵),很多现有SAG模型更是直接失效。


论文:https://arxiv.org/pdf/2509.14052

演示与数据主页:https://anyaccomp.github.io/

解决方案

ANYACCOMP的核心思路一句话概括:

不要把“带瑕疵的声学细节”当条件。

先把输入压缩成“只剩旋律本质”的离散旋律码,再用生成模型去配伴奏。

我们把它拆成一个两阶段框架:


✅核心工作一:Quantized Melodic Bottleneck(量化旋律瓶颈)——只保留旋律,抹掉音色/瑕疵

我们认为一个“靠谱的条件表示”要满足两个性质:

  1. Timbre Invariance(音色不敏感)不管你是人声、钢琴还是吉他,同一段旋律在表示空间里应该差不多,不能被音色带跑。

  2. Melodic Clusterability(旋律可聚类)同一段旋律(哪怕换了音色)应聚到一起;不同旋律要分得开——这样生成模型才“看得懂旋律结构”。

具体怎么做?

  • 先把输入音频转成 Chromagram(色度谱):只看12个音高类别(及其扩展bin),天然比mel谱更弱化音色细节

  • 再用 VQ-VAE 把chromagram进一步量化成离散token序列(相当于“旋律码”)

  • 离散化会强迫模型用有限码本表达主要旋律结构,进一步丢掉与旋律无关的纹理(包括分离瑕疵)

我们用可视化对比了四种表示:Mel、MERT特征、Dense Chroma、VQ Chroma。

结论非常明确:

  • Mel / MERT:明显按“乐器类型/音色”聚类(音色不敏感做不到)

  • Dense Chroma:有所改善

  • VQ Chroma(ANYACCOMP用的):

    不同乐器点云充分混合(音色不敏感最好)

    同一旋律簇更紧、更分明(旋律可聚类最好)

这一步的本质是:把条件从“声学细节”升级成“更像符号的旋律结构”。


✅核心工作二:Flow-Matching Transformer ——用“旋律码”来生成伴奏(而不是用带瑕疵的人声谱)

第二阶段才进入生成:

  • 条件:第一阶段输出的离散旋律码 c

  • 目标:生成伴奏的mel-spectrogram,再通过vocoder合成音频

  • 生成模型:Flow-Matching Transformer(FM)

  • 训练上还加了一个REPA对齐损失:把模型中间层对齐到预训练音乐模型(MERT)的表征,帮助更稳的音乐感知

直观理解:

生成模型只“看旋律码”,不再“看分离瑕疵纹理”,从机制上切断了过拟合瑕疵的通路。

效果验证

我们的评测设计也很“针对痛点”,分三套数据集(全部10秒clip):

  1. YuE(域内):分离人声(跟训练分布相近)

  2. MUSDB18(关键泛化):干净vocal stem(无分离瑕疵)

  3. MoisesDB(极限泛化):solo乐器旋律(人声SAG模型最容易挂的场景)

关键客观结果

看伴奏和谐度就够了——它衡量“生成的伴奏是否跟输入旋律对得上”:

  • MUSDB18(干声)

  • FastSAG:APA 0.000(完全崩盘)

  • ANYACCOMP:APA 0.710(仍然能对齐旋律)

  • MoisesDB(乐器独奏)

  • FastSAG:APA 0.000(完全失败)

  • ANYACCOMP:APA 0.203(首次实现“对乐器旋律也能配伴奏”)

同时FAD等指标也显示ANYACCOMP在泛化集显著更好,说明不是“随便生成点音乐糊弄”,而是整体分布更接近真实伴奏。


典型失败案例

在干声输入上,使用mel条件的模型会出现严重spectral leakage(频谱泄漏):输出里直接抄进了输入的残留/纹理——这是典型“学会瑕疵相关性”的症状。ANYACCOMP则能生成更干净、更像独立伴奏的谱。


主观听感

在三套数据上,听众都明显更偏好ANYACCOMP:

  • YuE:Quality 3.12 / Coherency 3.05(FastSAG仅约1.9/1.8)

  • MUSDB18:Quality 3.23 / Coherency 2.75(FastSAG约1.7/1.5)

  • MoisesDB:Quality 3.00 / Coherency 2.70(FastSAG约1.6/1.5)

一句话:不仅指标好,听起来也更像“真能用”。


总 结

ANYACCOMP解决的是SAG长期的“工程级痛点”:

  • 过去:模型对“源分离瑕疵”形成依赖 → 一到干声就崩现在:用“量化旋律码”做条件 → 旋律与音色/瑕疵解耦 → 干声/乐器也能泛化

它最大的意义不只是把分数刷高,而是把SAG从“只能在分离人声基准上跑分”推进到更实用的场景:

  • 录音棚vocal stem快速配伴奏

  • 甚至给solo乐器旋律做自动配器/伴奏雏形(共创工具潜力很大)