

学简谱、教唱歌、带合唱排练时,经常会遇到一个很现实的问题:谱子上只有 1 2 3 4 5 6 7,初学者要一边看数字、一边反应唱名,很容易卡顿。
所以我做了一个桌面小工具:导入一张简谱图片,软件自动识别里面的数字音符,并在音符上方或下方标注对应唱名:
1 -> do
2 -> re
3 -> mi
4 -> fa
5 -> sol
6 -> la
7 -> si
标注完成后,可以直接导出一张与原图同尺寸的新图片,用于打印、分享、课堂教学或排练。
演示视频:
简谱本身很轻便,但对初学者来说,数字和唱名之间还需要一次转换。比如看到 5 6 5 3 2 1,熟练的人会自然唱出 sol la sol mi re do,但刚开始学习的人往往会停下来想。
给简谱加唱名有几个直接好处:
这个工具不是替代视唱练耳,而是把“认音符”的机械步骤先帮你减轻一点,让注意力更多放在旋律、节奏和表达上。
目前工具已经支持这些常用流程:
jpg/jpeg/png/gif/bmp/tiff/webp 等常见图片格式。1-7。do re mi fa sol la si,也可以改成音名、中文或自定义文本。1-7。Ctrl+Z 撤销,也有工具栏撤销按钮。
在这里插入图片描述
这个工具的目标很明确:普通电脑也能跑,最好不依赖云端服务,最终能打包成一个单文件可执行程序。
因此整体方案采用:
TkinterPillowRapidOCR + ONNX RuntimeOpenCV 与模板匹配思路PyInstaller 单文件 exe应用主界面由几个区域组成:
内部数据大致可以理解为三层:
ImageDoc
- 图片路径
- 原始图片对象
- 当前标注列表
- 是否缺失
NoteLabel
- 数字音符
- 音符坐标
- OCR 置信度
- 是否隐藏
ImageSettings
- 唱名映射
- 上方/下方
- 距离
- 字体、字号、粗细
- 颜色、透明度
- 阈值
- 是否去高低音点
- 手动模式当前数字
这样做的好处是:每张图片都有自己的状态。打开多张歌谱时,第一张图调成红色大字,第二张图调成蓝色小字,互不影响。
简谱识别看起来像“识别数字”,但实际比普通 OCR 麻烦一些。
因为歌谱里会有:
555、067所以识别流程分为几步:
原始图片
-> 可选:去掉高音点/低音点
-> RapidOCR 本地识别数字文本
-> 对连续数字拆分成单个音符候选
-> OpenCV/Pillow 候选检测补漏
-> 根据谱面行位置过滤
-> 去重合并
-> 根据阈值显示有效标注
优先使用 RapidOCR,是因为它对真实扫描图中的数字串识别更稳,尤其是连续数字。OpenCV 和 Pillow 主要用于补充一些 OCR 漏掉的小数字候选。
简谱里常见的高音、低音标记是在数字上方或下方加点。对人来说这很自然,但对 OCR 来说,这些点可能会干扰数字轮廓。
比如带点的 1,可能被识别成别的符号;带点的 5,也可能降低识别置信度。
所以工具在识别前提供了“去掉高低音点”的预处理。它只作用于识别过程,不会修改原图,也不会影响最终导出的歌谱画面。
简单说就是:
给 OCR 看一张更干净的图
给用户导出时仍使用原始歌谱
这在扫描版、拍照版歌谱上会比较有用。
OCR 会给每个识别结果一个置信度。阈值低,识别结果更多,但误识别也会变多;阈值高,结果更干净,但可能漏掉一些音符。
所以工具没有把阈值写死,而是做成可调参数,并且调整后实时影响预览。
这相当于给用户一个“筛选旋钮”:
自动识别不可能 100% 完美,尤其是老歌谱、扫描模糊、背景复杂的图片。
所以这个工具没有只做“自动识别”,而是把手动编辑也做成核心功能:
1-7 之间切换。这个交互的重点是“直观”。用户不用猜点击后会发生什么,鼠标移动时已经能看到最终标注大概是什么样。
这类工具很容易出现一个问题:预览看着没问题,导出后位置、颜色或透明度却不一样。
为了解决这个问题,预览和导出都基于同一套标注参数:
导出时使用原图尺寸重新绘制标注,所以最终图片不会因为预览缩放而损失清晰度。
很多时候,用户不是只处理一张图,而是处理一组歌谱。中途关闭软件后,下次还要继续调整。
所以工具支持保存工程。工程文件记录:
如果下次打开工程时图片文件移动了,软件不会直接崩溃,而是在列表中灰色显示,并允许用户右键“浏览图片”找回。
为了避免误匹配,找回图片时要求尺寸一致。这样可以保证原来的标注坐标仍然能准确落在对应音符上。
为了让普通用户不用安装 Python,最终使用 PyInstaller 打包成单文件 exe。
打包后会把这些内容一起带进去:
用户拿到 唱谱标注工具.exe 后,直接双击运行即可。
这个工具比较适合:
它不是一个复杂的专业制谱软件,而是一个偏实用的小工具:把已有图片快速加工成更适合“唱”的版本。
假设我们导入一张《海阔天空》的简谱图片:
最后得到的就是一张带唱名的新歌谱图片,尺寸和原图一致,可以直接打印或分享。
一张做好的带唱名的简谱如下:
