这项由俄罗斯斯科尔科沃科技大学完成的研究,发表于2026年的《国际音乐信息检索学会汇刊》(Transactions of the International Society for Music Information Retrieval),第9卷第1期,页码144至163,DOI编号为10.5334/tismir.333,论文编号arXiv:2605.06627。感兴趣的读者可以通过上述DOI或arXiv编号查阅完整原文。

教一台计算机"弹钢琴",听起来像科幻小说,但实际上这已经是音乐AI研究者们攻克了很多年的课题。不过,教机器弹琴,首先得给它准备足够多的"教材"——也就是大量的钢琴乐谱和真实演奏录音,而且两者还必须精确对应:哪个音符在哪个时间点被怎样弹奏的,都要清清楚楚。这件事说起来简单,做起来却充满了麻烦。而这篇论文,就是一份关于如何从零开始,把一堆杂乱无章的钢琴MIDI数据整理成一个干净、庞大、可直接使用的"终极教材库"的详细报告。这个数据集被命名为PianoCoRe,它的出现,有望让下一代钢琴AI变得更聪明、更有表现力。

一、为什么钢琴AI需要"教材库",现有的又有什么问题

要理解这项研究的价值,先得明白钢琴AI的学习方式。人类钢琴家学琴,既要读乐谱,又要听老师示范,还要自己反复练习、感受情绪。机器学习钢琴表达,走的是类似的路:给它看乐谱,再给它听真人的演奏录音,让它学习"同一段谱子,为什么这个钢琴家弹得慢一点,那个快一点,这个地方力度强,那个地方轻柔"——这背后隐藏的,就是所谓的"音乐表达"。机器看得越多,学得越好,就像一个学生读的书越多、听的范本越多,理解力就越强。

然而,现有的数据集就像一批各自为政的私立图书馆——每一家都有自己的规矩,各自收录了不同的作曲家、不同的曲目,命名方式五花八门,有的甚至连基本的音符对应关系都没有整理出来。比如,MAESTRO数据集是目前最有影响力的钢琴演奏数据集之一,收录了超过200小时的高水平演奏,来自国际钢琴大赛,音频和MIDI精确同步,是转录研究的标杆。但它覆盖的作曲家和风格范围偏窄,对现代深度学习来说规模也嫌不足。ASAP数据集在MAESTRO基础上加入了乐谱和节拍注释,扩展版(n)ASAP更是提供了音符级别的对应关系,是目前最精细的录音MIDI数据集之一,但总量仍然只有约92小时。

另一类数据集走的是"量大管够"路线,利用自动音乐转录技术,把YouTube上海量的钢琴演奏视频转成MIDI文件。GiantMIDI-Piano就是这样,收录了超过1237小时的古典钢琴MIDI,覆盖了近11000首作品,来自2786位作曲家,规模相当可观。但它完全没有乐谱,而且元数据(也就是说明文件是谁弹了什么曲子的信息)里有大量重复和错误。ATEPP数据集提供了11674首演奏的转录,大约一半有配套乐谱,但没有音符级对应,而且标注质量参差不齐。Aria-MIDI更是把规模推到了极致,超过100万个MIDI文件、10万小时的转录音乐,但几乎没有乐谱,注释也不完整。

还有一个问题是"信息泄露"——如果同一首曲子的不同演奏版本分散在多个数据集里,而你在训练AI时用了其中一些,测试时又碰上了另一些,那AI其实已经"见过"这首曲子,测试结果就不可靠了。由于各数据集命名格式不统一,这种泄露风险很难发现和规避。

正是这些问题,催生了PianoCoRe——一个试图把所有优质开源钢琴数据整合在一起,同时清洗掉脏数据、建立精确对应关系的超大型"统一教材库"。

二、PianoCoRe是什么,它长什么样

PianoCoRe的核心数字令人印象深刻:总共收录了483位作曲家的5625首作品(包括乐章),共250046个演奏版本,累计时长21763小时。其中75.3%的演奏有对应的乐谱。所有文件按照"作曲家/作品/乐章"的层级目录结构整理,命名遵循统一规范——作曲家目录用"姓,名"的格式,调性按照"音名_升降记号_大小调"的格式标注,每个文件名里都保留了原始来源信息。

为了适应不同的使用场景,PianoCoRe被设计成四个层级的子集,就像一套教材分了基础版、进阶版、专业版和精华版。最基础的PianoCoRe-C,是完整的混合来源演奏集合,包含全部250046个演奏文件,没有去重,也没有质量筛选,适合需要最大数据量的任务,比如自监督预训练或大规模音乐分析。往上一级的PianoCoRe-B是去重并经过质量评估的子集,剔除了近似重复的演奏和被判定为损坏或"假演奏"的文件,保留了214092个演奏,覆盖5591首作品,适合大规模预训练、演奏风格分析和钢琴生成任务。再往上的PianoCoRe-A,是最关键的子集:157207个演奏与1591首作品的乐谱建立了音符级别的精确对应,累计12509小时,是目前开源规模最大的音符对齐钢琴数据集。最顶层的PianoCoRe-A*则是高置信度精华版,只保留了音符对齐率在85%以上、且被判定为高质量的演奏,共130275个,覆盖1517首作品。

数据来源涵盖了主要的开源钢琴数据集:ASAP、ATEPP、GiantMIDI-Piano、PERiScoPe和Aria-MIDI,乐谱则来自ASAP、ATEPP、公共领域乐谱库PDMX、KunstderFuge和ClassicalMIDI网站,以及研究者手动从MuseScore收集的421份乐谱。所有内容都限定在欧盟公共领域范围内(即作曲家去世超过70年),以确保版权合规。整个数据集发布在Zenodo和Hugging Face平台上,采用CC-BY-NC-SA 4.0许可证。

三、数据是怎么"拼"在一起的:一场大规模的"配对游戏"

把来自不同数据集的乐谱和演奏配对,是整个工程中最费力的部分。通常的做法是比较文件名和元数据,但如果文件被错误标注,或者命名格式完全不同,这种方法就会失效。研究者采用了一种更可靠的"音乐内容直接比对"方法:把所有文件都转成MIDI格式,然后直接比较音符序列。

具体流程分三个大阶段。第一阶段是建立"核心结构":把ASAP和ATEPP这两个最可靠的数据集合并,修正元数据错误(包括49个乐章被不同名字重复收录的问题、24个乐章名称错误的问题、3个乐谱缺失的问题),形成一个统一的基础目录。第二阶段是"扩充乐谱":把已有演奏与来自PDMX、KunstderFuge、ClassicalMIDI和手动收集的MuseScore乐谱进行配对,丰富有乐谱对应的演奏数量。第三阶段是"扩充演奏":把GiantMIDI-Piano、PERiScoPe和Aria-MIDI中的演奏文件,先与已有乐谱和演奏配对,找不到匹配的再彼此互相配对,以识别出更多属于同一首作品的演奏。

配对不是随便找两个文件就算的,要经过严格的筛选和验证。首先,两个文件的作曲家名字必须一致,音符数量之比(演奏音符数除以乐谱音符数)必须在0.75到1.33之间,如果有作品编号、调性等关键字信息也必须吻合。通过这个初筛后,再使用一个叫DualDTWNoteMatcher的算法(来自Parangonar工具)计算两个文件之间的音符级对齐,只有当乐谱中超过70%的音符都能在演奏中找到对应时,才认定为一对有效匹配。为了加速这个计算密集的过程,研究者用Numba的即时编译技术对动态时间规整算法进行了优化,使其在ASAP数据集上的速度提升了12倍,从而使数百万次配对计算在合理时间内完成。

在乐谱处理上,所有MusicXML格式的乐谱都经过专门的转换流程变成MIDI:力度和速度标记会被嵌入音符的力度值和速度变化中,装饰音(颤音、波音)会被展开为具体的音符序列,倚音会根据定义展开,反复记号则会生成"完整展开版"和"最小重复版"两个版本。对于各数据集中发现的问题,也做了针对性修复:ASAP中的208份乐谱和94份演奏MIDI存在零时值音符,都重新生成了;GiantMIDI中发现了315个重复的YouTube视频被标注在不同曲目名称下;所有转录数据集中都修复了"无限时长"音符的问题(这种问题发生在转录模型的音符开启事件和关闭事件不匹配时,ATEPP有30个文件、GiantMIDI有9个、PERiScoPe有92个、Aria-MIDI有5501个受到影响);Aria-MIDI的延音踏板编码方式也与其他数据集不同,做了专门说明。

整个拼合过程是半自动的,自动匹配后的结果都经过人工审核,作品和乐章名称通过IMSLP网站和网络搜索进行核实和标准化,确保没有同一首作品被收录在不同名称下。

四、怎么判断一段演奏是"好录音"还是"垃圾文件":AI质检员登场

并不是每一个MIDI文件都真的是人类演奏的结果。有些文件是从合成音频(也就是用软件把乐谱"唱"出来的声音)转录而来的,这种"演奏"节奏机械、力度均匀,根本没有任何表现力,对训练AI学习演奏风格毫无帮助。另一些文件则是损坏的转录,充斥着噪音和错误。还有大量文件是重复的——同一场演奏被不同的转录模型处理了两遍,或者被上传到了不同的平台。这些问题都需要在数据进入训练集之前被清除掉。

去重的做法相当精巧。对于同一首作品的多个演奏文件,研究者设计了一种基于音符内容的相似度算法:把每个MIDI的音符按时间排序,把起始时间归零,然后按音高分组;对于任意两个演奏文件,找出每个音符在对方文件中音高相同、起奏时间差不超过50毫秒(这是一个高精度自动转录的误差上限)的对应音符,统计这样的"近似对应音符对"占总音符数的比例作为相似度;相似度超过50%的两个文件被划为同一个"重复簇",只保留一个"代表文件"(优先保留来自样本较少数据集的版本,以及对齐率较高的版本)。这一步共识别并标记了34452个近似重复文件。

质量判断则要复杂得多。研究者首先分析了对齐质量与MIDI质量之间的关系,把演奏文件的"音符数量比"(演奏音符数除以乐谱音符数)和"调整后对齐率"(已对齐音符数除以演奏和乐谱中较少的那个数量)两个指标画成散点图,发现高质量录音和ASAP中的直接录音集中在对齐率高于0.85的区域,而损坏文件则散布各处,低质量和背景噪音文件与高质量文件有明显重叠。更关键的是,人工抽查发现ATEPP原有的质量标签并不可靠——有些被标为"低质量"的文件实际上对齐很好可以使用,有些被标为"损坏"的文件却是可用的。

由此,研究者定义了四个质量等级:Score(乐谱类,即从合成音频转录的无表现力演奏)、High Quality(高质量,包括所有直接录音和对齐率超过0.9的转录)、Low Quality(低质量,对齐率在0.7至0.85之间的转录)、Corrupted(损坏,对齐率低于0.65的转录)。基于这个框架,研究者训练了一个专门的分类器。

这个分类器的"骨架"是一个12层的变换器编码器,拥有8000万个参数,在Aria-MIDI的37万个多样化钢琴MIDI文件上做了预训练(使用多掩码语言建模目标),然后在专门构建的质量标注数据集上微调。输入的特征只有五个音符属性:音高、时间步长、力度、时值和绝对时间位置,完全不包含任何乐谱信息,因此可以独立于乐谱对任意MIDI文件进行评估。训练数据经过精心构建:真实的高质量样本有2500个,低质量样本有1000个,损坏样本有86个;为了平衡类别,还生成了合成的损坏版本(随机删除15%到50%的音符、加入起奏时间抖动、加入力度扰动、随机插入额外音符),以及合成的乐谱类样本(随机设定恒定力度、加入10毫秒起奏抖动)。

分类器在测试集上的宏平均F1分数达到89.1%:对乐谱类文件识别完美,高质量和损坏类的F1分别为83.9%和94.6%,低质量类为77.7%。消融实验表明,合成训练样本、基于[CLS]标记的聚合方式、以及预训练的表示都对最终性能有贡献;屏蔽音高、时间或力度特征中的任何一个都会导致性能下降,说明三类特征都对质量判断有独立贡献。

对全数据集应用分类器后,在250046个演奏中,识别出了1244个乐谱类文件和459个损坏文件(其中Aria-MIDI贡献了绝大多数低质量和乐谱类文件,ASAP全部被判为高质量),19402个低质量文件,以及228941个高质量文件。最终,PianoCoRe-B子集由214092个去重且非损坏、非乐谱类的演奏构成。

五、让乐谱和演奏"对上号":音符对齐的清洗之道

现在来到最技术性也最关键的一步。有了乐谱和演奏的配对,还需要知道乐谱里的每一个音符,对应演奏里的哪一个音符。这就是"音符级对齐"。有了它,AI才能学到"弹这个音符时,钢琴家选择了这样的力度、这样的时长、比乐谱规定的时间提前或推后了多少"——这些细节,正是"表现力"的全部秘密。

然而,自动对齐算法的输出结果并不总是干净可用的。最常见的两类问题是这样的:一是"时间跳跃"——对齐算法把两个在时间上相距甚远的音符配成了一对,导致从这个音符跳到下一个,速度突然变成了荒诞的每分钟600拍,或者突然降到每分钟15拍,完全不符合人类演奏的规律。二是"对齐空洞"——演奏中有一大段音符根本没有在乐谱中找到对应,或者乐谱中有一大段(比如一个重复段落)在演奏中被跳过,导致这段区域内的对齐链接全都是随机乱配的。

为了解决这些问题,研究者设计了一套名为RAScoP(Refined Alignment for Scores and Performances,乐谱与演奏的精细化对齐)的四步流水线处理管道。

第一步处理"对齐空洞"。算法用一个滑动窗口扫过整个对齐序列,窗口大小设为31个音符(接近数据集中所有乐谱的小节平均音符数的两倍,也就是大约左右各一小节的范围),计算每个位置窗口内未对齐音符的比例,如果超过75%的音符都没有对齐,就把这个位置标记为"空洞区域",并把空洞内所有的对齐链接全部删除。这一步的逻辑是:如果一个区域内几乎所有音符都没有对应,那些少数几个"对应"的链接大概率也是错的,不如全部清除。

第二步处理"时间跳跃"。算法先把所有已对齐的音符按乐谱时间位置分组,构建一个"乐谱位置→演奏时间"的对应列表。然后逐个检查相邻两个乐谱位置之间的时间间隔,如果这个间隔对应的演奏速度超出合理范围(默认为15到480 BPM),就认定发生了"对齐跳跃"。对于和弦内部的多个音符(即乐谱上同一时刻演奏的多个音),还会检查它们在演奏中的时间偏差,如果某个音符的偏差超过该和弦所有音符偏差的两个标准差,就把它从对齐中移除。发现跳跃后,算法会根据当前位置前8秒内的局部演奏速度,推算出这个音符"应该"在什么时间出现,然后对演奏MIDI中的所有后续音符做整体时间平移,使其落入合理范围。处理完后,只保留对齐序列中有链接的演奏音符,没有链接的都删去。此外,时间间隔小于10毫秒的相邻同音高音符也会被过滤,因为人类演奏中不可能在10毫秒内连续按下同一个键两次。

第三步进行"音符插值"。乐谱中有些音符在演奏中没有出现(比如演奏者跳过了某个重复段落,或者转录时漏掉了某些音符)。为了给AI提供完整的"乐谱上下文",这一步会为这些缺失的音符"补"上一个合成的演奏版本:起奏时间通过前后已有的演奏音符的时间进行线性插值,力度和时值则取周边已演奏音符的加权平均,权重与乐谱位置的距离成反比(越近的音符权重越高)。补上的合成音符会用特殊的MIDI文本标记标注,以便训练时对这些音符进行特殊处理或直接过滤。

第四步进行"演奏-乐谱节拍同步"。利用音符对齐关系,计算每个节拍的演奏时间,在演奏MIDI中插入对应的速度变化信息,使其与乐谱的节拍结构对齐。另外,所有演奏都会被平移,使第一个演奏音符与乐谱第一个音符在时间上对齐,保证同一首作品的不同演奏有统一的起始点。在实际构建PianoCoRe-A时,只应用了前三步和初始对齐,没有应用节拍同步(以保留原始时间信息),节拍同步可由用户自行计算。

这套流水线的效果如何?量化分析显示,经过空洞处理和时间清洗后,和弦内音符的时间偏差标准差显著降低,演奏速度分布也变得更集中在合理范围内,极端速度异常值基本消失。代价是平均对齐率从0.935小幅降至0.920,也就是说平均只损失了约1.5%的对齐链接。处理前,54.3%的演奏对齐率高于0.95;处理后,这一比例降至42.9%,但这些演奏只是降到了"仍然很高"的对齐率区间,并没有被丢弃——处理后仍有86.6%的演奏保持了85%以上的对齐率。

六、用PianoCoRe训练出来的AI,弹得更好吗

研究者把PianoCoRe用于一个最直接的下游任务:让AI根据乐谱自动生成有表现力的钢琴演奏。使用的模型是PianoFlow,一个基于条件流匹配的符号音乐演奏渲染模型。它的工作方式可以这样理解:给它看一段乐谱(包括每个音符的音高、位置和时值),以及当前演奏的"语境"(之前已经渲染好的一段演奏),让它推断出下一段的力度、时间偏差、时长等表现力特征。

研究者训练了一系列模型,每个模型用不同规模的数据子集:只用ASAP、ASAP加ATEPP、ASAP加ATEPP再加PERiScoPe、以及完整的PianoCoRe-A。此外还有两个对照组:用较低对齐率阈值(0.7而非0.85)的更多数据,以及用没有经过RAScoP清洗的原始对齐数据。

训练过程中的验证损失曲线揭示了一个清晰的规律:只用ASAP训练的模型很快就出现过拟合(即在训练集上越来越好,但在新数据上不再进步),而随着数据规模增大(加入ATEPP、加入PERiScoPe、加入全部PianoCoRe-A),过拟合被显著推迟,最终验证损失更低。更关键的是,用原始未清洗对齐数据训练的模型,在时间特征(TimeShift,即每个音符演奏时间相对于乐谱的偏差)上的验证损失始终高于用RAScoP清洗后数据训练的模型,证明了清洗时间噪音对学习准确的节奏表达至关重要。

在无条件生成(即模型从头渲染一首完整曲子)的评估中,用皮尔逊相关系数衡量模型输出与真实演奏在力度(Vel)、相对音符间时间间隔(IOI)、和弦内时间偏差(OD)和音符时长(Art)四个特征上的相似度。只用ASAP训练的模型相关系数最低(力度0.37,IOI 0.83,OD 0.07,Art 0.28),随着数据增加,各项指标持续提升,PianoCoRe-A模型达到(力度0.40,IOI 0.86,OD 0.10,Art 0.35)。有意思的是,只用ASAP和ATEPP训练的模型在某些指标上反而比用全量数据的模型稍高,这可能是因为ATEPP主要收录了知名钢琴家的演奏,风格更集中,而PianoCoRe-A包含了更广泛的风格多样性,模型需要兼顾更多风格,在某些特定评估维度上反而没那么"专注"。

在演奏续演(即给模型256个音符的演奏历史,让它预测接下来256个音符的演奏特征)的评估中,用平均绝对误差衡量,结果显示:训练数据越多,模型在ASAP、ATEPP、PERiScoPe和Aria-MIDI四个测试领域的误差普遍越低。PianoCoRe-A模型在ASAP和Aria-MIDI测试集上取得最佳成绩(力度误差分别为8.613和7.872 MIDI单位,时间偏移误差均为0.016秒),在另外两个测试集上也表现出色,综合来看是跨数据源泛化能力最强的模型。

七、这套方法还有哪些不足,未来能做什么

任何大型工程都难免有缺陷,PianoCoRe也不例外,研究者在论文中也坦诚地列出了这些局限。由于采用迭代式的数据整合流程,估计有约1%的演奏可能包含了相邻乐章的内容,或者与乐谱在长度上有超过两倍的差异。数据集中作品分布也明显偏向西方古典曲目和著名作曲家,这是底层开源数据集本身偏差的延伸。质量标签经过了针对召回率优化的校准,并不保证与人类听感的判断完全一致。在音符插值环节,生成的合成音符段落完全没有表现力(如同机器演奏),下游应用必须对此做出处理。另外,插值也不处理延音踏板效果,这在某些情况下可能导致踏板与插值音符之间的不一致。

对于未来的发展方向,研究者认为下一步最有价值的工作包括:对比较受欢迎的模型做主观听感测试,验证客观指标的提升是否真的对应人耳感知到的演奏质量改善;针对Aria-MIDI在数据集中占比过大的问题,考虑对各数据源做更均衡的采样;对完整的PianoCoRe-A模型做更长时间的训练(从验证损失曲线来看,仍有提升空间);在高保真子集(如ASAP)上做微调,可能进一步提升演奏质量;将整套方法论扩展到多乐器曲目;以及开发更强大的质量评估模型和更细粒度的乐谱与演奏注释工具。

说到底,PianoCoRe做的事情,本质上就是一件很朴素的事:把散落在各处的"钢琴教材"全部收集起来,统一格式,剔除残缺和抄袭的,再把每本教材里的每一句话和它对应的声音录音精确对应起来,最后装订成册,免费分发给所有想教机器学钢琴的人。这件事之前没有人系统地做过,而做完之后,效果是看得见的——用这套教材训练出的AI,在几个维度上都比用残缺教材训练的AI弹得更好、更稳定、对各种风格的适应性也更强。

这对普通人意味着什么?也许五年后你打开某个AI作曲软件,让它帮你把自己写的旋律"弹出来",那背后的模型,就有可能是在PianoCoRe上训练的。弹得像不像真人、有没有表情,在一定程度上就取决于这个数据集是否足够大、足够干净。从这个角度看,这篇论文并不只是写给专业研究者的——它是在为所有人能用上更像样的音乐AI,悄悄铺路。

对这个话题感兴趣的读者,可以通过DOI 10.5334/tismir.333查阅完整论文,也可以在arXiv上搜索编号2605.06627获取预印版本。数据集本身可以在Zenodo(DOI:10.5281/zenodo.19186016)和Hugging Face(SyMuPe/PianoCoRe)免费获取,代码则开放在GitHub的ilya16/PianoCoRe仓库中。

Q&A

Q1:PianoCoRe数据集和MAESTRO、ATEPP这些已有数据集相比,有什么实质性的区别?

A:MAESTRO和ATEPP等数据集各自有明显的局限——MAESTRO规模偏小,ATEPP没有音符级对齐,GiantMIDI没有乐谱。PianoCoRe的核心区别在于把这些数据集统一整合,解决了命名格式不统一、重复文件、元数据错误等问题,并在此基础上提供了目前开源规模最大的音符级对齐子集(157207个演奏),同时附带了质量标签和清洗后的对齐文件,可以直接用于训练而无需自行处理原始数据。

Q2:RAScoP对齐清洗之后,数据的对齐率会损失很多吗?

A:损失很小。经过空洞处理和时间清洗两步之后,平均对齐率从0.935降至0.920,仅损失约1.5%的对齐链接。处理后仍有86.6%的演奏保持了85%以上的对齐率。换句话说,清洗主要是把错误的链接去掉,正确的链接基本都得到了保留,代价非常小,但换来的是时间特征的显著改善和速度分布异常值的消除。

Q3:PianoCoRe数据集里的演奏质量分类是怎么划分的,低质量文件还能用吗?

A:质量分为四类:Score(从合成乐谱音频转录的无表现力演奏)、High Quality(直接录音或对齐率超过0.9的转录)、Low Quality(对齐率在0.7到0.85之间的转录)和Corrupted(对齐率低于0.65的损坏文件)。低质量文件并不是完全无用,研究者明确指出这类标签是"参考性的",低质量MIDI可能适合某些特定应用场景。只有Corrupted和Score类文件在大多数情况下应当过滤掉,因为它们要么是损坏数据,要么是缺乏任何表现力信息的机器演奏。