- 桌面应用
- 计算机视觉
- 图像处理
- OCR
【免费下载链接】audiveris
Latest generation of Audiveris OMR engine
Audiveris 是新一代开源 OMR(光学音乐识别)引擎,其主界面Tools(工具)菜单集中了与识别质量直接相关的运维与调优入口:OCR 语言安装、全局/本地样本仓库浏览与保存、字形分类器训练,以及内存监视、常量管理和用户偏好设置。阅读本文后,你将掌握 Tools 菜单每一项功能的用途、操作流程与适用前提,并能结合源码理解其底层实现,从而更高效地维护训练数据、微调识别参数并监控引擎运行状态。
Tools 菜单总览
Tools 菜单位于 Audiveris 主界面菜单栏中(与 File、Book、Sheet、Step、View 等菜单并列),共包含八个功能项,按用途可划分为三类:
| 菜单项 | 功能类别 | 主要用途 |
|---|---|---|
| Install languages… | OCR 语言管理 | 下载并安装额外的 OCR 语言数据 |
| Browse global repository… | 样本仓库管理 | 查看并编辑全局样本仓库 |
| Save global repository | 样本仓库管理 | 将全局样本仓库持久化到磁盘 |
| Browse a local repository… | 样本仓库管理 | 查看并编辑本地(书籍级)样本仓库 |
| Train classifier… | 分类器训练 | 启动、监控并评估字形分类器训练 |
| Memory | 运行监控 | 在输出窗口显示当前占用内存 |
| Constants… | 系统调优 | 打开常量管理窗口 |
| Preferences… | 用户偏好 | 配置输入处理、插件、输出策略等默认行为 |
从菜单的源码定义 GuiActions.properties(第 28~73 行)可以看出,每个菜单项都对应GuiActions类中的一个动作方法(如installLanguages、browseGlobalSamples、launchTrainer、showMemory、defineConstants、definePreferences),动作的具体实现集中在 GuiActions.java 中。下文逐项展开。
Install languages:安装额外的 OCR 语言
用途:打开一个对话框,用于选择并下载额外的 OCR 语言数据。Audiveris 的文本识别依赖 Tesseract OCR 引擎,只有安装了对应语言的训练数据,引擎才能正确识别该语言的歌词、标题等文字内容。
操作流程:点击Install languages…后,引擎会从远端获取可用的语言列表并弹出选择对话框;勾选需要的语言并确认后即可下载安装。已安装的语言集会持久化保存,后续识别任务会自动使用。
源码视角:该动作由 GuiActions.java 中的installLanguages方法触发,实际逻辑位于InstallLanguagesTask.doInBackground()(同文件第 462~477 行):它调用Languages.getInstance().getSelector()获取语言选择器,再将选择器组件显示在应用中。语言管理的核心类为org.audiveris.omr.text.tesseract.Languages。
延伸阅读:更完整的语言管理说明(包括如何手动放置语言数据、各语言代码的约定)见 OCR 语言指南。
Browse / Save global repository:全局样本仓库的查看与保存
用途:Browse global repository…打开一个对话框,用于查看并编辑全局样本仓库(Global sample repository)的内容。需要特别强调的是,全局样本仓库是分类器训练所使用的唯一仓库,其中存放着标注好字形(glyph)与符号类别(shape)的样本,是训练字形分类器的数据基石。Save global repository则将当前内存中的全局样本仓库写入磁盘,确保对样本的增删改不会因程序退出而丢失。
适用前提:这两项功能需要启用SAMPLES主题(topic)后才可用。在 Audiveris 中,高级主题通过命令行参数开启,SAMPLES主题即出现在 CLI.java 的选项定义中。
源码视角:
browseGlobalSamples(GuiActions.java)以后台任务方式调用SampleBrowser.getInstance(),在等待期间向输出窗口打印Launching global sample browser...提示(对应属性文件中的launchingGlobalSampleBrowser)。saveGlobalSamples(同文件第 306~310 行)直接调用SampleRepository.getGlobalInstance().checkForSave()。- 在 SampleRepository.java 中可以看到仓库的文件约定:
SAMPLES_FILE_NAME = "samples.zip"(第 120 行),全局仓库存放于WellKnowns.TRAIN_FOLDER目录下(第 1880 行,即TRAIN_FOLDER/samples.zip);getGlobalInstance()(第 1856~1880 行)负责按需创建或加载全局实例;checkForSave()(第 630 行起)在确认有改动后执行持久化,并通过isGlobal()(第 1182 行)区分全局仓库与书籍级仓库。
Browse a local repository:本地(书籍级)样本仓库
用途:打开对话框,查看并编辑某个本地样本仓库——即与具体书籍(Book)关联的样本集合。这类仓库通常用于在合并进全局仓库之前,先对某本书的识别结果进行局部验证与修正,例如修正某张乐谱上被误判的字形类别。完成后可将这些修正后的样本合并进全局仓库,用于后续的分类器训练。
适用前提:同样需要启用SAMPLES主题。
源码视角:browseLocalSamples(GuiActions.java)的实现展示了本地仓库的选取流程:
- 以
SampleRepository.SAMPLES_FILE_NAME(即samples.zip)作为文件过滤器,弹出文件选择对话框,起始目录为BookManager.getBaseFolder()(书籍基目录); - 用户选定仓库文件后,后台任务通过
new SampleBrowser(SampleRepository.getInstance(repoPath, true))加载该仓库并启动浏览窗口。
从 SampleRepository.java 可以进一步看到书籍级仓库的命名规则:bookFolder.resolve(book.getRadix() + "-" + SAMPLES_FILE_NAME)(第 1949 行),即形如<书册名>-samples.zip,与全局仓库的samples.zip相区分。
Train classifier:字形分类器训练
用途:Train classifier…打开一个专用窗口,用于启动、监控并评估字形分类器(glyph classifier)的训练过程。分类器是 Audiveris 识别管线的核心组件之一:它根据提取出的字形图像判断其属于哪个符号类别(如音符头、符尾、连音线等)。训练通常基于全局样本仓库中的标注样本进行,训练完成后引擎使用新模型进行识别。
适用前提:需要启用SAMPLES主题。
源码视角:launchTrainer(GuiActions.java)调用Trainer.launch(),并通过CursorController.launchWithDelayedMessage("Launching trainer...", ...)在训练器窗口加载期间显示等待光标与提示消息。Trainer类位于org.audiveris.omr.classifier.ui包中(同文件第 27 行的 import 可证),与SampleBrowser同属分类器 UI 层。
延伸阅读:完整的训练流程、参数与评估方法见 训练指南。样本的收集、标注与仓库组织可参考 SampleRepository.java 中关于样本文件加载(第 1912 行附近)与书籍仓库合并(第 1133 行附近)的实现。
Memory:内存占用监视
用途:Memory在输出窗口(Output window / log 面板)中显示当前 JVM 已占用的内存字节数,方便在长任务(如大批量识别、分类器训练)期间快速确认是否存在内存压力。
源码视角:showMemory(GuiActions.java)的实现非常直接——调用Memory.getValue()并通过 logger 以\n----- Occupied memory is {} bytes -----\n的格式输出到日志(即输出窗口)。Memory工具类位于org.audiveris.omr.util包。值得一提的是,Audiveris 主界面还提供了常驻的 MemoryMeter 内存条组件,与本菜单项互为补充:一个是持续可视化,一个是按需输出精确数值。
Constants:常量管理与实时调优
用途:Constants…打开常量管理窗口,集中查看和修改引擎的全部应用常量。Audiveris 的设计原则是"代码中不应存在硬编码常量",算法参数一律以"应用常量"的形式暴露给用户,总数超过 800 个,涵盖线条检测、符号关联、文本识别等各个处理环节的阈值与开关。
窗口组成(参见 常量指南):
- 左侧为类树:按
org.audiveris.omr包结构组织,可逐级下钻到具体类; - 右侧为常量表:列出当前类包含的常量,包括名称、描述、当前值、单位(如 interline 分数)等;
- 顶部提供搜索框:可按常量名或描述中的任意字符串片段进行不区分大小写的检索,便于在海量常量中快速定位;
- 每个常量带
Modif(已修改)标记列,双击值字段可直接输入新值,修改立即生效; - 顶部提供
Reset按钮,可将全部常量恢复为出厂默认值(操作前会有确认提示)。
示例:以"放宽变音记号(如升号)与右侧音符头之间水平距离的约束"为例——在搜索框输入accid,定位到org.audiveris.omr.sig.relation包中的AlterHeadRelation类,其常量xOutGapMax(OMR 引擎自动识别用)与xOutGapMaxManual(用户手动指派用)即控制这一距离阈值;手动指派阈值通常更宽松,因为用户手动操作时允许更低的严格度。这些值以 interline 分数编码(如 2.0、3.0)以保证与图像分辨率无关,若当前有选中乐谱,Pixels列还会按该谱的 interline 比例换算成像素值(如 42、63)。
常量生效优先级(从低到高,见 常量指南):
- FACTORY:源码中定义的默认值;
- USER:用户在 config 文件夹下的
run.properties中持久化的修改值; - CLI:命令行
-constant key=value指定的值——交互模式下会持久化到 USER 文件,批处理模式下不持久化; - UI:通过本窗口修改的值,同样持久化到 USER 文件。
源码视角:defineConstants(GuiActions.java)以后台任务ConstantsUITask创建并展示 ConstantsUI.java(org.audiveris.omr.ui包)。常量机制的核心是org.audiveris.omr.constant.ConstantSet——GuiActions自身的Constants内部类(第 443~457 行)就继承自ConstantSet,其中定义了webSiteUrl、wikiUrl、manualUrl等字符串常量,可见该机制在项目内普遍使用。CLI 侧对-constant参数的支持定义于 CLI.java。
Preferences:用户偏好设置
用途:Preferences…打开偏好设置对话框,让用户按个人习惯配置引擎的默认行为,主要包括:
- 输入图像的默认处理方式(如二值化等预处理选项的默认值);
- 默认插件(plugin)选择;
- 输出位置策略(policy for outputs location);
- 界面元素的字体大小;
- 界面语言(locale)选择;
- 下拉菜单中的附加项(additional items in pull-down menus)。
这些偏好属于用户级配置,设置后会持久化保存,并在后续会话中作为默认值生效。
源码视角:definePreferences(GuiActions.java)直接调用Preferences.show()打开对话框;Preferences类位于org.audiveris.omr.ui.action包(第 35 行 import 可证),其类路径为 Preferences.java。属性文件中该动作的短描述为 "General user preferences",对应的界面本地化资源(含法语版)可在 Preferences_fr.properties 中查看。
延伸阅读:各偏好项的完整含义与推荐配置见 偏好设置指南。
附:菜单项与底层实现映射
下表汇总了 Tools 菜单各项对应的源码动作、核心实现类与图标资源(图标取自 crystal 图标集,菜单属性定义于 GuiActions.properties):
| 菜单项(属性键) | GuiActions 方法 | 核心实现 | 图标 |
|---|---|---|---|
| installLanguages | installLanguages | Languages.Selector | 无 |
| browseGlobalSamples | browseGlobalSamples | SampleBrowser.getInstance() | agt_forum |
| saveGlobalSamples | saveGlobalSamples | SampleRepository.getGlobalInstance().checkForSave() | filesave |
| browseLocalSamples | browseLocalSamples | SampleRepository.getInstance(repoPath, true)+SampleBrowser | agt_forum |
| launchTrainer | launchTrainer | Trainer.launch() | agt_runit |
| showMemory | showMemory | Memory.getValue()写入日志 | calc |
| defineConstants | defineConstants | ConstantsUI(后台任务创建) | lin_agt_wrench |
| definePreferences | definePreferences | Preferences.show() | software-development |
全部动作的入口统一集中在 GuiActions.java,该文件使用 Swing Application Framework(org.jdesktop.application)的@Action注解将方法绑定为 GUI 动作,是理解整个菜单体系的最佳入手点。
小结
Tools 菜单是 Audiveris 从"能识别"走向"识别得准、可调优、可再训练"的关键入口:样本仓库相关三项(浏览全局、保存全局、浏览本地)支撑了训练数据的积累与维护,Train classifier负责模型迭代,Constants与Preferences分别提供运行时级与用户级的两层配置能力,Memory则为长时间任务提供快速健康检查。结合本文给出的源码路径(GuiActions.java、SampleRepository.java、SampleBrowser 所在包、ConstantsUI.java),读者可以进一步深入理解各项功能背后的数据流与调用链。
- 桌面应用
- 计算机视觉
- 图像处理
- OCR
【免费下载链接】audiveris
Latest generation of Audiveris OMR engine
相关推荐
Audiveris OMR 引擎 Board(实体面板)体系完全指南
Audiveris OMR 引擎 Board(实体面板)体系完全指南 Audiveris 是新一代开源 OMR(光学乐谱识别)引擎,其桌面主窗口右侧的 Boar
桌面应用计算机视觉图像处理OCRAudiveris 字形分类器训练指南:Trainer 对话框、超参数调优与样本验证实战
Audiveris 字形分类器训练指南:Trainer 对话框、超参数调优与样本验证实战 Audiveris 是开源的乐谱 OCR(OMR)引擎,其核心的 Gl
桌面应用计算机视觉图像处理OCRTimescaleDB Multi-node 弃用详解:从分布式架构到单节点聚焦的演进
TimescaleDB Multi node 弃用详解:从分布式架构到单节点聚焦的演进 TimescaleDB 自 2.13 起正式弃用 multi node(
桌面应用计算机视觉图像处理OCR
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考