Oemer vs homr:两大开源OMR乐谱识别工具深度对比与局限边界说明
2026/8/25 17:30:26 网站建设 项目流程

Oemer vs homr:两大开源OMR乐谱识别工具深度对比与局限边界说明

【免费下载链接】oemerEnd-to-end Optical Music Recognition (OMR) system. Transcribe phone-taken music sheet image into MusicXML, which can be edited and converted to MIDI.项目地址: https://gitcode.com/gh_mirrors/oe/oemer

Omer 是一款免费开源的端到端光学乐谱识别(OMR)工具:它能把手机拍摄的五线谱照片直接转换成可编辑的MusicXML,进而导出 MIDI 播放或二次编辑;homr则是它更强大的改进版。本文用 3 分钟带你深度对比 Oemer 与 homr 的识别流程、效果、鲁棒性与能力边界,帮你避坑并快速选出适合"手机拍乐谱转 MusicXML"的场景。

一、什么是 OMR?Oemer 如何把手机拍的五线谱变成 MusicXML 🎼

光学乐谱识别(Optical Music Recognition,OMR)是把乐谱图像转换为结构化乐谱数据的 AI 技术。Oemer 的完整流程是:

手机拍照 → 倾斜/弯曲校正(Dewarp)→双 UNet 语义分割→ 规则引擎提取符头、和弦、小节线、休止符与升降号 → 节奏(符杠、附点)解析 → 生成 MusicXML

整个过程一条命令行驱动,入口在 oemer/ete.py。下面是真实乐谱的识别效果(左:原谱,右:Oemer 转写出的 MusicXML):

生成的 MusicXML 可用 MuseScore 等主流编辑器打开,直接编辑、回放并导出 MIDI。

二、Oemer 快速上手:一条命令完成乐谱识别

1. 安装步骤

# 从 PyPI 安装(最常用) pip install oemer # 可选:附带 Tensorflow 支持 pip install oemer[tf] # 或克隆仓库安装最新源码 git clone https://gitcode.com/gh_mirrors/oe/oemer

2. 运行识别

oemer path/to/score.jpg

会在当前目录输出.musicxml文件,以及一张已识别元素的可视化分析图。常用参数一览:

参数作用
-o / --output-path指定输出目录(默认当前目录)
--use-tf改用 TensorFlow 推理(默认 Onnxruntime)
--save-cache缓存模型预测结果,下次无需再推理
-d / --without-deskew跳过倾斜校正,报错时优先尝试

耗时参考:带 GPU 时通常3~5 分钟/首乐谱;首次运行会自动下载模型 checkpoint,视网络可能需要 10 分钟。

3. 先看效果再上手

仓库内置了 docs/index.html 演示页,包含多组"校正前后 / 原谱 vs 转写乐谱"的对比图与音频试听,非常适合先确认效果再本地运行。

三、Oemer 识别原理:双 UNet + 规则引擎,流程完全透明

Omer 的流水线可以概括为三层,全部位于开源的 oemer/ 目录,便于阅读与魔改:

  1. 深度学习层:两个 UNet 分割网络。第一个(oemer/checkpoints/unet_big/)分离"五线谱 vs 其他符号",第二个(oemer/checkpoints/seg_net/)再细分符头、谱号、符干、休止符与升降号。
  2. 机器学习层:oemer/sklearn_models/ 中的 SVM 模型(clef.model、rests.model、sfn.model)负责具体符号类型分类。
  3. 规则引擎层:纯算法提取模块——oemer/dewarp.py 校正、oemer/staffline_extraction.py 五线谱、oemer/rhythm_extraction.py 节奏、oemer/build_system.py 构建 MusicXML。

3.1 六步校正:把歪斜弯曲的手机拍乐谱变水平

手机拍摄的乐谱几乎都有弯曲变形,Oemer 的 OMR 校正流程分六步:Predict → Morph → Quantize → Group → Connect → Dewarp:

实际校正效果(左:原图,右:校正后五线谱恢复水平):

3.2 五线谱定位:逐行像素累计找峰

校正后,算法逐行累计正像素、挑选峰值,再叠加规则过滤得到真正的五线谱(图中红点)。线间距unit_size是后续所有音高与尺寸度量的基础:

3.3 节奏解析:符干、符杠与附点的规则推断

节奏是 OMR 中最易出错的部分。Omer 用"符号图"减去其他符号图得到符杠/符旗区域,与音符组关联并数符杠数量判定节奏型(八分、十六分等),必要时还会把和弦组拆分成多条旋律线:

再看一组真实乐谱识别演示(左:原谱,右:MusicXML 转写结果):

四、homr:Oemer 的强力改进版

homr 由 Christian Liebhardt 基于 Oemer 改进而来,原作者在 README 中给出了"特别推荐":

  • 更专用、更强大的深度学习模型
  • 对图像质量的鲁棒性更强:低质量照片下结果更稳
  • 最终效果更讨喜

一句话总结:Oemer 胜在"透明可改"(每一步都是独立 Python 模块),homr 胜在"效果更强"(模型驱动)。如果只关心最终识别质量,homr 更值得优先尝试。

五、Oemer vs homr 核心差异对比表 ⚖️

维度Oemerhomr
定位端到端 OMR 基准实现Omer 的改进版
核心模型双 UNet 分割 + SVM 分类更专用、更强大的深度学习模型
图像鲁棒性能处理倾斜/模糊照片,效果随画质波动更强,低质量图像下更稳定
流程透明度高,各步骤为独立模块,便于修改模型驱动
支持的谱印刷体西方五线谱印刷体西方五线谱
输出MusicXML + 元素可视化分析图可编辑乐谱数据
安装方式pip install oemerpip install homr

六、局限边界说明:这些场景别硬用 ⚠️

两者同源,共享同一个"能力圈",边界务必认清:

6.1 记谱类型边界

  • 印刷体西方五线谱:训练数据来源,效果最好
  • 手写谱:Oemer 官方明确"很可能无法转写",homr 同样聚焦印刷谱
  • 简谱、和弦谱、吉他六线谱:不在支持范围内

6.2 图像质量边界

倾斜校正能应付中度倾斜与弯曲,但以下情况两者精度都会明显下降:

  • 严重运动模糊、低光噪点
  • 极端透视畸变(拍摄角度过大)
  • 遮挡、折痕阴影、强反光
  • 谱面过密、字号过小

6.3 音乐复杂度边界

复杂元素识别精度下降,生成的 MusicXML需要人工核对

  • 密集和弦、交叉节奏、多声部交织
  • 装饰音、踏板标记、力度与表情记号
  • 频繁转调、特殊排版布局

6.4 性能与工作流边界

  • GPU 下约 3~5 分钟/首,纯 CPU 机器耗时显著更长
  • 首次运行需下载 checkpoint,可用--save-cache避免重复推理
  • 多页乐谱需手动分页逐张处理,无内置切页功能
  • 导出的 MIDI 一般可听,但建议听一遍并人工修正后再正式使用

七、选型建议:什么时候用 Oemer,什么时候选 homr?

  • 🔬想学 OMR 原理、修改流水线、做研究基线→ 选Omer(代码透明、模块独立)
  • 🎯追求识别质量、照片质量参差→ 选homr(鲁棒性更强)
  • 📄手抄谱 / 简谱 / 六线谱→ 两者都不适用,建议专用工具或人工录入
  • 快速验证→ 都是 pip 一条命令安装,先看内置演示页效果再决定

八、常见问题 FAQ

Q:输入图片有什么要求?A:JPG/PNG 均可,越大越清晰越好;避免强反光与褶皱。

Q:能识别简谱或手抄谱吗?A:不能。两个模型都只针对西方五线谱(印刷体)训练。

Q:第一次运行报错怎么办?A:优先加-d / --without-deskew跳过倾斜校正再试;仍失败则按仓库 issue 模板提交问题。

Q:识别结果如何编辑?A:用 MuseScore 等编辑器打开.musicxml,可编辑、回放、导出 MIDI。

【免费下载链接】oemerEnd-to-end Optical Music Recognition (OMR) system. Transcribe phone-taken music sheet image into MusicXML, which can be edited and converted to MIDI.项目地址: https://gitcode.com/gh_mirrors/oe/oemer

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询