📄 DuET:用音符和时间帧双路编码做钢琴演奏到乐谱的转谱
英文题目:DuET: Note-Frame Dual Encoding for Piano Performance-to-Score Transcription
评分:8.2/10 | 创新 1.5/2 | 技术严谨 1.2/1.5 | 实验充分 1.2/1.5 | 清晰度 0.8/1 | 影响力 1/1.5 | 开源 1.2/1.5 | 可复现 0.3/0.5 | 工程/实践 1/1.5
👥 作者与机构
- Wei Zeng:机构信息未能在本次解析中与作者逐人可靠绑定
- Ye Wang:机构信息未能在本次解析中与作者逐人可靠绑定
📌 核心摘要
表现性钢琴演奏转谱需要把演奏时间映射到乐谱时间,输入是带音高、秒级开始时间和时值的演奏音符序列,输出是与输入音符一一对应的乐谱记录,包含小节内起始位置、记谱时值、谱表、声部、拍号、调号和装饰音标记,难点是表情性速度变化下相同演奏间隔对应不同乐谱间隔,而节拍可能出现在没有音符开始的时刻。同一音符序列连同延音踏板导出20ms网格的钢琴卷帘,音符序列作为音符编码器输入建模音符间关系,卷帘作为帧编码器输入建模含空拍时刻的时间上下文。双向交叉注意力让两个分支的中间表示互为键值交换信息,输出的音符记忆保留音符级关系、帧记忆保留逐帧节律覆盖。自回归解码器逐音符交替读取两种记忆并并行预测该音符的乐谱属性,帧记忆另经辅助头直接接受帧级节拍与下拍监督。共享演奏时间旋转位置编码把音符连续开始时间和帧网格时间放在同一坐标系,时间-音高旋转位置编码在音符注意力中同时编码相对时间距离和音程。与已有做法相比,该工作不需要外部输入节拍网格,也不用在音符位置做动态规划推断空拍。在Gangqinpu测试集上,DuET相对最强基线把MUSTER平均误差从6.56%降到3.64%,在ASAP上从11.30%降到11.22%,timing相关误差下降最为一致。结论适用于古典ASAP与偏流行风格的Gangqinpu钢琴曲目,ASAP上的缺音符和多余音符误差仍高于部分基线,原文未披露训练、推理或部署成本。
🔗 开源与复现资源
代码相关资源:https://github.com/wei-zeng98/DuET — 链接可访问(HTTP 200)
模型相关资源:https://github.com/wei-zeng98/DuET — 链接可访问(HTTP 200)
演示资源:https://github.com/wei-zeng98/DuET — 链接可访问(HTTP 200)
可达状态仅表示本次链接检查结果,不代表许可证、本文权重或运行复现已验证。
🧭 深度解读
这篇论文要解决的是哪种转谱问题
刚接触音乐转谱的研究生要先分清 3 类任务。音频到 MIDI 是从波形估计每个音何时按下、按多久,输出的是演奏层面的物理时间;演奏 MIDI 到乐谱是从这些已知的演奏音符推断记谱层面的拍内位置、时值、声部、谱表、拍号调号等,输出的是可以在五线谱上演奏的记谱;音频到乐谱是端到端从波形直接到记谱。本文聚焦中间一段,即演奏 MIDI 到乐谱,记作 PM2S。论文把完整音频到乐谱流水线拆成 3 段:先用 Transkun v2 从音频得到演奏 MIDI,再用 DuET 做 PM2S,最后用 MuseScore 4 排版为 MusicXML,方法贡献集中在第二段。
为什么 PM2S 难,论文强调了两点。第一,富有表情的演奏会有局部抢拍拖拍,同一段演奏秒数在不同速度和节拍位置下对应不同的乐谱时值,模型必须把单个音符放在更大的节奏上下文里理解。第二,乐谱属性依附于音符,而拍点是落在连续时间轴上的事件,很多拍点时刻并没有音符同时发声,两种监督的粒度天然不同。传统只看音符序列的方法容易丢失空拍处的节拍信息,而只依赖外部拍点网格的方法又会在拍点跟踪出错时把误差传给量化。这就是 DuET 要同时建模音符关系和帧级节拍的原因。
输入必须保留什么、输出允许改变什么,论文用一一对应做了明确约定。输入是按发声时刻排序的 N 个演奏音符,顺序和音高在输出中保持不变;输出是同样 N 个位置的结构化乐谱记录,每个位置复制输入音高,其余属性由模型预测。倚音这种装饰性的极短音符在时值字段中用零表示。这种约定排除了预测阶段的增删音符和多对一的装饰音归约,后续排版才允许把一个音符拆成带延音线的记谱。理解这一点才能正确解读后文漏音多音误差的含义。
已有 PM2S 路线是如何处理节拍和位置的
早期 PM2S 多用概率模型估计节奏结构和记谱属性,随后出现循环网络联合估计音符时值与声部,以及基于拍的节奏量化。近年 Transformer 编码器加解码器把 PM2S 写成序列到序列的结构化乐谱预测。在节拍处理上,各路线分工不同。刘等人那条路线在音符发声处显式预测拍点与下拍(小节第一拍),再用动态规划推断没有音符的拍点,弥补了音符级预测与节拍网格之间的错位。Beyer 和 Dai 等模型通过音符关联的谱面位置和小节信息隐式推断节拍结构。Wachter 等则以外部给定的拍点网格为条件做节奏量化,推理时若无网格需另接拍点跟踪器,其误差会经由预处理传入量化。
DuET 与上述路线的区别在于监督粒度和运行条件。论文让帧分支直接在规则时间网格上学习拍点与下拍分类,同时让音符分支学习乐谱属性,推理时不需要外部提供拍点网格,也不需要事后动态规划补拍点。位置编码方面,Music Transformer 引入高效相对注意力处理长音乐序列,RoFormer 提出旋转位置编码即 RoPE,让查询与键的注意力得分依赖相对位置,Beyer 和 Dai 把序列序号的 RoPE 用于 PM2S。DuET 认为序号距离不能反映真实时间间隔,相邻序号可能是同时发声也可能相隔很久,音符间距离只能显式表示相邻间隔,非相邻需累加,且音符本处于时间与音高 2 维空间,序列化后相对距离被抹平,因此提出基于真实时间与音高的旋转编码。
曲目覆盖是另一条对比线。以往神经 PM2S 多在 ASAP 这类古典钢琴数据集上训练评测,柴田等也看了流行钢琴,Wachter 等还试了爵士吉他但钢琴仍以古典为主。流行钢琴的现成乐谱往往比古典更难找,实际转谱需求更强。本文因此在古典为主的 ASAP 之外,自建了偏重流行并覆盖多风格的 Gangqinpu 数据集,并在两个数据集上训练评测。比较时要注意输入、目标和运行阶段是否相同,不能把需要外部拍点与不需要外部拍点的方法在同等条件下直接比出绝对胜负。
输入输出的数学形态与窗口化任务
把一个窗口内的演奏表示为 N 个音符序列,每个音符包含 MIDI 音高、发声秒时刻、持续秒数和力度。音符按发声时刻排序,同时发声保留原始输入顺序。同一窗口还从音符与延音踏板消息导出钢琴卷帘表示,按每 0.02 秒 1 帧采样,帧时刻从窗口起点开始等间隔取值。帧内容描述该时刻的琴键保持、踏板延长、发声与力度等,构成规则时间网格上的上下文。
输出是与输入等长的乐谱记录序列,保持输入顺序。每个记录包含音高、小节索引、谱面起始整数部分、谱面起始小数部分、记谱时值、谱表、小节长度、拍号分子分母、调号、声部和倚音标记。其中音高直接复制输入,其余十一项需预测。小节索引是相对窗口锚点的偏移,谱面起始以四分音符为单位拆成整数加小数,时值词表与小节长度词表来自训练数据观测,调号正数记升号数、负数记降号数。帧级辅助输出是每帧的三分类,即非拍、普通拍与下拍,用于提供节拍监督但不进入乐谱记录。
长曲通过窗口推进处理。新转录区间是演奏时间上的 32 秒,前文提供最多前 4 个小节的演奏上下文与乐谱前缀。编码器看上下文加新区间的演奏,解码器以乐谱前缀为条件只预测新区间。推理时窗口按不重叠新区推进,前缀取已累积预测的最近四小节,首窗无前缀,前缀本身不再改写,保证每个输入音符只被转录一次。重建时把相对小节索引换算为全曲索引,按小节投票确定小节长度与拍号调号,再累加小节起点得到每个音符的谱面时刻,最后交 MuseScore 4 处理符头拼写、符干符尾与延音线。
DuET 整体流程:音频进来乐谱出去
从一个样本走一遍最清楚。音频先经 Transkun v2 得到演奏 MIDI,得到离散音符序列与连续踏板信息。离散音符送入音符分支,连续信息按 20 毫秒网格展开为钢琴卷帘并经两层时间卷积送入帧分支。双编码器共八层,每层先在各自的分支出做自注意力,再做双向交叉注意力并经前馈网络,得到音符记忆与帧记忆。帧记忆另接拍点与下拍预测头,解码器则交替查看两种记忆,自回归地逐音符输出结构化乐谱属性,最后由 MuseScore 4 排成 MusicXML。
下图是论文给出的整体结构,阅读时先看主路径再看辅助分支,可以避免把拍点输出误当成乐谱输出。
看图路径: 1. 先从左上角音频经 Transkun v2 到演奏 MIDI 再分叉为音符与帧两路;2. 再看中间八层双编码器内自注意力与双向交叉注意力的连接方向;3. 最后看下方四对交替解码层如何分别指向音符记忆和帧记忆并输出乐谱
论文图 1。原论文 Figure 1::“Overview of DuET within the audio-to-score pipeline.”。
图中上方是音符流,中部是帧流,二者在每层双编码器中交叉。下方解码器画成 4 对层,每对中一层连音符记忆、一层连帧记忆,左侧输入移位后的目标乐谱,右侧输出预测乐谱。右侧还有帧级拍点概率曲线,表示帧分支的辅助监督。旋转位置编码作用于查询与键,残差与层归一化在图中省略。理解这张图的关键是分清两种记忆的来源与去向:音符记忆来自离散音符,帧记忆来自规则网格,解码器交替使用它们才同时获得音符关系与节拍上下文。
音符分支与帧分支各自吃什么信息
音符分支的输入嵌入把音高查表向量与持续秒数、归一化力度的线性投影拼接,发声时刻不进嵌入而进位置编码,使相对时间与绝对起点解耦。论文特意保留原始发声坐标用于旋转编码,而不是把相邻音符间距离作为唯一时间特征,这样任意两个音符的时间差都能直接表示,不必累加中间间隔。音高同时出现在嵌入与位置编码中,前者记绝对音高身份,后者记相对音程。帧分支每帧在 88 个琴键上取 4 个按琴键特征,分别记按键保持、踏板延长、发声与发声力度,再加延音踏板状态与踏板信息可用性,共 354 维,经两层核长 5 步长 1 的卷积映射到隐维度,保持 20 毫秒间隔不降采样。
\[\mathbf{X}=(x_{1},\ldots,x_{N}),\qquad x_{i}=(p_{i},t_{i},d_{i},v_{i}),\]上式是演奏音符的符号定义,每个音符由音高、发声秒时刻、持续秒数和力度组成。符号先行才能读懂后文坐标:位置编码用的时间坐标正是这里的发声时刻,嵌入用的则是音高、持续与力度。帧的符号虽未在此式中,但同样基于这些音符与踏板消息按固定间隔采样得到。
演奏 MIDI × 结构化乐谱记录: 演奏 MIDI 指每个音符的实际按下时刻、持续秒数、力度等演奏层面的测量值;结构化乐谱记录指与每个输入音符一一对应的记谱属性,包括小节、谱面位置和时值等。DuET 不增删音符,只把前者映射为后者,因此演奏 MIDI 提供输入证据,乐谱记录提供输出目标,二者通过一一对应保持音高和顺序不变。
音符编码器 × 帧编码器: 音符编码器以离散音符为单位建模音符之间的关系,负责乐谱属性这种依附于音符的预测;帧编码器以每 20 毫秒的规则时间网格建模连续时间上下文,负责拍点这种可能落在无音符空隙的节拍预测。二者通过双向交叉注意力交换信息,组合后音符表示获得节拍上下文,帧表示获得音符关系,从而同时支持两种粒度的监督。
双编码器每层先各自做自注意力,再做双向交叉注意力。音符交叉注意力的查询来自音符分支、键值来自帧分支,帧交叉注意力反之,2 个方向都用自注意力后的状态而不串行使用对方刚更新的结果。每分支再接独立的前馈网络,层前后用预层归一化与残差。最终状态再归一化形成解码器用的两种记忆。这种并行交叉的设计意图是让音符表示融入时间上下文,让帧表示融入音符关系,而不是让一支单向迁就另一支。
三种位置编码如何表示时间与音高
论文用 3 套坐标讲同一组音符,读懂坐标才能读懂注意力。序号编码即 IndexRoPE 用序号表示解码顺序;时间编码即 TimeRoPE 用共享演奏时间坐标表示经过的帧间隔数,音符发声不必落在网格上因而可以是非整数,例如 0.026 秒对应 1.3;时间音高编码即 TPRoPE 同时用秒级时间与中央 C 为零点的半音坐标表示 2 维位置。下图左侧是钢琴卷帘与网格,右侧是同一 4 个音符的 3 套取值,直观展示了序号相邻不等于时间相邻。
读图时先看音符块与虚线的错位,再对照右侧数值理解非整数时间的来源,这种对照是理解跨分支对齐的关键。
看图路径: 1. 对比左侧钢琴卷帘上四个音符块与 20 毫秒虚线网格的对齐关系;2. 再读右侧表格中同一音符在序号、缩放时间与时间加音高三套坐标下的取值
论文图 2。原论文 Figure 2::“Positional coordinates for the same four notes.”。
图中虚线是 20 毫秒帧网格,音符块横向长度表示持续,纵向表示音高。右侧表格显示序号是等差的,而缩放时间是非均匀的,TPRoPE 还附带音高偏移。这说明仅用序号做相对位置会把同时与远距混为一谈,而用真实时间与音高才能还原乐理上的远近。TimeRoPE 用于帧自注意力、双向交叉注意力和解码器对帧记忆的交叉注意力,因为帧横跨多音高没有唯一音高坐标;TPRoPE 用于音符自注意力和解码器对音符记忆的交叉注意力,解码查询取对应输入音符的发声与音高作坐标;解码器自注意力则用序号编码并加因果掩码表示自回归顺序。
\[\widetilde{\mathbf{q}}_{i}=\left[\mathcal{R}_{t}(t_{i}-t_{\mathrm{start}})\mathbf{q}_{i}^{t};\mathcal{R}_{p}(p_{i}-60)\mathbf{q}_{i}^{p}\right],\]上式是 TPRoPE 对查询的变换,把投影后的查询拆成时间与音高两半,分别按秒级时间与半音坐标旋转后拼接,键做同样变换,值不变。旋转周期在时间上从 0.1 秒到 64 秒几何间隔,在音高上从 12 到 256 半音几何间隔,使注意力中的位置项依赖相对时间差与音程。TimeRoPE 的原理类似,只是统一除以 0.02 秒换算为帧间隔单位,实现跨分支的共享时间基准。
TimeRoPE × TPRoPE: TimeRoPE 是用共享的演奏时间坐标做旋转位置编码,让音符和帧的注意力只依赖相对时间差;TPRoPE 是时间-音高旋转位置编码,在每个注意力头内再分出时间和音高两个子空间,分别编码相对时间距离和音高音程。前者解决跨分支的时间对齐,后者在音符自注意力中再加入音程关系,组合后既有统一时间基准又有二维乐理距离。
解码器如何逐音符输出乐谱并兼顾节拍
解码器共八层排成 4 对,每层含因果自注意力、交叉注意力和前馈网络。交叉注意力奇数层看音符记忆、偶数层看帧记忆,每对都组合一次音符关系与时间上下文。解码器自注意力用序号旋转编码,交叉注意力对音符记忆用 TPRoPE、对帧记忆用 TimeRoPE,查询坐标取当前要预测的输入音符的发声与音高。最终归一化状态经独立属性头并行输出每个音符的全部记谱字段,另有音高头只在训练时做辅助监督。
\[P_{\theta}(\mathbf{Y}\mid\mathbf{X},\mathbf{R})=\prod_{i=1}^{N}P_{\theta}(y_{i}\mid y_{\lt i},\mathbf{X},\mathbf{R}).\]上式是自回归的对齐建模,输出序列概率分解为每个乐谱记录在给定全部演奏与此前乐谱记录下的条件概率乘积。关键是输出长度固定为 N,不预测结束符也不学习音符对齐,因为对应关系已由输入顺序预先确定,解码第 i 步就是转录第 i 个输入音符。这种设计把建模重点放在乐谱属性依赖上,而不是对齐搜索上。
交替解码器交叉注意力 × 音符记忆与帧记忆: 音符记忆是音符编码器输出的 N 个向量,帧记忆是帧编码器输出的 T 个向量;交替解码器交叉注意力指奇数解码层只看音符记忆、偶数层只看帧记忆。音符记忆提供声部与前后乐谱关系,帧记忆提供局部速度与节拍位置,逐对交替让每一对层都融合一次关系与节拍,再自回归地逐音符输出乐谱属性。
MUSTER × ScoreSimilarity: MUSTER 是一组转谱误差指标,报告音高、漏音、多音、起始、结束及其平均误差,越低越好;ScoreSimilarity 是另一组乐谱相似度误差,报告漏音、多音、时值和谱表分配误差,越低越好。前者更贴近演奏到记谱的综合偏差,后者更强调记谱时值与版面归属,二者一起看才能判断改进是来自节奏还是来自音符增删。
属性头在每个音符步并行产生分布,而不是逐属性自回归,这与自回归体现在音符步之间而非属性之间有关。训练时还有音符相位一致性损失,用预测的起始整数与小数分布计算在参考小节内的期望循环误差,只对非倚音且有时值标注的音符施加。推理时窗口前缀来自已预测的最近四小节,当前窗只追加新区预测,前缀不再改写。
训练目标与掩码如何组织两种监督
总目标是音符级损失加帧级损失,两部分相加联合优化。帧级损失含三项互补监督:拍点三分类用高斯软目标与类别权重处理正负不平衡,小节内拍序号在可靠拍点附近做软目标分类,小节相位用余弦正弦分量的平方误差并在相邻可靠拍之间插值。每项按有效监督权重归一化,填充帧与不可靠标注被排除。音符级损失含十一项记谱字段的交叉熵,其中调号、声部与倚音权重为 0.2 其余为 1,外加音高辅助预测与 0.1 权重的音符相位损失,每项在有效监督音符上归一化,填充、前缀与未知标签不计入。
\[\mathcal{L}_{\mathrm{frame}}=\mathcal{L}_{\mathrm{beat}}+0.5\,\mathcal{L}_{\mathrm{index}}+0.1\,\mathcal{L}_{\mathrm{frame\text{-}phase}}.\]上式是帧级目标的加权组合,拍点分类权重为 1,拍序号为 0.5,相位为 0.1。符号背后的输入是最终帧表示在做解码器记忆归一化之前的版本,说明拍点头监督的是编码器输出而非解码器状态。
\[\mathcal{L}=\mathcal{L}_{\mathrm{note}}+\mathcal{L}_{\mathrm{frame}}.\]上式把音符级与帧级监督直接相加,没有额外系数,意味着两种粒度的梯度同时流回各自的分支,并经双向交叉注意力相互影响。训练配置为隐维度 512、八头、前馈中间维 1408,从随机初始化训练 50 轮,每轮采样 20000 个窗口,双卡每卡 16 窗全局批量 32,AdamW 峰值学习率 0.0002、权重衰减 0.01,前 5% 步数线性热身后续弦退火,梯度裁剪范数为 1。掩码有两处:以 0.1 概率按小节掩码演奏音符的内容嵌入并同时掩码解码器侧的当前音高嵌入,但保留旋转编码用的原始时间与音高坐标;以 0.75 概率掩码移位后的解码历史嵌入,不含起始符与填充。目标不变,评测与推理时关闭掩码。
数据、划分与评测条件是什么
训练评测用三部分数据。nASAP 是 ASAP 的音符对齐扩展,提供富有表情的古典钢琴演奏、乐谱、音符对齐与拍点标注;Gangqinpu 是作者整理的 18787 对演奏乐谱对,覆盖流行、古典与其他风格并偏重流行,演奏 MIDI 由 Transkun v2 从音频转录;PERiScoPe 经 PianoCoRe 引入的网络收集演奏同样用 Transkun v2 转录,以减少转录系统差异。Gangqinpu 与 nASAP 在乐曲层面划分训练验证测试,并用跨数据集作品分组防止重叠。
PM2S 主结果在 ASAP 测试的 59 场与 Gangqinpu 测试公共有效子集的 79 场上报告,消融的 PM2S 用固定的 39 场 ASAP 与 72 场 Gangqinpu 公共有效子集,拍点消融用全部 59 场 ASAP 与 100 场 Gangqinpu。基线含 MuseScore、柴田等的 J-pop 与古典配置、神经拍跟踪和 Beyer 和 Dai 的 Transformer,ASAP 基线结果取自 Beyer 和 Dai 已发表值。定量评测时 DuET 预测直接序列化为 MusicXML 而不经 MuseScore 后处理,MuseScore 4 只用于可视化。
指标方向要先讲清。MUSTER 报告音高、漏音、多音、起始、结束与平均误差,ScoreSimilarity 报告漏音、多音、时值与谱表误差,均为百分比且越低越好。拍点消融用宏 F1,越高越好。聚合对象是场级别的误差平均,论文对主表按四舍五入前精度排名最佳与次佳。窗口化、词表来自训练观测、后续重建投票等条件在各方法间并不完全相同,阅读数字时要把数据集、基线、阶段与聚合对象一起看,数值相近不等于同一指标可互换,百分点与相对百分比也要区分。
主结果在什么条件下成立:时值改进与漏音代价
先看谱例的直观对比有助于理解数字。下图是同一段 YouTube 钢琴演奏经 Transkun v2 得到演奏 MIDI 后三份谱面的渲染,均为 MuseScore 4 绘制,视觉简洁本身不证明准确,但能展示不同方法对弹性速度的不同记谱选择,观察时注意拍号与休止符的组织差异。
看图路径: 1. 对比三张谱例的小节线密度、拍号变化与连音符数量;2. 观察 DuET 谱面是否拍号统一而另两份是否出现频繁变拍与碎休止符
论文图 3。原论文 Figure 3::“Qualitative comparison of score excerpts reconstructed from the same performance MIDI: (a) DuET, (b) Beyer and Dai, and (c) Liu’s PM2S. All outputs are rendered with MuseScore 4.”。
图中左侧为 DuET,中间为 Beyer 和 Dai,右侧面板标为 Neural beat tracking;原图注将同一面板称为 Liu’s PM2S,二者均对应论文参考文献[10] 的方法。可见 DuET 多为统一的 4/4 拍与较简单的音符时值,中间出现拍号切换及三连音,右侧出现频繁连音、碎休止与声部交叠。论文据此说明同一演奏可以有多种记谱解释,DuET 在这段摘录中给出更规整可读的组织,但这只是单样本的定性展示,不能代替定量误差比较。
下表是论文报告的 PM2S 主结果完整对照,比较问题是相同测试集上不同方法的记谱误差高低,公平条件是同一数据集划分与同一误差定义,指标方向均为百分比越低越好。
| MUSTER [31, 20] | MUSTER [31, 20] | MUSTER [31, 20] | MUSTER [31, 20] | MUSTER [31, 20] | MUSTER [31, 20] | ScoreSimilarity [32, 33] | ScoreSimilarity [32, 33] | ScoreSimilarity [32, 33] | ScoreSimilarity [32, 33] | |
|---|---|---|---|---|---|---|---|---|---|---|
| Method | Pitch | Miss | Extra | Onset | Offset | Mean | Miss | Extra | Duration | Staff |
| ASAP | ||||||||||
| MuseScore [16] | 2.41 | 7.35 | 9.64 | 47.90 | 49.44 | 23.35 | 16.17 | 16.74 | 55.23 | 21.87 |
| HMMs (J-pop) [19] | 2.09 | 6.38 | 8.67 | 25.02 | 29.21 | 14.27 | 10.80 | 11.39 | 71.38 | – |
| HMMs (classical) [19] | 2.11 | 6.47 | 8.75 | 22.58 | 29.84 | 13.95 | 10.74 | 11.28 | 64.73 | – |
| Neural beat tracking [10] | 2.02 | 6.81 | 9.01 | 68.28 | 54.11 | 28.04 | 17.10 | 17.67 | 66.98 | 6.86 |
| Beyer and Dai [11] | 3.11 | 7.56 | 6.44 | 15.55 | 23.84 | 11.30 | 12.69 | 9.06 | 51.86 | 6.62 |
| DuET (ours) | 2.69 | 8.78 | 11.70 | 12.34 | 20.59 | 11.22 | 13.16 | 13.70 | 36.46 | 4.98 |
| Gangqinpu | ||||||||||
| MuseScore [16] | 0.81 | 3.45 | 3.26 | 16.09 | 38.80 | 12.48 | 6.03 | 5.63 | 58.90 | 17.98 |
| HMMs (J-pop) [19] | 0.65 | 1.78 | 2.19 | 5.75 | 22.43 | 6.56 | 3.08 | 3.18 | 45.36 | – |
| HMMs (classical) [19] | 0.65 | 1.87 | 2.28 | 5.11 | 22.88 | 6.56 | 2.94 | 3.04 | 47.40 | – |
| Neural beat tracking [10] | 0.63 | 1.71 | 1.50 | 15.33 | 40.70 | 11.98 | 3.39 | 2.98 | 63.02 | 6.77 |
| Beyer and Dai [11] | 0.81 | 3.12 | 3.00 | 11.30 | 25.02 | 8.65 | 4.26 | 2.94 | 70.62 | 4.98 |
| DuET (ours) | 0.68 | 2.08 | 2.87 | 2.54 | 10.01 | 3.64 | 2.77 | 2.37 | 36.22 | 2.80 |
该完整主表覆盖 ASAP 与 Gangqinpu 的全部基线与全部误差列,DuET 在 Gangqinpu 上 MUSTER 平均误差为最低,在 ASAP 上平均误差也最低但漏音多音高于多个基线。具体而言 Gangqinpu 上起始与结束误差大幅下降,ScoreSimilarity 时值与谱表同样最低;在 ASAP 上起始、结束、时值与谱表均为最低,但漏音与多音不是最低。也就是说一致增益在谱面起始、结束与记谱时值,代价是 ASAP 上的音符增删误差并未胜出。结论成立的条件是固定窗口、直接序列化无 MuseScore 后处理、ASAP 基线取已发表值,以及 Gangqinpu 演奏 MIDI 本身来自 Transkun v2。
为便于复述核心数字,下表把摘要中的平均误差对照单独整理,单位与原文一致均为百分比,越低越好,比较对象是各数据集最强基线与 DuET。
| 数据集 | 指标 | 最强基线 | DuET | 比较对象 |
|---|---|---|---|---|
| Gangqinpu | MUSTER 平均误差 | 6.56% | 3.64% | 最强基线对 DuET |
| ASAP | MUSTER 平均误差 | 11.30% | 11.22% | 已发表 Transformer 对 DuET |
上表只是主表平均列的摘录,完整基线分布见前一张完整原表。Gangqinpu 上近一半的相对下降幅度远大于 ASAP 上的微小差距,说明流行偏多的数据分布与古典分布下的难度不同,不能把大幅领先推广到所有曲风。ASAP 上 0.08 个百分点的差距在四舍五入前排名意义有限,需结合起始结束与时值的更大差距一起理解。
消融:帧分支、位置编码与掩码各自贡献多少
消融要回答 3 个具体问题:去掉帧分支会怎样,换位置编码与解码记忆会怎样,去掉掩码会怎样。PM2S 消融用固定的 39 场 ASAP 与 72 场 Gangqinpu 公共有效子集,拍点消融用 59 场 ASAP 与 100 场 Gangqinpu,检查点选择注意拍点模型按拍点指标选、乐谱模型按乐谱指标选,因此拍点与乐谱数字的差异不能全归因于联合监督。
下表完整保留原论文 Table 4,比较节拍跟踪的编码器、位置与记忆、掩码消融。评测使用 59 场 ASAP 与 100 场 Gangqinpu 演奏,数值为宏平均 F1 百分比,越高越好;Beat 指拍点,Downbeat 指小节第一拍。这里的评测范围与后面的 PM2S 共同有效消融子集不同。
| ASAP | ASAP | Gangqinpu | Gangqinpu | |
|---|---|---|---|---|
| Model | Beat | Downbeat | Beat | Downbeat |
| DuET | 68.01 | 65.55 | 77.34 | 79.94 |
| Frame-only tracker | 61.19 | 55.51 | 78.86 | 81.37 |
| Dual-encoder tracker | 62.89 | 53.97 | 80.24 | 80.73 |
| Index / Alternating† | 62.34 | 61.66 | 70.60 | 73.09 |
| Time / Alternating | 65.73 | 60.45 | 81.24 | 82.50 |
| Time / Note memory | 68.42 | 63.84 | 76.07 | 79.36 |
| Time / Frame memory | 68.26 | 64.42 | 79.26 | 80.58 |
| Time–Pitch / Note memory | 69.09 | 62.66 | 73.31 | 77.46 |
| Time–Pitch / Frame memory | 65.60 | 62.09 | 78.57 | 80.78 |
| Mask 0 / 0 | 64.12 | 62.07 | 74.58 | 80.25 |
| Mask 10 / 0 | 67.02 | 62.81 | 77.14 | 78.25 |
| Mask 0 / 75 | 69.29 | 64.23 | 72.35 | 74.68 |
完整 DuET 在 ASAP 上的拍点和下拍宏平均 F1 为 68.01% 与 65.55%,高于帧跟踪器的 61.19% 与 55.51% 及双编码跟踪器的 62.89% 与 53.97%;在 Gangqinpu 上,DuET 的 77.34% 与 79.94% 则低于这两个专用跟踪器的 78.86% 与 81.37%、80.24% 与 80.73%。在两个专用跟踪器之间加入音符分支,拍点 F1 在两集上升,下拍 F1 却下降。两个专用跟踪器不含乐谱解码器;它们按拍点指标选择检查点,记谱模型按乐谱指标选择检查点,因此不能把差异全归因于联合监督。
下表完整保留原论文 Table 3,覆盖编码器、位置与记忆、历史掩码 3 类消融。比较基于固定的 39 场 ASAP 和 72 场 Gangqinpu 共同有效子集;MUSTER 与 ScoreSimilarity 各项错误均以百分比计,越低越好。应在各数据集内部比较同一列,不能将此消融子集直接当作主结果测试集。
| MUSTER [31, 20] | MUSTER [31, 20] | MUSTER [31, 20] | MUSTER [31, 20] | MUSTER [31, 20] | MUSTER [31, 20] | ScoreSimilarity [32, 33] | ScoreSimilarity [32, 33] | ScoreSimilarity [32, 33] | ScoreSimilarity [32, 33] | |
|---|---|---|---|---|---|---|---|---|---|---|
| Model | Pitch | Miss | Extra | Onset | Offset | Mean | Miss | Extra | Duration | Staff |
| ASAP | ||||||||||
| DuET | 2.25 | 5.95 | 11.10 | 7.66 | 16.42 | 8.68 | 9.28 | 12.69 | 30.58 | 3.99 |
| Note encoder only | 2.35 | 5.94 | 10.94 | 10.85 | 22.42 | 10.50 | 9.71 | 13.11 | 52.23 | 4.74 |
| Index / Alternating† | 2.35 | 6.92 | 12.41 | 8.67 | 19.00 | 9.87 | 10.27 | 13.67 | 36.62 | 4.73 |
| Time / Alternating | 2.84 | 11.41 | 16.95 | 13.21 | 24.00 | 13.68 | 15.88 | 19.28 | 42.98 | 4.93 |
| Time / Note memory | 2.37 | 7.50 | 12.45 | 8.33 | 16.61 | 9.45 | 11.00 | 14.40 | 28.16 | 4.41 |
| Time / Frame memory | 2.58 | 7.93 | 12.91 | 9.61 | 18.41 | 10.29 | 11.53 | 14.94 | 27.82 | 4.53 |
| Time–Pitch / Note memory | 2.37 | 7.04 | 12.22 | 8.35 | 16.89 | 9.37 | 10.45 | 13.85 | 26.50 | 4.11 |
| Time–Pitch / Frame memory | 2.55 | 9.73 | 14.82 | 11.18 | 20.54 | 11.76 | 13.48 | 16.89 | 30.38 | 5.16 |
| Mask 0 / 0 | 2.53 | 6.44 | 11.62 | 11.28 | 20.01 | 10.38 | 10.57 | 13.98 | 35.42 | 5.73 |
| Mask 10 / 0 | 2.42 | 6.99 | 12.18 | 12.07 | 21.69 | 11.07 | 11.45 | 14.86 | 43.21 | 5.13 |
| Mask 0 / 75 | 2.43 | 7.08 | 12.31 | 9.00 | 17.26 | 9.62 | 10.70 | 14.11 | 30.87 | 4.29 |
| Gangqinpu | ||||||||||
| DuET | 0.63 | 1.66 | 2.28 | 1.75 | 9.01 | 3.07 | 2.26 | 1.78 | 35.26 | 2.72 |
| Note encoder only | 0.62 | 1.77 | 2.07 | 2.87 | 10.88 | 3.64 | 2.43 | 1.95 | 22.93 | 2.38 |
| Index / Alternating† | 0.64 | 1.94 | 3.08 | 2.54 | 11.07 | 3.85 | 2.36 | 1.88 | 54.11 | 2.91 |
| Time / Alternating | 0.63 | 1.85 | 2.22 | 2.89 | 10.28 | 3.57 | 2.78 | 2.30 | 26.52 | 2.95 |
| Time / Note memory | 0.60 | 1.58 | 2.05 | 1.76 | 9.36 | 3.07 | 2.24 | 1.76 | 32.82 | 2.59 |
| Time / Frame memory | 0.71 | 2.12 | 2.41 | 2.93 | 9.63 | 3.56 | 3.04 | 2.55 | 32.19 | 2.46 |
| Time–Pitch / Note memory | 0.60 | 1.71 | 2.18 | 2.49 | 9.52 | 3.30 | 2.38 | 1.90 | 35.44 | 2.66 |
| Time–Pitch / Frame memory | 0.69 | 2.44 | 3.15 | 3.44 | 10.19 | 3.98 | 3.06 | 2.57 | 31.25 | 2.87 |
| Mask 0 / 0 | 0.64 | 1.83 | 2.59 | 3.23 | 10.04 | 3.67 | 2.57 | 2.09 | 37.65 | 2.78 |
| Mask 10 / 0 | 0.67 | 1.95 | 2.58 | 3.30 | 9.64 | 3.63 | 2.78 | 2.30 | 36.42 | 2.53 |
| Mask 0 / 75 | 0.60 | 1.69 | 2.70 | 1.87 | 9.06 | 3.18 | 2.23 | 1.74 | 56.35 | 2.67 |
PM2S 消融按编码器、位置、记忆和掩码逐项比较。仅保留音符编码器时,两集平均误差、起始误差与结束误差均比完整 DuET 更高,支持帧级时间上下文的价值;但 Gangqinpu 时值误差较低,收益具有数据集依赖。序号位置加交替记忆即使额外使用音符间距离特征,平均误差仍高于 DuET;交替记忆下时间音高编码优于纯时间编码,但单记忆下音高感知的效果随数据集和所访问记忆而变。
在时间音高位置编码下,交替访问两种记忆优于单独访问其中一种;纯时间编码的比较却相反。去除输入或解码历史任一掩码都会提高平均误差,取消解码历史掩码尤其增大起始误差;Gangqinpu 漏音与多音误差则在无输入掩码时改善,因此完整设置不保证每一项都最优。
上表 PM2S 数字来自固定的 39 场 ASAP 与 72 场 Gangqinpu 共同有效消融子集,不是主结果的 59 场与 79 场,也不是前表节拍跟踪使用的 59 场与 100 场;不能跨表把不同指标与样本范围的数字直接比大小。拍点方面原文还报告完整 DuET 在 ASAP 上拍点与下拍 F1 高于两个专用跟踪器,而在 Gangqinpu 上两个专用跟踪器更高;加音符分支对拍点 F1 在两集提升但下拍 F1 下降。这些交叉结果提示节拍与记谱的最优检查点并不一致,联合训练不等于两任务同时最优。
哪些结论还不能下:误差、曲风与评测边界
先说未胜出项。ASAP 主表上 DuET 的漏音与多音误差高于多个基线,ScoreSimilarity 的漏音多音同样不是最低;Gangqinpu 上虽大幅领先平均误差,但消融显示时值与谱表等细分项在不同变体间互有胜负。这意味着方法的主要证据在谱面起始、结束与记谱时值组织上,而不是音符增删的检出上。用平均误差的下降直接宣称全面最优会夸大,论文结论也把一致增益限定在时值相关指标。
再说适用条件。Gangqinpu 的大幅下降建立在 Transkun v2 转录的演奏 MIDI、固定 32 秒窗口、前四小节前缀、直接序列化评测等条件下;ASAP 的微小差距还依赖取自已发表的基线值与四舍五入前排名。流行偏多与古典为主的分布差异很大,总体趋势推不到每一首曲子。定性谱例仅是随机选的一段 YouTube 演奏,视觉规整不等于记谱准确,论文也明确提醒了这一点。拍点 F1 的跨数据集反转、单记忆与交替记忆随位置编码而变的优劣,都说明音高感知与记忆整合的好处是有条件的。
缺证据不等于技术缺陷,但有三项尚未评测的范围要记清。第一,音高拼写、符尾、符干方向与延音线交由 MuseScore 4 处理,模型本身不直接优化排版质量。第二,窗口推进中前缀取自已预测,若早期小节出错会向后传递,论文未量化这种误差累积。第三,训练与推理的计算成本、延迟与帧率未报告,不能从误差下降推出更快更省。百分点与相对百分比不可混用,不同指标的差值也不应塞进模型列,自动指标更不等于人工可读性评价。
复现第一步做什么:代码权重与运行链路
复现先分清三件事:推理代码、预训练权重、端到端可运行是独立的。本篇作者资源经校验当前可用,代码、模型与演示均指向同一仓库地址,可写作者资源当前已公开,但这只证明链接可达,不证明所有曲风都能复现同样幅度。第一步应按仓库说明准备环境,先跑通 PM2S 的推理入口,用自带权重在示例演奏 MIDI 上得到结构化乐谱记录,再串起 Transkun v2 与 MuseScore 4 验证音频到 MusicXML 链路。不要一开始就重训,随机初始化 50 轮、每轮 20000 窗口的开销较大。
关键超参数与信息条件要保留原样:隐维度 512、八头、前馈 1408、八层双编码器加 4 对解码层、帧间隔 0.02 秒、窗口新区 32 秒、前缀最多前四小节、掩码率输入按小节 0.1 与解码历史 0.75、优化器 AdamW 峰值学习率 0.0002 权重衰减 0.01。数据方面注意乐曲级划分与跨数据集作品分组,防止同一作品在 ASAP 与 Gangqinpu 间泄漏;Gangqinpu 全文称计划公开并将在数据集论文中详述构建,复现时以实际仓库中的划分与词表为准。评测时保持直接序列化与 MuseScore 仅可视化的约定,否则后处理会改变数字的可比性。
还需要补的验证包括:在自己关心的曲风上重测起始结束与时值,而不只看平均误差;在长曲上检查前缀误差传递;在无踏板信息与弱拍曲目上检查帧分支的稳定性;若要宣称可部署,需另测推理延迟、显存与 MusicXML 后处理时间。训练资源、推理开销与输出帧率要分开记录,不能用训练批量推断推理速度。
什么时候值得尝试 DuET:总结与下一步
如果你的任务是把富有表情的钢琴演奏 MIDI 转成可读乐谱,且痛点在节奏量化与时值混乱而非音符检出,且能接受固定窗口与一一对应不增删音符的约定,DuET 值得尝试。它的可复述关键步骤是:离散音符与 20 毫秒钢琴卷帘分别嵌入,八层双编码器内各自自注意力加双向交叉注意力得到两种记忆,帧记忆做拍点辅助监督,解码器 4 对层交替查看两种记忆并逐音符输出十一项记谱属性,窗口间用前四小节预测作前缀推进,最后投票确定小节与拍号调号并交 MuseScore 4 排版。位置上用共享时间的 TimeRoPE 对齐跨分支,用时间加音高的 TPRoPE 在音符侧编码音程。
证据支持的判断是:在 Gangqinpu 条件下平均误差与时值谱表明显改善,在 ASAP 条件下时值相关误差小幅改善但漏音多音未胜出;帧分支与解码历史掩码的贡献较稳,音高感知与交替记忆的好处依赖数据集与记忆方式。推测但待验证的是流行曲风的更大增益是否来自更规整的节拍分布,以及联合拍点监督是否在更多曲风下稳定帮助记谱。下一步应补长曲误差传递分析、更多曲风与弱拍音乐的评测,以及拍点与记谱联合最优的检查点策略,再谈部署成本与人工可读性评价。
📎 论文与评分元数据
排名:前25% | 文档类型:方法研究 | arXiv 原文
⚖️ 评分明细
评分属于系统判断,不是论文实验结果;八维数值与总分见页首,原始审计记录保留在后端。
评分规则:type-aware-v1
评分模型:muse-spark-1.3-contributor
评分请求协议:openai_responses