专精音频转 MIDI:GAPS、FiloSax、FiloBass、VioPTT 与 SwiftF0 的任务边界
比较事件级 CRNN、F0 分段和演奏技巧多任务学习,说明为何干净 solo、正确乐器路由与 onset/offset 定义比把所有 F1 混排更重要。

自动音乐转录
GAPS、FiloSax、FiloBass、VioPTT 和 SwiftF0 都输出 MIDI,但输入分布、标签空间和评价容差不一样。输入乐器应先明确,成绩随后留在各自数据集和协议中解释。
自动扒谱从逐帧音高检测走到带起音、终止、力度和乐器标签的事件模型。Onsets and Frames、多乐器 Transformer 与专项转录器的演变说明,不同乐器需要不同声学先验,note F1 也会随容忍窗口和事件定义改变。

1. 从单旋律音高到多音符事件
早期旋律提取在每帧估计一个主 F0,适合人声或单音乐器;多音高估计则判断多个音高是否同时活跃。把帧矩阵转成 MIDI 仍需要起音与终止规则,同音连奏、踏板延音和弱起会让相邻事件粘连。音高正确并不代表音符边界正确。
Onsets and Frames 将起音检测与持续帧联合训练,钢琴转录因此获得更可靠的事件边界。后续 Transformer 和 token 解码器直接输出 time-shift、note-on、velocity 与 note-off,把后处理变成序列学习。代价是错误会沿序列传播,时间网格和事件排序也成为模型定义的一部分。

2. 专项数据集如何把乐器物理写进模型
钢琴击弦瞬态清楚并受踏板影响,萨克斯能连续滑音和颤音,贝斯起音常与底鼓重叠,小提琴连弓没有固定品格。通用模型需要覆盖互相矛盾的边界,专项模型可以围绕一种发音机制设计数据与损失。优势来自任务更窄,也意味着跨乐器能力不会自动迁移。
真实分轨与准确 MIDI 很少同时存在,研究会混用录音—演奏数据、合成渲染和自动对齐语料。合成数据真值精确,却缺少真实触键、噪声与串音;独奏数据干净,又无法代表完整混音。训练来源决定模型是在干净演奏、现场录音还是分离后 stem 上最可靠。
3. 评测协议:容忍窗口怎样改变音符准确率
onset F1 通常允许预测起音落在真实起音附近的毫秒窗口。加入 offset 后,还要求终止误差小于固定时间或真实时值比例;带 velocity 的指标再增加力度容差。窗口扩大时,节奏略偏的事件更容易匹配。
连续 F0 模型使用 raw pitch accuracy、voicing recall 或 cents 误差,离散 MIDI 模型使用 note event 匹配。滑音可能在连续音高上非常准确,却被离散成多个碎音符;反过来,量化 MIDI 的单个长音在音符级命中,内部音高曲线已经丢失。
混音转录与分离后转录也不是同一实验。前者要求模型学会忽略伴奏,后者获得更干净目标,同时继承分离残留和目标损伤。测试若使用不同前端,就不能把差异全部归给 MIDI 模型。
进入 DAW 后,轨道组织、踏板、pitch bend 和力度范围会暴露榜单没有覆盖的问题。同一乐器被拆成多个通道,或所有力度集中在窄区间,note F1 可能仍然很高,人工修订成本却明显增加。
4. 音高帧如何被整理成可编辑的音符事件
早期多音高估计在每个时间帧判断哪些音高活跃,得到类似钢琴卷帘的二值矩阵。MIDI 还需要把连续活跃帧合并为带起音、终止与力度的事件。两个相邻同音若没有清楚的重新起音,会被错误合成一个长音;延音踏板又会让声学持续时间超过手指按键时间。
事件模型直接预测 onset、pitch、offset、velocity,减少了后处理规则,但把错误依赖带进序列:漏掉一次起音会改变后续持续关系。帧模型与事件模型不是简单的新旧替代,前者保留连续激活证据,后者更接近可编辑符号。
不同乐器需要不同的声学先验
钢琴有固定音高、清晰击弦瞬态和踏板延音;萨克斯可以连续滑音、气声和颤音;贝斯起音较弱且泛音会与底鼓重叠;小提琴没有品格,连弓中音符边界并不总是声学突变。统一转录器必须覆盖这些矛盾,专项模型可以把损失与数据集中到一种边界。
专用语料也定义了模型能看到的演奏法。若训练集中大多是干净独奏,模型在完整乐队混音中会把伴奏泛音当作目标;若数据来自合成 MIDI,音准与起音比真实演奏规整。架构名称相同,换一套训练集就可能形成完全不同的乐器偏好。
音符 F1 的容忍窗口决定了“正确”有多宽
onset F1 通常允许预测起音落在真实起音附近的时间窗口;加入 offset 后,还要求终止误差落在固定毫秒或真实时值比例内;带 velocity 的指标再增加力度容差。窗口越宽,节奏略有偏移的事件越容易匹配。两个都叫 note F1 的数字,协议可能并不相同。
连续 F0 模型使用的是帧级音高误差、raw pitch accuracy 或 voicing 指标,和离散 MIDI 事件没有共同分母。把 Basic Pitch、乐器专项转录器与连续旋律跟踪放入一张总榜,会把事件定义差异误写成能力差异。
MIDI 是演奏事件的摘要,不是录音的副本
MIDI 可以保存音高、时值、力度、控制器和乐器通道,却不包含真实音色、房间、麦克风与大部分发音细节。颤音可用 pitch bend 近似,气声、擦弦和复杂装饰音往往没有统一表示。转录正确不等于用普通音源回放就能还原原演奏。
乐谱出版还要增加拍号、调号、声部、连音、表情与可读量化。直接按毫秒记录的 MIDI 保留表演时值,却可能在五线谱上出现大量碎拍。自动转录与自动制谱相邻,但后者还需要音乐结构推断。
从 Onsets and Frames 到专项模型的分化
钢琴转录的重要转折是把 onset 检测与持续帧判断联合起来:新的音符只有在起音证据存在时才开启,随后由 frame 激活维持。这个设计减少了泛音造成的假音符,并为踏板和力度增加独立输出。后来序列模型把同样思想改写成事件 token,开始直接处理更长的音乐语法。
通用音频—MIDI 系统希望覆盖多种乐器,训练数据常来自合成音频、MIDI 对齐录音和自动标注混音。专项模型则利用乐器独奏、分轨或领域语料,把容量集中在萨克斯滑音、贝斯低频起音、钢琴踏板等现象。两条路线分别换取覆盖面与细节。
分离后转录是一种常见折中。目标 stem 变干净后,转录器更容易识别音符;分离残留也会制造额外起音,目标被削弱的泛音则会让音高判断失真。端到端混音转录可以学会忽略伴奏,却需要更大、更多样的混音—MIDI配对数据。
模型输出进入 DAW 后,还会遇到速度曲线、踏板、pitch bend 和通道分配。只生成 note-on/note-off 的系统适合旋律草稿,不能被描述为完整演奏捕捉。公开功能说明应沿用模型实际输出事件,而非把所有 MIDI 字段都写成已支持。
5. 事件级转写必须同时核对起点和终点
F1=2PR/(P+R), P=TP/(TP+FP), R=TP/(TP+FN)TP满足该论文匹配窗口的正确事件FP多报的音符或片段FN漏掉的音符或片段
不同论文对 TP 的定义并不相同:有的只要求 onset 落在窗口内,有的还要求 offset、音高或演奏技法同时正确。F1 数字离开匹配规则就失去可比性。
GAPS、FiloSax、FiloBass、VioPTT 与 SwiftF0 面向不同乐器和标注层级。路由到正确专模,比把不同数据集的最高 F1 拼成总分更重要。
论文、代码与权重可沿 Unified specialist runtime / GAPS paper / VioPTT 查阅。
6. 专用转录器为何不能排成一条总榜
钢琴、萨克斯、贝斯、小提琴和连续 F0 使用不同事件定义与容差窗口,模型名称相邻,指标却不共用同一分母。
| 方法 | 符号表示 | 主要误差来源 |
|---|---|---|
| GAPS | 钢琴音符与踏板语境 | 密集和弦、同音重复、延音 |
| FiloSax / FiloBass / VioPTT | 乐器专属数据与音域 | 滑音、弱起音、伴奏泄漏 |
| SwiftF0 | 连续基频轨迹 | 仍需另一步切分为音符事件 |
7. 从通用钢琴基线到乐器专模,数据集比文件扩展名更能解释结果
Onsets and Frames 把起音检测、逐帧激活与音符状态结合起来后,钢琴转录长期成为事件级 AMT 的重要基线。它受益于固定音域、清晰击弦起音和大规模配对数据;把同一结构直接移到萨克斯、弦乐或人声时,持续音、滑音、颤音和弱起会改变标签边界。专项模型因此需要重新定义输入分布和真值。
hf_midi_transcription 仓库把萨克斯、贝斯、吉他和钢琴分别映射到模型,公开接口也明确面向独奏、单声部音频。混音若未经分离就送入专模,伴奏起音可能被解释为目标音符;分离后的串音又会制造次级峰值。模型支持多种乐器,不等于同一权重能自动识别并转写所有乐器。
GAPS、FiloSax、FiloBass、VioPTT 与 SwiftF0 的论文分别依赖不同录音、标注和容忍窗口。note onset F1、onset-offset F1、frame F1 和音高误差观察的对象不同,数字不能横排成总榜。尤其在弦乐与歌声中,人工标注的音符终止常带主观性;缩窄容忍窗口既惩罚模型,也放大标注者之间的差异。
可用 MIDI 还需经过复核:检查漏音与重音,清理过短毛刺,确认延音踏板或连奏,随后才量化到拍点。爵士 rubato、吉他推弦和萨克斯装饰音若过早网格化,会把演奏表达误写成模型错误。保存原始秒级事件、模型版本、阈值与后处理脚本,才能让后续乐谱编辑追溯每个音符从何而来。
结语:MIDI 是事件解释,不是录音复制
专项转录器把乐器物理和语料分布写入事件预测,使钢琴踏板、萨克斯滑音或贝斯低频获得更合适的先验。它们不能在省略事件定义后被排成统一总榜。
onset F1、带 offset 的 note F1、velocity 指标和连续 F0 各自使用不同容忍规则。MIDI 保存音高、时值与控制事件,真实音色、空间和大量演奏细节仍留在录音中;可出版乐谱还需要声部、量化与记谱结构。
踏板下的同音重复是钢琴转录的难点;萨克斯和小提琴的滑音、装饰音与颤音容易被切成多个事件;贝斯又常与底鼓和低频谐波混淆。MIDI 合成器会掩盖一部分时值误差,piano roll 与原音波形能显示这些切分。
事件级 F1 对容差窗口十分敏感。50 ms 内命中与严格起音命中回答的不是同一问题,offset-aware、note-with-offset 和 frame F1 也采用不同事件定义。
MIDI 记录符号事件,不保存原始音色、房间声和演奏触感。复杂混音里的乐器身份错误会继续传到编配与乐谱软件。
专模之间没有共同数据集时,页面只展示来源内指标和运行特性,不编造跨论文总冠军。