如何使用Audiveris将乐谱转换为代码和XML
如果你曾经尝试过扫描旧乐谱,然后在合成器上播放或用MuseScore等乐谱编辑器打开,你可能知道这个过程有多痛苦。标准的OCR(如Tesseract)在这种情况下无能为力:文字字符依附于五线谱的五条线,而音符时值、和弦、休止符和力度记号则构成了一个二维图结构。
这正是OMR(光学音乐识别)大显身手的地方。这个领域的项目并不多,成熟的开源系统屈指可数。Audiveris或许是最知名的开源音乐识别引擎,多年来一直在积极开发中。
音乐识别的主要挑战
Audiveris的开发者在文档中坦诚承认:通过纯算法手段实现100%的音乐识别准确率几乎是不可能的。来自IMSLP等档案的真实扫描件通常存在纸张折痕、倾斜、墨水褪色以及19世纪出版商使用的非标准字体等问题。如果在行首的调号中引入一个错误,整个后续解码就会变成一片混乱。
因此,Audiveris的设计理念建立在两个紧密关联的组件之上:
- 计算引擎(OMR Engine)
- 内置图形编辑器(OMR Editor)
首先由引擎进行识别,然后由人工介入修正。在程序界面中,你可以校正倾斜、修正识别出的符号,或即时调整算法参数,而无需重新处理整个文档。
识别引擎的工作原理
Audiveris的架构可以描述为混合式的。创建者没有盲目地完全依赖经典计算机分析或完全依赖深度学习。对于每种类型的音乐符号元素,他们都选择了各自适用的方法:
- 五线谱线和网格使用专门的直线检测算法识别。
- 音符符干(连接八分音符和十六分音符的横线)通过数学图像形态学识别。
- 文本元素(如标题、速度标记和歌词)被传递给外部OCR引擎。
- 符头通过模板匹配识别。
- 所有其他固定大小的符号由神经网络处理。
结果以内部XML格式保存(扩展名为.omr),或导出为标准MusicXML 4.0。这种格式几乎被所有现代乐谱软件所支持:Finale、Sibelius、Dorico和MuseScore。
警惕域名陷阱
仓库README中的一个有趣细节:作者特别警告用户提防一个假冒网站audiveris.com。
真正的项目托管在GitHub及其关联的GitHub Pages站点上。一个使用.com域名的网站模仿了官方资源,但会将用户重定向到提供加密货币和博彩的第三方服务。如果你想下载现成的安装包,请务必小心。
如何构建和运行项目
代码使用Java编写,使用Gradle构建。你需要JDK 17或更高版本以及Git才能操作它。
该项目使用经典的分支策略:
master分支仅包含稳定版本。- 所有 active 开发都在
development分支上进行。
克隆仓库并从开发分支构建项目:
git clone https://github.com/Audiveris/audiveris.git
cd audiveris
git checkout development
./gradlew build
构建完成后,你可以直接通过Gradle运行应用程序:
./gradlew run
如果你不打算修改代码本身,只是想转换乐谱,开发者为Windows(.msi)、Linux(.deb和Flathub上的Flatpak)以及macOS(.dmg)提供了现成的安装包。它们已经包含了所需的Java运行时环境,因此你无需手动配置环境。
这对开发者意味着什么
Audiveris不仅对音乐家有趣。如果你正在开发媒体内容、数字档案或教育程序相关的服务,这个项目提供了几个很好的机会:
- 使用Java API。你可以将Audiveris作为库集成到你的项目中,在服务器上自动化处理乐谱PDF。
- 访问原始文档结构。
.omr格式包含识别元素的详细几何信息,便于分析或训练你自己的模型。
这里的学习曲线相当平缓,AGPLv3许可的代码提供了一个构建复杂混合图像处理系统的好范例。
总结
如果你面临数字化乐谱档案或在你的应用中嵌入乐谱识别的任务,就无需再考虑那些售价数百美元的专业工具了。Audiveris展示了一种务实的OMR方法:将自动算法与便捷的手动修正相结合,能够带来出色的实际效果。
相关项目