延音踏板让音频测不准松键:视觉钢琴转录改看键盘,松键 F1 从 46% 提到 90%

Multi-Task Multi-Frame Visual Piano Transcription

Yonghyun Kim, Hoyeol Sohn, Juhan Nam, Alexander Lerch

cs.SD, cs.AI, cs.CV, cs.MM, eess.IV

2026-08-04

V2N 是首个完整视频钢琴转录系统,用共享主干接四个任务头(起音/松键/保持/力度)、逐帧监督 1 秒上下文,在 PianoVAM 与 R3 刷新 SOTA,松键 F1 近乎翻倍,首次给出视频端音符级力度。

这篇在解决什么

自动钢琴转录(AMT)要从信号里还原每个音的音高、起音、松键和力度。基于音频的做法在音高、起音、力度上已经做得很成熟,但松键一直被延音踏板搅浑:踩下踏板后,琴键已经回到原位,声音还在响,所以音频系统干脆把音符的结束对齐到踏板释放,而不是物理松键,跟 MIDI 的 NoteOff 能差出好几秒。

视觉钢琴转录(VPT)直接看键盘,按下去的键和松开的键在画面上不一样,跟踏板状态无关,物理按键状态是直接可观测的。它还能在音频模糊、受损或干脆没有(多乐器混录、嘈杂或混响环境、素材丢音轨)时顶上。问题是 VPT 一直被冷落:现有方法最多只用 0.2 秒视频上下文,只在窗口中心帧做监督,松键精度远远落后起音(PPAN 在 PianoVAM 上 50ms 的带松键 F1 只有 45.9%),而且从没报告过音符级的力度。V2N(Video to Notes)就是冲着把这些补齐来的。

方法

V2N 的架构三段式:视觉特征提取器、共享时序主干、四个任务头。

视觉前端沿用 S2S 的做法:一个从零训练的 ResNet-18,灰度输入,加一个「斜率先验」,一个学到的 1D 空间编码把每个水平位置映射到 88 个琴键之一;每帧用一个 5 帧(0.2 秒)窗口联合处理,全局平均池化后线性投影到主干维度。主干是三个 Conformer 卷积模块(FFN、深度可分离 1D 卷积、FFN,核大小 31,去掉了自注意力),三层核-31 卷积让每个输出帧的感受野覆盖整个 1 秒输入的 25 帧,又不用自注意力的二次方开销。四个头各是一个双向 LSTM(隐层 256)加线性投影,分别输出起音、松键、按键保持、力度。

四个预测目标都扎根在按键机械结构上:起音是按键按下;松键是物理松键,对齐 MIDI NoteOff;按键保持是键在 [起音,松键) 区间被按住;力度是逐键归一化的 MIDI 力度。前三个用 sigmoid,推理时以 0.5 阈值二值化;力度头是线性的,推理时裁剪到 [0,1] 再映射回 0 至 127 整数。

两个设计选择值得点出。第一是逐帧监督,不只在窗口中心帧打标签,而是 1 秒里每一帧都监督,训练时以 1 帧步长密采、跨视频打乱,让每个帧位置都当过中心帧;这样做每段能多拿约 5 倍监督信号,推理开销却不变。第二是松键引导的音符解码:音符在起音峰开始,在松键峰结束,如果按键保持先掉下来就以它兜底。这跟音频转录里只用帧活动阈值切音符的老办法不一样,消融显示它更准。

整个模型 125 GFLOPs、28.2M 参数处理 1 秒片段(视觉前端占 99%),0.5 秒重叠步长摊下来约 250 GFLOPs 每秒,在 RTX 5080 上约 40 毫秒 GPU 时间,实时率约 0.04。

结果

主实验在 PianoVAM(107 段俯拍业余练习视频,带 Yamaha Disklavier 同步 MIDI)和 R3(31 小、两位职业钢琴家的练习录像,更难:多架钢琴、多个机位、光照不一、高难度曲目)上做。

PianoVAM 上,V2N 起音 F1 与 Li et al. 持平(50ms 下 94.7,100ms 下 97.0,差距在 0.5 个百分点内),在所有依赖松键的指标上超过全部基线。提升最大的是物理松键指标:

指标(50ms)PPANV2N
带松键 +Off45.989.5
松键+力度 +Off+Vel29.778.3

专门的松键监督加 1 秒上下文,把 +Off F1 几乎翻倍,并在 +Off+Vel 上比 PPAN 高出 48.6 个百分点。V2N 也是唯一一个在四个 MIDI 属性(音高、起音、松键、力度)上同时拿高准确率的系统,并且是第一个报告视频端音符级力度 F1 的。

R3 上,V2N 在两个子集的起音上都超过此前 VPT,松键指标差距更大:那些只盯着起音的基线在 +Off 上基本崩盘,说明物理松键得专门监督,靠按键保持(帧活动)建模顺带出来是不行的。

消融把标题里的「多任务」「多帧」拆开验证。多任务头方面,去掉头会掉起音、松键 F1 直接塌,各头既提供互补监督又提供推理线索。多帧与结构方面(逐行累加):只监督中心帧改成监督全部 5 帧,起音涨 1.3、+Off 涨 4.5 个百分点;再加 Conformer 序列模型,起音涨 2.5、+Off 涨 5.7,是单步最大涨幅,因为纯空间的前端分不清「按下」和「按住」,序列建模解了这个歧义;0.2 秒窗口拉到 1.0 秒,在 PianoVAM 上只涨 0.4 和 0.8 个百分点,但在 R3 上是决定性的。

为什么重要

对做时间事件检测和多模态转录的人,这是一份干净的工程参考:视觉端能补上音频因踏板丢失的物理松键信息,而且多任务多帧监督、松键引导解码这两个设计是可复用的。计算上它也比 Li et al. 的视频分支便宜约 1.7 倍,1 秒窗口不带来实际的墙钟代价。

但要诚实:这是个领域窄、增量明确的工程贡献,不是方法层面的突破。它的价值在于把 VPT 从「只能凑合测起音」推到「能给出完整 MIDI」,并把每个设计选择都用消融钉死。

局限与存疑

作者自承两条主要局限:一是跨数据集迁移几乎全崩,学到的像素到琴键映射换相机几何就不认了,哪怕做过透视变换归一化(PianoVAM 键盘均宽约 606 像素,R3 约 784 像素,同一列在不同集里指向不同键);二是不预测延音踏板控制变化。

另有两点存疑。R3 数据本身有同步问题:895 个文件里有 70 个音视频偏移超过 200 毫秒,作者说影响所有模型所以仍报原测试集,但剔除 10 个受影响的 R3x 测试文件后,V2N 的 100ms 起音 F1 从 86.6 涨到 94.3,涨了 7.7 个百分点,说明报出来的 R3 数字被同步噪声压低了不少。另外所有基线都是作者自己重训的,虽然他们复现的 S2S 与 V2R 起音数与原文差约 1 个百分点,但松键这种基线原本就弱,重训设置的差异仍可能放大或缩小差距。

术语

原文与代码

相关论文

全部论文解读