专精音频转 MIDI:五个模型,五张不同的 F1 考卷
核清 GAPS 吉他、FiloSax 爵士萨克斯、FiloBass 爵士低音提琴、VioPTT 四类技法与 SwiftF0 连续 F0 的真实输出,并列出公开权重候选及 E1–E5 上线门槛。

核清 GAPS 吉他、FiloSax 爵士萨克斯、FiloBass 爵士低音提琴、VioPTT 四类技法与 SwiftF0 连续 F0 的真实输出,并列出公开权重候选及 E1–E5 上线门槛。

自动音乐转录
GAPS 把干净或已分离的吉他独奏转成音符事件和 MIDI,不输出弦号、品位、连续 F0 或 Pitch Bend。请对照原录音调整 MIDI 力度。 FiloSax 面向单声部爵士萨克斯独奏,把离散音高、起音和止音事件导出为 MIDI;它不输出连续音高、滑音或颤音轨迹。 FiloBass 面向单声部爵士低音提琴(double bass / upright bass),不是通用贝斯或电贝斯模型。应输入干净或已分离的 stem;底鼓和低频串音会制造假音符。 VioPTT 输出小提琴音符事件,以及 détaché、flageolet、spiccato、pizzicato 四类技法之一或无技法标签。MIDI 力度是固定值,不是实测演奏力度。 SwiftF0 跟踪单声部连续 F0;TelkNet 再把曲线切成音符,导出 MIDI、逐帧音高 CSV 和图表。它不能转写复调全混音。
自动扒谱从逐帧音高检测走到带起音、终止、力度和乐器标签的事件模型。Onsets and Frames、多乐器 Transformer 与专项转录器的演变说明,不同乐器需要不同声学先验,note F1 也会随容忍窗口和事件定义改变。

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

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