Helping Music Co-Creation Agents 'Listen' Well: Hierarchical Self-Supervised World Models for Understanding and Generation
Scott H. Hawley
NeurIPS 2026 Creative AI Track
cs.SD, cs.LG, eess.AS
2026-08-05
2.55M 自监督音乐模型中,节奏与乐句自发涌现,唯独和声要靠监督;加一点和弦标签,未监督的调性识别从 0.16 升到 0.70。
协作式音乐创作 Agent 想要一个能听懂你弹了什么、给出口头反馈和少量音乐建议、但绝不替你把活干完的搭档。作者借了个比喻:AI 版 Rick Rubin,那位自称「几乎不会乐器、但对喜欢什么很果断」的传奇制作人。这类系统的瓶颈不在「脑子」(LLM 已经能聊音乐),而在「耳朵」,也就是把音乐转成足够丰富、可供理解和生成的内部表征。大型音频语言模型在简单音乐任务上反而不如专门的小模型,而且过去这类感知、生成一体的方案(包括作者自己上一个基于扩散的 Pictures of MIDI)慢到必须上 GPU,把没有好显卡的音乐人挡在门外。这篇要解决的就是:用一个小到能在 CPU 上秒级响应的自监督模型,同时撑起「听懂」和「给建议」两件事。
整体是个分层自监督「世界模型」,对应全系统的「耳朵」加「嘴巴」。编码器是 2.55M 参数的 Swin V2,在 MIDI 钢琴卷帘图像上自监督训练,沿用作者前作 MIDI-RAE-JEPA 的目标:音高、时间等变损失,SIGReg 防坍塌,掩码嵌入预测,软因子分解损失。输入是 128×128 的二值谱面裁窗,横轴 32 分音符精度、四小节一窗,故意丢掉力度(velocity)以适配作曲而非演奏的场景。
设计上有个硬约束:推理要在 CPU 上及时完成。这把裁窗尺寸钉死在 128×128,也促使生成端从扩散换成 flow matching,后者轨迹更直、几步 Euler 积分就够,而扩散修复(inpainting)要很多步。生成直接在像素空间做流,不压缩到隐空间,条件信号是各级嵌入经 PCA 降维(保留至少 90% 方差,3 倍压缩)后的结果。一个巧妙的复用:训练时按各级随机丢弃条件的多级 dropout 方案,既能控制生成变体偏离原段多远,又顺带实现了图像式 inpainting。用户在谱面上「画」出要改的区域,对应位置的条件被置零,模型用周围上下文填补,无需专门的 inpainting 采样器。
探针(probe)实验给出最核心的发现:一种音乐属性在分层里「能被线性读出」的层级,正好对应它运作的时间尺度。乐句边界在最粗的几层(L0 到 L2)最好读,音符密度与和声细节在最细的几层(L4、L5)最好读。
更关键的是哪些东西「免费涌现」、哪些「必须讨要」。节奏结构和乐句边界几乎完全从自监督目标里长出来;和声内容则几乎不在表征里。加一个小小的和弦监督头,根音识别从 0.25 升到 0.59,联合和弦从 0.18 升到 0.54,而调性识别(从未被直接监督)从 0.16 升到 0.70。代价很小:乐句边界 AP 从 0.27 掉到 0.25,时间偏移从 0.26 掉到 0.24。
和 DINOv2 基线对比很有信息量:在能归结为图像统计的属性上 DINOv2 持平甚至更好(音符密度 0.93、跨歌区分更锐利),但在音乐专属的探针上掉队(chroma 0.36 对 0.65,乐句边界 AP 0.21 对 0.27)。作者明说这些和声分数应读作「容量探针」而非下游性能,专门的小和弦检测器做得好得多。
生成:用真实段落自己的嵌入做条件,flow 在像素 F1 0.996 上几乎逐像素复原图窗;inpainting 中填入的音符密度随 dropout 强度单调下降(细层全 dropout 时恢复 76%,全部层级全 dropout 时恢复 53%)。
效率:编码一窗 8.6 毫秒(2 个 CPU 线程),10 步 Euler 出一条建议在满载 CPU 上 2.8 秒、Apple MPS 0.6 秒、笔记本 RTX 4090 仅 0.10 秒。文中附了一个在线 demo 可玩。
对做音乐工具或创作 Agent 的人,这篇给出三点可借鉴的东西。第一是「世界模型」思路在符号音乐上的一次认真落地:不靠乐理词汇和标签,让模型自己摸出分层结构,并且确实摸出了节奏和乐句,这暗示自监督对结构化音频、符号信号是有效的,而不只是自然图像的专利。第二是那条务实的工程红线(CPU 秒级推理)倒逼出的选型:128×128 定窗、像素空间 flow matching、多级条件 dropout,三者合起来让「条件生成」和「图形化 inpainting」共用同一条管线、同一次训练,省掉了专门的修复采样器。第三是那句对从业者的提醒:别指望自监督把一切都涌现出来。和声这类需要明确语义的东西,花一点监督去「问」比等它自己「长」出来划算得多:0.18 到 0.54、以及未监督的调性 0.16 到 0.70,是很有说服力的证据。
作者自己最坦诚的一处:和声分数是容量探针不是实用性能,真要和弦识别请用专门的小模型。模型还丢掉了力度、多乐器、音符起始(onset)等信息,二值谱面把复音演奏压成「有没有音」,表现力天花板被这个表示卡死。裁窗固定 128×128(四小节),长程结构只能靠把最粗层当 token 喂给序列模型来扩,目前还没做。数据仍以 POP909 流行歌为主;换到 Lakh 更大数据集上,4 倍量在匹配训练预算下没有稳定增益,反而让 chroma 和跨歌区分变差,说明这套路子对数据量没那么饥渴,但也意味着上限可能没被充分试探。inpainting 填入的音符「有时会落空」,作者承认不如更大的扩散模型贴得紧,靠「Agent 只需给个灵感、由人来实现」来兜底。最后,全文是单作者、小规模实验,关键结论(涌现 vs 讨要)依赖探针解读,还没有在真实的端到端协作创作流程里验证用户是否真觉得有用。