公司动态
一摞旧乐谱变可编辑MusicXML:免费开源软件Audiveris的数字化落地记录
一摞旧乐谱变可编辑MusicXML免费开源软件Audiveris的数字化落地记录【免费下载链接】audiverisLatest generation of Audiveris OMR engine项目地址: https://gitcode.com/gh_mirrors/au/audiverisAudiveris 是一款免费开源的光学音乐识别OMR软件它的核心任务只有一个把纸质乐谱的图像转成可以编辑、可以播放、可以搜索的数字乐谱文件比如 MusicXML。事情的起因是合唱团排练室琴凳下那摞积灰三十年的旧谱子——指挥想换电子谱架可这些纸谱从来没上过网。以下是目录初次安装 → 第一次转录 → 结果修正 → 批量处理 → 疑难乐谱 → 输出格式 → 进阶玩法。排练室那摞三十年纸谱逼我去找一个会读谱的工具老团员从琴凳底下搬出来一摞谱面手抄的、复印的、还有几张泛黄到边缘发脆的。指挥说把这些都输进打谱软件我们以后排练直接看平板。 我试了两页就放弃了——对着谱面一个个敲音符一页钢琴谱要耗掉整整一个下午还容易敲错。这时我想到一个办法识别而不是输入。光学音乐识别OMR技术就是给电脑装一双读谱的眼睛让它自己把图像里的音符、休止符、调号、拍号认出来。Audiveris 正是这行的老牌开源选手它有几个让我放心用下去的理由识别真实乐谱很稳针对扫描件、老乐谱这类现实世界质量的图像做了大量优化测试样本直接取自 IMSLP 这类乐谱库。扛得住大文档数百页的乐谱集也能整体处理。跨平台Windows、Linux、macOS 全覆盖安装包里自带 Java 运行环境省去配环境的麻烦。免费且开源没有许可费代码在仓库里想研究引擎、想改功能都随你。把纸谱变数字本质上是一个图像 → 符号的翻译过程。Audiveris 把这个过程拆成了两条线一条是识别引擎自动干活一条是编辑器人工纠错。官方也坦诚地说任何 OMR 都不可能做到 100% 识别率所以引擎之外一定要配一个顺手的修正工具——这两者的配合才是 Audiveris 的核心竞争力。三种系统各有一键安装包开发者还能从源码跑起来多数人不折腾源码直接用官方发布的安装包即可。每个正式版本都会为三大系统准备安装文件且都内嵌了 Java 运行环境JRE下载后一路点下一步就行操作系统安装包格式说明Windows.msi标准安装向导装完即可启动Linux.deb或 Flatpak.deb适合 Debian/Ubuntu 系Flatpak 包可从 Flathub 安装同样自带 JREmacOS.dmg拖拽安装简单直接如果你偏好自己动手从源码构建也只需要三步git clone https://gitcode.com/gh_mirrors/au/audiveris cd audiveris ./gradlew build ./gradlew run开发版代码默认在development分支持续更新想尝鲜可以git checkout development再构建追求稳定则用master分支。装好之后先别急着找谱子仓库的data/examples/目录里已经备好了几份现成的测试乐谱正好拿来练手。第一次转录试验拿巴赫创意曲当验金石启动 Audiveris界面上方是菜单栏左侧是文件与书籍结构中央是谱面显示区。跟着下面三步走就能完成第一次完整转录打开示例File → Open选择仓库里的data/examples/BachInvention5.jpg巴赫《创意曲第5号》标准印刷谱是理想的测试对象。启动转录点击工具栏上的转录图标或通过Book → Transcribe Book菜单下图它会识别整本书的所有页面。等待结果稍候片刻中央区域就会显示识别出的音符与符号。这片刻里引擎其实已经悄悄跑完了一长串步骤。看官方文档里的引擎步骤图会更直观先是把彩色扫描图转成灰度LOAD、再做二值化处理BINARY、算出五线谱间距SCALE、找谱线和谱号GRID、HEADERS……一路推进到符干、符头、连音线、文字、节奏最后把各系统串成完整页面PAGE。一步到位当然理想但巴赫这首钢琴曲只是起点。如果第一步就把识别率期望拉满后面遇到复杂乐谱会落差很大——所以下一步是学会检查和修正。识别结果别急着信十分钟学会检查与修正Audiveris 官方手册里有个很实在的案例它转录了巴西舞曲《Chula Paroara》的谱面结果乍看很漂亮细看有三处错漏——左上角法语词 Flûte 被 OCR 认成了 Flfite默认英语词典不认法语词左下角一个降号没认出来右下角一个四分休止符和符尾重叠被漏掉。这三类错误恰好代表了 OMR 的三种典型翻车文字类换 OCR 语言能解决、符号类图形与谱线粘连导致评分低、重叠类两个元素挤在一起。而 Audiveris 的编辑器就是为处理这些问题设计的认错的符号选中后双击从右侧符号面板里替换成正确形状漏掉的符号直接拖拽从Shape面板把音符、休止符、装饰音放进谱面多余的符号先删除旧解释再定义新解释避免输出文件里出现两种矛盾信息。常用快捷键也值得先记下CtrlZ撤销、CtrlY重做、空格键试听当前选中的音符。手动校对时有几个高频坑可以提前防范常见问题检查重点小节时值报错多半是增时点丢失或误检放大图像在小节里仔细找装饰音被当普通音符真装饰音不参与节奏构建需要手动改判双声部三连音缺3拖入缺失的三连音数字即可两个对置符干被并成一个直接插入两个方向相反的复合音符记住一个原则先删旧、再定义新。这能避免同一个字形留下两套互相矛盾的解读让导出文件保持干净。从单张谱面到整本书批量转录的正确打开方式很多人以为 Audiveris 一次只能处理一张图其实它真正的优势是整本书概念。看下面这张官方概念图就明白了一个Book书包含若干Sheet谱页每个 Sheet 又对应物理Page页面页面里再划分出一个个System谱行系统。识别完成后所有内容被组织成一个Score乐谱供导出。有了这层结构数百页的乐谱集就能当成一个整体处理每页识别结果统一保存成.omr项目文件——它用 XML 记录全部 OMR 数据是 Audiveris 的原生格式相当于工程源文件。当谱子数量上来后图形界面一页页点就显得笨重了。这时可以用命令行无界面批量转录下面这条命令把当前目录所有 JPG 谱面转录并导出 MusicXML 到./outaudiveris -batch -transcribe -export -output ./out *.jpg常用参数一并列在这里方便按需组合参数作用-batch无图形界面运行-export导出 MusicXML-print导出 PDF-sheets 1 4-5只处理指定页码如第1页、第4-5页-step 步骤名只跑到指定处理步骤-force强制重新处理跳过已有结果-save批处理时每成功一步就保存.omr-swap处理完一页就写回磁盘省内存几十张谱子一条命令跑完收工回家——这才是批量该有的样子。扫描件倾斜、发暗、手写潦草时这些参数能救回来批量处理时最容易踩的坑是源图质量。我踩过的教训是先用手机拍的谱面识别率惨不忍睹重新用扫描仪 300–600 DPI 扫一遍立刻正常。扫描分辨率、打光均匀度这些前端功夫直接决定识别上限。不过图已经那样了也没关系Audiveris 在Tools → Options即参数设置界面里给了一批可调的旋钮针对几种常见坏图可以这样对症下药页面倾斜先把图在图像软件里校正角度再喂给 Audiveris谱线检测不依赖绝对水平但过度倾斜会让谱线识别失效。对比度不足、过暗检查二值化相关设置必要时换用自适应阈值让局部亮度自适应而非全局一刀切。扫描噪点多适度过滤噪点但别把细小的装饰音、附点也一并滤掉。手写谱手写谱对阈值最敏感建议手动校准谱线位置并分区域逐步识别别指望一次全对。命令行里也能直接改参数配合-force重跑audiveris -batch -transcribe -force -constant 完整参数名值 input.png另外别忘了文字识别依赖 Tesseract OCR 语言包默认只带英文app/tessdata/eng.traineddata。乐谱里出现法语、德语、意大利语术语时在Tools → Languages里补上对应语言能显著减少歌词和表情记号这类文字错误。导出成什么格式取决于下一步要做什么识别完成、校对完毕最后一步是导出。Audiveris 内置的导出器面向MusicXML 4.0这是当前乐谱交换的事实标准MuseScore、Finale、Sibelius 全都认它。官方快速上手里给的例子很直观把导出的chula.mxl直接拖进 MuseScore谱面完整显示点播放就能听——Audiveris 自己不内置播放器但这一步交给外部软件几乎零成本。三种常见输出按需选择输出格式适合场景MusicXML.mxl进打谱软件编辑、排版、播放或转成 MIDIOMR 项目.omr保留完整识别数据随时回炉再校PDF.pdf命令行-print直接出谱面文档建议工作流是识别后先存一份.omr确认无误再导出.mxl。这样哪怕以后想换参数重跑或发现某页要改都能随时回到工程文件不用重新识别整本书。识别率还想再往上走调参、训练与二次开发如果内置参数仍满足不了你Audiveris 还有三招进阶手段按难度递增深度调参Tools → Constants里暴露了上百个引擎常量命令行对应-constant keyvalue官方在docs/_pages/guides/advanced/constants.md有解释。想调哪个先看说明别盲目动。训练字形分类器引擎对符头用模板匹配、对其他定尺寸符号用神经网络。识别不理想时可以用-sample从你的书里采集样本、-annotate生成带标注的数据集再按docs/_pages/guides/advanced/training.md的流程训练出更适合你谱面风格的分类器。插件与源码app/config-examples/plugins.xml展示了插件系统的配置方式想深入引擎核心代码在app/src/main/java/org/audiveris/omr/下图像处理、网格、节奏、文本各模块划分得很清楚跟着project-structure.md能快速定位。走到这一步你基本就从用软件的人变成了改进软件的人——这也是开源项目最有意思的地方。从第一页谱子开始回头看我处理那摞老谱子的过程装好软件 → 拿巴赫创意曲试跑 → 学会查错修正 → 用命令行批量跑完几十页 → 导出 MusicXML 交给指挥。整个流程里真正需要动脑的其实只有校对那一步其余全是点几下、等一会儿的事。如果你想亲身体验一次现在就可以这样做到项目发布页下载对应系统的安装包装好后打开data/examples/BachInvention5.jpg点击转录看看引擎在几十秒内认出了多少音符对照本文的修正技巧把结果里的错漏改一遍导出.mxl拖进 MuseScore 试听然后回来把经验分享给身边同样被纸谱困扰的人。那个琴凳下的三十年旧谱堆最后变成了平板里随时可查、可编辑、可播放的曲库。你的那摞谱子也可以从这一页开始。【免费下载链接】audiverisLatest generation of Audiveris OMR engine项目地址: https://gitcode.com/gh_mirrors/au/audiveris创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考