前言

前一篇文章,我们简单介绍了各个可供选择的自建音乐服务。而对于自建音乐库来说,搭建服务平台是最简单的,真正麻烦的是整理这些音乐文件。

在开始之前,我们首先介绍一个概念:元数据

如果把音乐文件比作一个档案袋,文件名只是档案袋上随手写的一行字;而元数据则是装在袋子里的身份证和详细档案。无论是封面图、歌手信息、名称、歌词,都记录在这里。

一个完整的音乐元数据通常包含以下信息:

  • 核心信息:歌曲标题、艺术家(歌手)、专辑名称

  • 分级信息:发行年份、轨道编号(第几首歌)、碟号、流派

  • 视觉信息:专辑封面图

  • 高级信息:作词、作曲、歌词等等……

同时,FLAC和MP3又是用的不同的元数据储存方式:

MP3 诞生较早,它使用的是一种名为 ID3 的元数据框架

ID3v2.3 (最常见): 兼容性最强,但它是为那个“单歌手”时代设计的。它很难优雅地处理多歌手,通常只能靠斜杠 / 或分号 ; 把名字强行连成一串。

ID3v2.4 (最推荐): 这是目前的现代标准。它最大的改进是原生支持多值标签。在底层,它不再用斜杠分隔,而是用一个不可见的“空字符”(通常表现为两个反斜杠\\)将多个歌手隔开,让 Navidrome 这种现代服务能精准识别。

FLAC 的原生标准:Vorbis Comments

作为无损界的标杆,FLAC 并没有沿用 MP3 的那一套,而是采用了 Vorbis Comments 规范。

逻辑极简: 它不像 ID3 那样有复杂的二进制结构,而是简单的“键值对”(Key=Value)。

天生支持多歌手: 在 FLAC 的标准里,处理多歌手不需要任何特殊符号。文件头里可以直接写两个 ARTIST 字段:

ARTIST=镜音リン・レン

ARTIST=Junky 这种“分行陈列”的方式是最高效、最标准的,也是自建音乐库最喜欢的格式。

而诸如Jellyfin/emby/Navidrome这类音乐服务管理专辑、艺人等便是靠的元数据。这意味着我们的文件名并不直接用于分类歌曲,对于没有元数据的音频,通常会在导入资料库后尝试根据文件名刮削并自动写入元数据。如果刮削失败,这首歌就会出现在 “未知歌手” 或 “未知专辑” 下。

而众所周知,Jellyfin/emby使用的MusicBrianZTheAudioDB是国外平台,一是因为某些原因难以连接,二是如果你像我一样带着一堆国内流媒体下载下来的歌会存在过于小众没有被收录的情况。居然这些刮削平台没有,我们只能”解铃还需系铃人“,从国内的流媒体手动给这些歌刮削元数据后再导入我们的资料库中。

接下来,假设你已经有了一堆元数据残缺不全或者根本没有的音频,正好我也有一堆从酷狗收藏夹上下载下来的歌作为示范,这些歌的情况各不相同:

  • 连元数据都没有,就有个文件名

  • 专辑封面缺失

  • 没有专辑

  • 歌名不规范

  • 多歌手不规范

  • ……

接下来,我们将借助元数据编辑工具,把他们处理到最适合的状态

aquantityofmusicfromkugou.webp

准备工作

元数据编辑工具

  1. 音乐标签:用于从国内的流媒体平台下获取元数据

  2. Mp3tag:用于规范化一些元数据和文件名

  3. MuiscBee:用于对音乐按照专辑或艺人进行结构化

刮削元数据

修改设置

将这些文件拖到音乐标签软件内

点击音乐标签的工具栏上的设置图标,转到杂项1,将”艺术家连接符“修改为/ID3V2修改为V2.4

setID3settings.png

处理缺失的元数据

对于连标题都不存在的歌,按住Ctrl 多选缺少元数据的歌或使用Shift 点击头尾连续选择,选中后点击工具栏的魔棒图标,修改所有写入方式为存到标签 ,点击确定自动刮削元数据

当然你可以一次摆烂全部选中直接全覆盖了

useautomatchtags.webp

searchlosetags.webp

处理错误的标题

大多数国内的音乐平台会莫名奇妙的把歌的中翻写入标题(如:ぶれないアイで (坚定不移的eye) おじゃま虫 (麻烦鬼)),如果你不打算使用Last.fm这类对你的听歌进行记录可以不用管,但是如果你需要那就必须规范标题了,将这些莫名奇妙的中文标题删除

修正艺术家格式

有些歌曲元数据多艺术家是使用中文 分割的,这会造成在emby/jellyfin时实际变成一个人。由于我们之前已经指定了处理多艺术家的方式,选中这些歌,重新点击那个魔棒图标,只保留艺术家重新刮削或手动修改为/

changeAritst.webp

检查专辑名字与封面

自动匹配的专辑可能会莫名奇妙的匹配到错误的专辑上,或者一首歌可能存在多个专辑,这个时候可以点击工具栏上的标签图标单独对那首歌查找合适的标签:

rematchtags.webp

同时可以点击工具栏上的图片样式的图标手动匹配专辑封面,一般来说,来自iTunes的封面最高清但是也难找到,其次是网易云(新一点热门的歌会有高清封面)最后是QQ,又少图又花……

查找歌词

通常这一步在第一步处理缺失的元数据就完成了,不过你如果之后导回资料库就会知道存在但不限于以下阴间情况:

  • 歌词时间不对(找到不同版本的歌了)

  • 乱 翻 歌 词

  • 只有一半的歌词?

  • ……

如果遇到了,回到这个软件点击工具栏上的ABC字样的图标手动修正,旁边的下拉三角箭头可以选择歌词来源

modifylrcinhand.webp

导出专辑和封面

按下Ctrl+A全选点击上方菜单栏的批量 ——>提取封面 ,将专辑封面外挂,然后再次批量 ——>歌词——>另存歌词为Lrc文件,将歌词导出为LRC文件

savelrcasfile.webp

结构化文件

打开musicBee,会提示要创建一个新的库,按照提示点击创建一个新的音乐库

createnewmusicbeelibrary.webp

选择你音乐文件所在的文件夹,完成后点击添加库

setlibrarynameandscandir.webp

进入主界面后,点击左上角的MusicBee展开菜单栏,点击工具——>整理文件

structureaudiofile.webp

按照图中将命名模板修改为<专辑>\<演出者>-<标题> ,选择一个新的文件夹用来存放这些结构化后的文件,点击整理开始整理

structuresettings.webp

完成后,你的歌曲就按照专辑名/歌曲文件的方式整理好了

audiostructured.webp
audiolistsinalbum.webp

处理缺失的专辑艺术家

这一步非常重要!如果一个歌只有专辑名字没有专辑艺术家会被Jellyfin/emby拒绝认作是一个专辑

最简单的方法就是直接把艺术家(Artist)给当作专辑艺术家拷贝过来,但是,居然上一步我们完成了对歌曲的结构化处理,强烈建议在这样处理后手动将有多个艺术家的专辑命名为Various Artists 方便识别

打开Mp3tag,将歌曲拖入,按下Ctrl+A全选歌曲

点击菜单栏上的转换 ——>标签-标签

setalbunartist.webp

将字段修改为ALBUMARTIST ,格式串修改为%artist%

changealbumartist.webp

完成后,所有的艺术家(Artist)就被拷贝到专辑艺术家了。

最后的最后,将整理后的文件丢回资料库,在emby或Jellyfin进行刷新元数据操作,你就可以看到满满的专辑墙了

embymusicmainpage.webp

对Navidrome的特殊处理

及其抽象的是,navidrome不会对/ 认作两个分开的艺术家,他只认 / (注意空格),这个时候需要手动添加Custom tags:Using custom tags with Navidrome | Navidrome

解决办法就是按照官方文档在Navidrome的data文件夹下创建一个navidrome.toml 配置文件然后将自定义tags写进去

cd navidrome/data && echo 'Tags.Artist.Split = ["/", " / ", " feat. ", " feat ", " ft. ", " ft ", "; "]' >> navidrome.toml