OpenScore Lieder
更新于 2026-10-28 15:58:59
一句话定位
OpenScore Lieder 是 19 世纪艺术歌曲(Lieder)的开源乐谱语料库:143 位作曲家、316 套曲(cycle / collection)、1,454 首作品,全部以 MuseScore 工程文件(.mscx)形式提供,另附歌词文本与自动和声分析,CC0 授权,仓库约 309MB。
它不是软件,是数据。MuseScore.com 上的 OpenScore Lieder 项目是它的对外展示页,这个仓库是镜像 + 结构化数据层,v3.0.0(2025-05-17)在 Zenodo 上有 DOI。
先看数字
data/corpus.yaml 里的官方统计:
| 作曲家 | 套曲 | 作品 | |
|---|---|---|---|
| 男性作曲家 | 82 | 185 | 796 |
| 女性作曲家 | 61 | 131 | 658 |
| 合计 | 143 | 316 | 1,454 |
注意第二行:61 位女性作曲家、658 首作品,接近一半。十九世纪音乐语料里这个比例相当罕见,是有意补齐的结果(Amy Beach、Clara Schumann、Ethel Barns 一类都在里面)。
仓库里到底有什么
scores/<composer>/<set>/<song>/
├── lc<id>.mscx # MuseScore 未压缩工程文件(核心资产)
├── lc<id>.txt # 从谱面自动抽取的歌词(诗)
└── analysis_automatic.rntxt # 罗马数字自动和声分析
<composer>用Last,_First_Second形式,例如Beach,_Amy、Berg,_Alban;<set>是套曲名,单曲放在名为_(一个下划线)的目录里;<song>带零填充序号前缀(01、02…3a、3b),保证排序正确;- 文件名里的
<id>就是 MuseScore 的 score id,可以拼回https://musescore.com/score/<id>查原页。
data/ 目录是元数据层:composers.tsv/yaml、sets.tsv/yaml、scores.tsv/yaml、corpus.tsv/yaml(汇总数字)、corpus_conversion.json(批处理清单)、corpus_conversion.py(重新生成清单)、plot.py + plots/(三张统计图:作曲家活跃年代、前 15 位作曲家的作品数、每套曲的作品数)。
为什么值得用
- 人工编码 + 专业校对:志愿者按 Leigh VanHandel 等人的声乐模板录入,再由职业校对团队过一遍。不是 OCR 扫出来的脏数据。
- 三层结构化元数据:composer → set → song,
scores.tsv直接pandas.read_csv就能开工。 - CC0,只有软性要求(署名 + 引用),商用没有法律障碍。
- 格式开放:
.mscx可以转 MusicXML / MIDI / PDF / MP3,不会锁在某个商业软件里。 - 学术背书:MEC 2021 论文拿过 Best Poster Award,Zenodo 有带 DOI 的正式版本。
三种典型用法
一、只想看谱 / 听音频
别 clone 仓库。直接去 musescore.com/openscore-lieder-corpus,每首都能在线播、下 PDF / MIDI / MusicXML / MP3。
二、批量转格式(最常用)
仓库随附了 data/corpus_conversion.json——一个「输入路径 → 输出路径」的作业清单,共 1,454 条,默认把 .mscx 转成 .mxl(压缩 MusicXML):
git clone --depth 1 https://github.com/OpenScore/Lieder.git
cd Lieder/data
mscore -j corpus_conversion.json # MuseScore 4 的批处理模式
想换输出格式,两条路:
- 直接改
corpus_conversion.json里的 1454 个.mxl→ 换成.pdf或.mid(sed -i 's/\.mxl/\.pdf/g'一把梭); - 或改
corpus_conversion.py里prep_conversion_doc函数的out_format,重新生成清单:python3 corpus_conversion.py。
三、做研究 / 喂模型
- 乐谱结构:转 MusicXML 后用
music21或partitura解析; - 和声:
analysis_automatic.rntxt是罗马数字文本格式,和 When in Rome 元语料库同一套规范,工具链能直接复用; - 歌词 / 文本:
lc<id>.txt是逐首抽好的歌词,做韵律、音节-音符对齐、语言分布统计都省事; - OMR 校验:拿它当「人工编码金标准」,去对比 Audiveris 这类图像识别结果,是很现成的评测集。
坑与注意
- 仓库 309MB / 1,454 首:一定用
git clone --depth 1,别在网页上一个个点。 .mscx是未压缩 XML,单文件比.mxl大好几倍。要批量分析就先转.mxl,能省很多 IO。- Unicode 路径容易被 git 转义:作曲家名保留原文(含变音符号),
git status里会显示成"Beethoven,_Ludwig_van"这种带引号的形式。解法:git config core.quotePath false # macOS 另外需要 git config core.precomposeunicode true - MuseScore CLI 版本要对得上:
-j job.json是 MuseScore 4 的批处理方式;MuseScore 3 只有逐个-o转换,没有-j。用旧版跑官方清单会直接报参数错误。 - GitHub 语言统计显示 "HTML" —— 因为
.mscx是 XML,linguist 把它判成 HTML 了。别被这个标签骗,它不是网页项目。 - CC0 不等于没有义务:作者明确请求公开使用时代 OpenScore Lieder 署名并给链接;学术发表要引 Zenodo 版本(如
10.5281/zenodo.15450143)或 MEC 2021 论文(10.17613/1my2-dm23)。 - 范围有限:只覆盖十九世纪 Lieder,语言以德语、英语为主。想做通用古典乐谱库,它不够;想专攻艺术歌曲,它非常够。
二开 / 拿它做点别的
- 写自己的批处理:
corpus_conversion.json就是个{in, out}数组,自己起多进程并行调mscore,比单进程跑 1454 首快得多(MuseScore CLI 是单线程的)。 - 建索引:用
scores.tsv当主表,composer_id/set_id关联另外两张表,几行代码就能出一张可查询的 SQLite / DuckDB。 - 做对齐数据集:谱面 + 歌词 txt 天然配对,配上公开录音就能做「歌词-音符-音频」三重对齐,这是歌声合成(DiffSinger 那类)最缺的训练数据形态。
- 想贡献乐谱:流程和资助信息在 fourscoreandmore.org/scores-of-scores。
和站内其它音乐工具的关系
- 拿 MuseScore Studio(id=308)的
-j批处理模式转格式,是这批数据最顺的打开方式; - 拿 Audiveris(id=306)跑图像 OMR,再用这份语料当人工校对基准,正好是「算法 vs 人工」的对照组;
- 想拿旋律做人声实验,OpenUtau(id=311)+ 一个 DiffSinger 音源就能把谱面唱出来。
一句话总结
OpenScore Lieder 是「可以直接下锅的十九世纪艺术歌曲数据集」:1,454 首人工编码、校对过的 MuseScore 谱面,配歌词与和声分析,CC0 可商用,309MB 一把 clone 完事。它不炫技,但把 MIR 研究里最脏最累的「高质量标注乐谱」这一步替你做完了——顺手还补上了女性作曲家那半边长期被忽略的曲目。