SheetSage2发布:港科大等机构让AI写谱先感知再下笔
你有没有试过把一首喜欢的歌扒成乐谱?哪怕你完全不懂乐理,也大概知道这件事有多折磨人。你得一边听一边猜这段是什么和弦,这句旋律到底该写高八度还是低八度,鼓点落在哪个拍子上,副歌从哪一小节开始。专业音乐人做这件事,靠的是耳朵加经验,外行人做这件事,基本等于盲人摸象。那让AI来做这件事,行不行?2022年的时候,斯坦福...
把一首喜欢的歌扒成乐谱,你试过吗?就算完全不懂乐理,也多少能体会这活儿有多磨人。听的时候得一边猜和弦,一边判断这句旋律该记高八度还是低八度,鼓点落在哪一拍、副歌从哪小节起,全得靠耳朵盯。专业音乐人凭听力和经验硬啃,外行上手基本就是盲人摸象。
那换AI来干,能不能行?
2022年,斯坦福的研究者做过一个叫SheetSage的系统,算是这个方向的开山之作。节奏、和弦、旋律这些要素它都能从音频里认出来,再拼成一张简谱。可用过的人很快发现一个让人哭笑不得的毛病:每个要素单拎出来看都还过得去,凑到一块儿就乱套了。
节奏模块说这首歌是80拍,旋律模块转出来的音符却暗示这是160拍的节奏型。和弦模块给的和声走向,又跟旋律模块猜出的调性对不上。整份谱子像几个互不通气的人各写各的,拼起来到处是裂缝。
这篇论文要解决的核心矛盾就在这儿:局部预测再准,也未必能拼成一份读得通的乐谱。
难在什么地方
你可能会想,把节奏、和弦、旋律、调性分开做准,不就完了吗?
还真不行。
问题在于,这几个音乐维度并非互不相干的拼图块,它们互相牵制。旋律里一个音记成C还是D,得看当前是什么调;音符时值和小节线,必须共用同一套节拍网格。节奏模块和旋律模块要是各自为政,哪怕单独测试时每个模块都表现优秀,拼出来的谱子照样支离破碎。
数据这一头更麻烦。想训练一个能听懂音乐全部维度的AI,得有海量“录音+完整乐谱”配对数据。可现实世界里这种数据极其稀缺,大多数公开数据集只标了节拍,或者只标了和弦,很少有一份能把节奏、和弦、调性、旋律、曲式全标全。
标注质量*:说的是标注信息准不准、全不全。有的数据集时间戳会带上几十毫秒的偏差,而乐谱转录要求精确到10毫秒级别,这点误差就够让人头疼了。
这就好比你想教一个学生写一篇融汇历史、地理、文学知识的综合论文,手头的参考书却一本只讲历史,一本只讲地理,还都有点过时错漏,没有一本把这几门知识编织在一起讲透。硬拿这些零散资料直接喂给学生,他写出来的东西大概率是历史部分和地理部分互相打架,因为他从没见过一篇真正融会贯通的范文。
香港科技大学、纽约大学、MBZUAI等机构的研究者写了这篇论文,SheetSage2正是冲着这两个难题来的:AI怎么才能学会跨维度的一致协调,训练数据又该上哪儿找够用。
先解决数据荒:用MIDI造出几十万份“假”录音
现成的“录音+完整乐谱”数据不够用,那就自己造。
这里得先交代一下MIDI是什么。
MIDI*:一种把演奏信息记下来的数字格式。它存的不是声音,而是“哪个音、什么时候响、响多久、用什么乐器”这类符号化内容,可以理解成乐谱的数字版。
MIDI文件天然带着音高、时长、乐器轨道这些信息,把它渲染成音频,就得到一对天然对齐的“音频+符号标注”。研究者用的是叫Los Angeles MIDI Dataset的集合,里面有超过40万个去重后的MIDI文件,体量相当可观。
不过这里有个坑:MIDI文件里的高层标注,比如调性、和弦、旋律轨道,经常缺失或者不可靠。有研究者统计过,甲壳虫乐队的MIDI文件在调性识别上的准确率只有40%左右,排除掉那些默认标成C大调的敷衍标注后,也只能到84%左右,离真正可靠的标注还有距离。
研究者想了个巧办法,叫伪标签自举。
先靠专家规则,从少量MIDI文件里挖出高置信度的种子标签。比如一个多轨编曲里,某个音轨是持续的柱式和弦,那它大概率就是在交代和声走向;某个音轨名字直接叫“melody”,那它大概率就是旋律轨。拿这些高置信度的例子去微调一个预训练的符号音乐模型,训出一个自动标注器,再把它应用到整个MIDI库上。
效果相当惊人:旋律种子样本池里原本只有17134首歌带有明确的旋律轨道命名,走完这套自举流程后涨到185887首,规模扩大到10.8倍。
这个思路其实挺像教小孩认字。你不可能一开始就给孩子看一本没有拼音标注的厚字典,那样他什么也学不会。可以先教会他几百个最常见、最容易辨认的字,再让他拿着这点底子去啃更难的文章,边读边猜,猜错了自己纠正,慢慢地,认字的范围会越滚越大。没有这个自举过程,直接拿那一万七千首高置信度样本去训练最终模型,数据量撑不起一个靠谱的AI;可一开始就想让模型直接从全部40万首里学,又会被大量错误标注带偏方向。
靠这套流程,研究者攒出了大约36万条合成训练数据,配合FluidSynth这类音频渲染工具,把MIDI转成24kHz的音频,构成了后续训练的基础材料。
两步走:先学会“感知”,再学会“下笔”
数据准备妥当,就轮到模型搭建。SheetSage2的训练被切成三个阶段,这套安排有话可讲。
头一个阶段是搭合成数据,前文已经交代过。第二个阶段训的是SheetSage2-Prober,第三个阶段再训SheetSage2-AR。
那为什么不干脆训一个端到端模型,一次把事办完?
原因在训练数据本身就"不干净":时间戳不准,标注残缺,信息彼此冲突。拿这样的数据直接去训一个要吐出完整、自洽序列的模型,它会被噪声牵着走,养出一身自相矛盾的输出习惯。
研究者的办法,是先训一个"抗噪能力好"的感知模型,也就是Prober。
Prober*:论文里管逐帧预测的那个感知模型,分成非旋律与旋律两个子模型,前者管和弦、调性、节奏、曲式,后者管旋律这几类任务。
它要学的并不是生成一整段连贯乐谱,而是逐帧回答"这一下是不是拍点""此刻的和弦是什么""这段旋律的音高落在哪儿"。逐帧判断的好处是,标注里几十毫秒的偏差它不太在乎,某些标签缺了也能凑合——毕竟每一帧的判断都是相对独立的局部活儿。
Prober训好之后,后面接一层结构化解码器,把那些散落的逐帧概率归整成离散、自洽的标签序列。正是这一步真正摆平了"各模块互相打架",细节后面再讲。
等Prober产出质量过关、前后一致的伪标签序列,研究者才拿它去训第三阶段的SheetSage2-AR。
AR*:Autoregressive的缩写,中文叫自回归,说的是模型生成序列时,每一步预测都靠前面已经生成的内容,一个token接一个token往下写,跟人写文章一个字一个字接下去差不多。
SheetSage2-AR是货真价实的序列到序列模型:音频先编码,然后像写文章那样逐token吐出一整套事件序列,节奏、和声、旋律、曲式信息都在里面,最后可以转成ABC记谱法文本或MIDI文件。
"先感知、后生成"这套两段式打法,说到底就是把一个大难题拆成两个小难题。Prober不用操心写出完整连贯的乐谱,只管把每一帧判准;结构化解码器专门管拼接时的逻辑自洽;SheetSage2-AR则跟着老师的范本,专心学怎么流畅地写出完整成品。这种分工,好比先请一位老编辑把文章的事实核清楚、逻辑捋顺,再请文笔好的作家照着这份理顺的草稿重新组织语言,写成一篇流畅文章。少了这道工序,直接让作家去啃一堆事实混乱的原始素材,写出来读着可能很顺,内容却经不起推敲。
结构化解码:让节奏不再"忽快忽慢"
Prober吐出来的是一堆概率——这一帧是拍点的概率多少,那一帧是某个和弦的概率多少。怎么把这些概率变成一份看得过去的乐谱,正是结构化解码要解决的。
其中最适合展开讲的,是节奏解码的设计。
论文点出一个很典型的现象,叫节奏层级不一致:模型在同一首歌里切换速度判断,忽快忽慢。
论文里举了个具体场景:一首歌有两段主歌,内容和节奏其实差不多,只是第一段没鼓、第二段加了鼓。传统节拍跟踪只会盯局部判断当前速度,可能把没鼓那段判成80拍,把有鼓那段判成160拍——尽管这首歌的实际音乐速度从头到尾压根没变。速度判断这样来回横跳,同一首歌的不同段落就会用上不一样的节拍网格和音符时值记法,乐谱看着特别别扭。
问题出在哪?传统的动态贝叶斯网络解码器,也就是论文提到的DBN,判断速度时只能看局部窗口里的信息,它没有贯穿全曲的"基准速度"这个念头。
SheetSage2的对策是设计一个三阶段的节奏解码器,核心动作是先定一个全局速度锚点。
具体怎么定?先把模型在整首歌范围内对"中位速度"的预测汇总起来,池化出一个最可能的锚点速度。锚点立住之后,后面局部速度的判断都变成相对这个锚点的小幅微调,不再是每个片段各管各的。
这跟开长途车一个道理:每过一个路口都重新估一次全程该开多快,就容易被某段路的限速牌带偏,快一阵慢一阵;一开始就把整趟旅程的平均时速定下来,中途只做小幅调整,车才开得稳。SheetSage2干的就是这件事——先定锚,再微调,而不是每一帧都重新猜一遍。
论文用具体数据检验了这套设计。研究者定义了一个"混淆比例"指标,衡量一份录音里预测节拍速度与参考速度发生几倍关系混淆的比例,比如同一首歌里既有1倍速又有2倍速的判断。在osu2017数据集上,近期强基线Beat This!的混淆比例高达20.74%,也就是五首歌里就有一首出这毛病。Prober把这个比例压到2.96%,用传统DBN解码同样的Prober输出则是3.70%,SheetSage2-AR更是压到1.48%。
这组数字挺能说明问题:结构化解码确实比传统DBN解码器更守得住全局一致性,而且AR蒸馏并没有把这个优势弄丢。
解决旋律里的"八度幽灵"
旋律转录还有另一道老难题:八度模糊。说白了,模型常把同一个音判到旁边的八度上去。一句本该是C4-E4-G4的旋律,它可能写成C5-E4-G4,中间那个音平白跳高了一个八度。这不怪模型乱猜——同一个音名在不同八度上听着本就相似,伴奏一复杂,误判就容易发生。
论文的解法挺巧:不直接预测绝对音高,改成预测音程关系,也就是当前音比前一个音差几个半音。研究者把音程差切成七个桶,差距过大的音程被归进同一个粗粒度类别——隔得太远的两个音,对判断旋律走向本来也没多大参考价值。这样一来,模型决策时看到的不再是孤立的绝对音高数字,而是“这个音跟上一个音差多远”。相对关系天生比绝对音高稳,旋律的听感说到底由音程构成,整体移低或移高一个八度,只要音程对得上,旋律的“形状”就还在。
这个思路像给人指路:少说“从东经多少度到东经多少度”,多说“往前走200米,再左转”。绝对坐标换个基准点就容易累积误差,相对方向和距离反而更可靠。旋律转录用的是同一套逻辑——与其死磕绝对音高,不如先把相对音程关系定住。
实验数据也撑住了这个设计。RWC完整旋律数据集里有333个连续乐器段落,用上相对音程信息的完整解码器,把八度混淆比例从12.91%压到9.31%。对照之下,前代系统SheetSage1在同样场景里混淆比例高达34.83%,差不多三分之一的乐句存在八度跳变。SheetSage2-AR推理时已经不用那套专门的动态规划算法,混淆比例仍只有11.71%——蒸馏把老师的一致性习惯传给了学生模型。
自回归蒸馏:教给学生规矩,却不把规矩本身交出去
有个设计选择挺有意思:SheetSage2-AR推理时完全不用前面那套结构化动态规划解码器,只是逐个token贪心解码。那它是不是放弃一致性了?
正好相反。研究者用的是自回归蒸馏:先让Prober加结构化解码器这套组合生成一批高质量、自洽的伪标签序列,再把这些序列当硬目标,训练AR模型去模仿。
蒸馏*:机器学习里的一种训练方式,通常让一个更强或经过特殊处理的教师模型的输出,去指导结构更简单的学生模型学习,目的是让学生模型不必带着教师那套复杂机制,也能达到接近的效果。
这像带新人。老师傅脑子里有一整套判断标准和纠错机制,新人跟着干够多的活,哪怕脱离手把手指导,也能把活干得像模像样——那套标准已经内化成直觉,不用每次翻规章手册。少了蒸馏这一步,AR模型要么推理时也背着一整套复杂动态规划算法跑,速度被拖慢;要么只能自己从头摸索一致性,大概率退回各模块互相打架的老问题。
实验结果对得上这个判断。15组基准测试指标里,SheetSage2-AR在10组上超过Prober本身,包括节拍和下拍这两类最吃一致性的任务。更关键的是,前面说的节奏混淆比例和八度混淆比例,AR模型基本守住了Prober的水准,没有因为丢掉显式动态规划而明显退步。
跑分:八个数据集,十二项第一
设计讲完了,实际效果如何?论文在八个基准数据集上测了节拍、下拍、调性、和弦、曲式、旋律几大类任务,对手包括SheetSage1、经典工具madmom,以及近两年发表的多款任务专用最强系统——节拍跟踪的Beat This!、调性识别的S-KEY、和弦识别的ChordFormer、曲式分析的SongFormer。
| 任务 | 数据集 | 指标 | SheetSage1 | 任务专用最强 | SheetSage2-Prober | SheetSage2-AR |
|---|---|---|---|---|---|---|
| 节拍 | osu2017 | F1 | 91.80 | 89.19 | 92.28 | **93.01** |
| 下拍 | osu2017 | F1 | 83.47 | 85.90 | 92.79 | **92.90** |
| 调性 | GiantSteps | 加权分 | 43.89 | 72.09 | **78.29** | 77.73 |
| 和弦 | JAAH | 大小调准确率 | 39.77 | 59.45 | 62.94 | **64.50** |
| 曲式 | HarmonixSet | F1(3秒容差) | — | 79.50 | 81.65 | **82.86** |
| 旋律 | RWC-Pop人声 | F1 | 62.71 | — | **83.08** | 82.51 |
| 旋律 | Rock Corpus人声 | F1 | 49.19 | — | 65.98 | **67.08** |
完整对比一共涵盖15组基准指标,SheetSage2-AR在其中12组上压过了最强的基线系统,上面这张表只挑了部分有代表性的结果。单看旋律转录:RWC-Pop人声旋律F1上,新系统拿到82.51%,SheetSage1是62.71%,两者差了将近20个百分点。换算成直观感受,过去SheetSage1每转录5个音符就有一个漏掉或认错,新系统把这个出错的比例压下去了不少。
论文另外找了几套近期发布、权重公开的旋律转录系统做补充比较,MuScriptor、YourMT3+都在其中,还有一个Demucs加ROSVOT的组合方案。这几套系统在RWC-Pop人声旋律上的F1都停在26%到49%之间,跟SheetSage1的62.71%差着一大截,更比不上SheetSage2系列的80%以上。可见针对人声旋律专门调过的系统,在这类任务上确实比通用多乐器转录模型更占优势。
没有真实人声训练数据,模型照样摸清了哼唱的样子
消融实验的设计挺能说明问题:把训练数据的来源拆开,Prober分别用纯真实录音、纯合成数据、以及两者混合来训练,看合成数据究竟管不管用。
节拍、下拍、和弦、曲式这几项任务上,混合数据都赢过单独使用任一数据源;调性识别略微吃亏,旋律识别则大体持平。真正出人意料的是另一个结果——只拿合成数据训练的模型,在RWC-Pop上的人声旋律F1达到了57.76%,而它的训练音频里没有任何真人演唱,全是MIDI乐器音色渲染的。
论文给了一个可视化例子:截取RWC-MDB-P-2001第一首歌开头的人声片段,把纯合成数据模型和真实数据模型的预测曲线摆在一起比。合成模型从没听过真人唱歌,却还是大致跟住了旋律的走向,只是在音符起止时间和时值的判断上比较粗糙。这提示了一件有意思的事:旋律怎么走、和弦怎么接这类音乐里的结构性规律,可能并不严格依赖某种特定音色,哪怕训练素材和目标场景听起来差得很远,模型依然能学到一部分可迁移的规律。
打个比方,一个从小只听钢琴曲长大的孩子,第一次听小提琴拉同一首曲子,音色完全陌生,却依然能哼出大致的旋律走向。旋律的"形状"本身就是独立于乐器音色的一种抽象结构,AI模型想捕捉的正是这种抽象能力。
论文披露的边界与局限
当前系统的局限,论文也老老实实列了出来。
节奏上,SheetSage2的网格精度只到十六分音符,三连音或者更细的节奏型只能近似处理。整首曲子还共用一个全局速度锚点,速度稳定的流行歌没问题,速度大幅波动的曲目就不太适用了。
和声上,系统按十二平均律假设,和弦词汇表只覆盖三和弦、挂留和弦、六和弦、七和弦,九和弦这类更复杂的扩展和弦暂时表示不了。
风格覆盖上,训练数据和lead sheet这种记谱格式本身,瞄准的都是节拍稳定的流行音乐。节奏自由、需要多声部记谱的古典音乐,这套系统并不适配。
lead sheet*:它是简化版的记谱方式,一般只写旋律线、和弦符号、歌词和曲式结构;完整的多声部编曲细节则被省去。流行音乐、爵士乐领域常采用这种记谱方式。
论文结尾,研究者提到:训练数据规模继续扩大之后,一些目前靠人工设计的音乐约束,或许会变得不那么必要。这话背后是一个研究范式上的判断——数据足够丰富时,那些眼下还要工程师手工设计的一致性规则,模型或许能自己摸索出来。
从SheetSage1到SheetSage2,再往后看
这篇论文不是孤立出现的,它是更大项目YuE2的一部分。YuE2是2026年发表的一篇音乐生成论文,首次引入SheetSage2和配套的MERT2音频编码器,为音乐生成任务提供符号化和语义化的监督信号。这篇技术报告正是对SheetSage2方法和评测细节的完整补充说明。
再往前追溯,SheetSage1是2022年斯坦福团队发表的工作,最早把节拍跟踪、调性和弦识别、旋律转录这几件事拼到一起做lead sheet转录。但它在跨任务一致性上有明显短板,这也正是SheetSage2要解决的核心问题。
同期还有两个方向相近的工作。一个是2026年的TUTTI,专注把音频转录成完整的古典乐谱,监督数据完全来自合成渲染的MIDI。另一个是同年的MuScriptor,面向多乐器MIDI转录,论文里也拿它和SheetSage2做了旋律转录的横向对比。这几篇工作几乎同时出现,沿着相似的"合成数据+序列到序列建模"思路往前推,这个方向正在变成一个热门赛道。
写在后面
读这篇论文时,最让我意外的不是技术细节,而是那个用合成数据训练出来的模型——完全没见过真人唱歌,却依然能转录出接近正确的人声旋律轮廓。
这其实提醒了一件容易被忽略的事:我们常以为AI要学会某种能力,非得靠"逼真"的训练数据不可,但它学的可能是更抽象的结构性规律。音色只是外壳,旋律的走向、和声的逻辑才是骨架。这跟人类学音乐的某些直觉是相通的——受过系统训练的音乐人,换一种陌生乐器演奏熟悉的旋律,照样能一下认出来。
论文里那个"先学感知,再学生成"的两段式安排,也让我琢磨了很久。往大了说,这其实是在回应复杂AI系统几乎都躲不开的一对矛盾:训练数据往往是脏的、残缺的、彼此不一致的,可最终要的输出却得干净、完整、自洽。拿脏数据直接去训干净输出,常常事倍功半;拆成两步就不一样了——先让一个模型消化噪声、给出相对干净的中间结果,再让另一个模型去学这个中间结果,成功率反而更高。这套路子未必只对音乐转录有用,很多要从嘈杂的真实世界数据里提炼结构化知识的场景,都可以参考。
论文里有一份转录结果,把摇滚吉他独奏简化成了十六分音符网格,这让我想起小时候学乐器:老师常把一段复杂的即兴演奏先简化成基本节奏型,让你照着弹,等骨架掌握了,再一点点加上那些细腻的装饰音。眼下AI在这件事上,可能也还处在"先学会骨架"的阶段。
那接下来呢?等这类系统真能精确捕捉到十六分音符之外那些细微律动,它写出的乐谱,会不会比专业音乐人听写的还细致?
Q&A
Q1:SheetSage2是什么?
A:SheetSage2是一套把音频转录成完整乐谱的AI系统。节奏、和弦、旋律、调性、曲式结构,它能一并识别,再整合成一份逻辑自洽的lead sheet乐谱,而不是彼此矛盾的零散标注。
Q2:SheetSage2相比前代SheetSage1有什么提升?
A:八个基准数据集、15项指标测试里,SheetSage2-AR有12项超过了此前最强的专用系统;旋律转录F1比SheetSage1提升近20个百分点。它还靠结构化解码和自回归蒸馏,把节奏速度混淆、旋律八度跳变这类一致性错误明显压了下去。
Q3:SheetSage2的训练数据是怎么来的?
A:研究者主要拿MIDI文件渲染成音频,当作合成训练数据;再用专家规则加伪标签自举,把少量高置信度标注扩展成几十万条规模的训练集,补上了真实录音标注数据稀缺的短板。