1866 字
9 分钟

如何写出优雅完整的音频元数据

Roon确实是本地音频播放器的佼佼者。虽然说有很多Hifi相关的功能,还有Roon Ready这种认证,但是就把它当作一个数据库管理软件来看,也是没有任何竞争对手的。可以说,如果你符合Roon用户的经典画像,你甚至不用处理元数据问题,Valance能够解决基本上全部的古典问题。对于我这种的日音弱智用户来说就差点了,Roon的数据库中角色名字都是按照罗马音显示,尽管能够用片假名/平假名搜到,但是还是看着很难受。更何况有些同人音乐根本不在数据库中,只有最新最热最火最潮的二次元才会被识别到。如果你用的Roon版本不能连接到Valance数据库,那更是只能根据文件元数据来组织。

音频元数据完全是一团糟,有ID3的各种版本,Vorbis Comment,APE Tag,甚至还有MP4。不过Roon只支持alac(m4a)、flac(vorbis comment)、mp3(ID3),dsf(ID3)。所以主要使用的也就这些。本人主要使用flac,所以主要根据flac来举例和实现。

基本信息#

TITLEALBUMARTISTALBUM ARTISTCOMPOSER这些信息都非常基础,不必多说。不过有一点需要注意:Roon在识别到同一专辑有多个ARTIST的时候,会根据艺术家数量判断是否为Various Artists专辑,如果是就会把ARTIST显示为Various Artists,而不是专辑中ARTIST字段的内容。有些时候为了让Roon识别成“合辑”(即Various Artists专辑),需要手动调整ALBUM ARTIST字段为Various Artists。

日期#

第一个大坑就是日期了。如果你用的是Mp3tag,这个软件会把Vorbis Comment中的DATE字段映射到实际上的YEAR上,而ID3的YEAR是只能写年份的,所以尽管这个地方在flac中能够写完整日期,但是还是不建议在这里写完整日期。

从而,我们需要建立几个映射:

标签原始信息目标信息
VorbisCommentDATEYEAR
VorbisCommentORGANIZATIONPUBLISHER
VorbisCommentTRACKNUMBERTRACK
ID3v2ORIGINALRELEASEDATERELEASETIME
APEv2Album ArtistALBUMARTIST
VorbisCommentTDRLRELEASETIME
MP4TDRLRELEASETIME

所有的详细日期都写在TDRL字段中,YEAR/DATE只写年份,这样就能兼容所有的播放器了。

关于详细日期,Roon还有一个坑点,它的识别支持YYYYYYYY-MM-DD,但是不支持YYYY-MMYYYY-MM会被强制加一个1号,比如1991-03会变成1991-03-01。但是有些专辑确实不知道什么时候发布的,就要写文字月份了。文字月份的意思是类似于jan 1991的写法,前面的月份可以是全名或者是三字母缩写,这些日期能够被正确的识别成1991-01

多艺术家、多编曲等等#

Roon默认使用的艺术家分割符是;,没有。所以多个艺术家默认需要使用;分割,当然可以把、也加入分隔符,但是相信我你会被日本人莫名其妙的艺名恶心的。

还有一种是多字段。这种在flac中比较常见,就是有多个ARTIST字段,或者多个COMPOSER字段。在Mp3tag中显示为名字1\\名字2,这种同样不会导致识别错误。

厂牌和碟号#

厂牌可以写在LABELPUBLISHER中,Roon都会识别。碟号可以写在CATALOGNUMBERCATALOG NUMBER(谁有病加空格)中,Roon也会识别。

基本上,大部分人都到此为止了。那么如何做到以下效果呢?

丰富的元数据示例

其他元数据需要依赖接下来的字段:INVOLOVEDPEOPLE(Vorbis Comment)、TIPL(ID3)、PERSONNEL(两者都能用)。

更多角色#

在Mp3tag中,INVOLOVEDPEOPLE字段会被正确的映射到ID3 TIPL中,所以你可以直接写INVOLOVEDPEOPLE字段。但是这两个字段有不同的格式!是一个坑点。

Roon支持的角色列表在这里。Roon只会识别已知的角色列表。

最正统的Vorbis Comment写法#

name (role)
name (role[additional info])
实际上多个是name (role)\\name (role)\\name (role)\\name (role)

举个例子:

堀江晶太 (arranger)\\堀江晶太 (instrument)\\野沢香苗 (erhu)\\野々村昌樹 (erhu)\\村上宣之 (mix)\\村上宣之 (recording)\\LiSA (lead vocals)\\LiSA (lyricist)

但是但是!这个格式有问题,因为他用的正则匹配方式非常愚蠢,所以aaa(cv.xxx) (arranger)这种格式会识别失败,令人忍俊不禁。这种情况你就要去写PERSONNEL了。

最正统的ID3写法#

role:name;
role:name;role:name;role:name

一定要用分号分隔,这是ID3要求的。举个例子:

arranger:堀江晶太;instrument:堀江晶太;erhu:野沢香苗;erhu:野々村昌樹;mix:村上宣之;recording:村上宣之;lead vocals:LiSA;lyricist:LiSA;

PERSONNEL写法#

PERSONNEL出现于以上两种都没有被彻底规范的时候,是Roon的私有字段。支持以下格式:

name\trole
name role
name - role

\t是tab分隔符,不要真当作字符了。第二行是两个空格。尽管理论上有侧支持使用,分割多个role,但是实际上不会识别!你要多写几个PERSONNEL行才行。例子:

Wolfgang Schulz - Flute
Daniel Gaede - Violin
Thomas Selditz - Viola
Andreas Greger - Cello
Jeremy Poole - Liner Note Translation
Christophe Huss - Liner Note Translation
Toms Spogis - Booklet Design
Julia Zancker - Cover Photo
Julia Zancker - Cover Design
Andreas Spreer - Recording
Andreas Spreer - Mix
Roland Kistner - Editing
Andreas Spreer - Producer
Andreas Spreer - Liner Notes
Thomas Seedorf - Liner Notes
Regina Köhler - Liner Notes

需要指出的是,Roon不会读取ORCHESTRA字段,所以Orchestra需要写在PERSONNEL中。ENSEMBLE和SOLOIST可以按需写,不是必须。

不推荐的写法#

Roon为了强兼所有人,还有其他地方的元数据也会被读取,但是我不建议按照这样分开来写(目标字段:从哪里读取):

  • Soloists:“SOLOIST”, “SOLOISTS”, “©PRF”
  • Lyricists:“LYRICIST”
  • Librettists:“LIBRETTO”, “LIBRETTIST”
  • Vocalists:“VOCALS”, “VOCALIST”
  • RemixedBy:“REMIXED BY”, “MIXARTIST”, “REMIXER”
  • DjMixers:“DJMIXER”
  • Mixers:“MIXER”
  • Arrangers:“ARRANGER”
  • Ensembles:“ENSEMBLE”
  • Engineers:“ENGINEER”
  • Authors:“AUTHOR”, “IWRI”
  • Writers:“WRITER”
  • Conductors:“CONDUCTOR”, “TPE3”, “©CON”
  • Producers:“PRODUCER”, “IPRO”
  • Featuring:“FEATURING”

更多元数据#

歌词#

从这些 key 取值:“SYLT”,“SYNCED LYRICS”,“LYRICS”,“©LYR”,“UNSYNCED LYRICS”,“USLT”

Roon会自动检测是不是LRC歌词。TTML是不支持的,别想了。

更多出版信息#

  • ProductCode:“BARCODE”, “UPC”, “EAN/UPN”
  • CatalogNumber:“CATALOGNUMBER”, “CATALOGUE #”, “CATALOGNO”, “CATALOG NUMBER”, “CATALOGUE NUMBER”, “CATALOG”, “CATALOGUE”, “LABELNO”
  • Labels:“TPUB”, “ORGANIZATION”, “LABEL”
  • Isrc:“TSRC”, “ISRC”
  • Country:“RELEASECOUNTRY”, “COUNTRY”, “RELEASE COUNTRY”

是否是盗版碟#

检查BOOTLEG的值是不是true,接受true1,如果是的话就会被识别成盗版碟。

曲目是不是Live版本#

Roon不支持从文件元数据设置这个专辑是不是Live版本!所以这个很鸡肋。

检查LIVE的值是不是true,接受true1,如果是的话就会被识别成Live版本。

图片#

Roon不支持webp,avif这些现代图片格式,别想了。

更多日期#

  • IMPORTDATE:专辑被导入到Roon的日期,格式需要是YYYY-MM-DD,这个可以维持按日期排序的顺序。
  • OrIGINALRELEASEDATE:专辑的原始发行日期,格式需要是YYYY-MM-DD,为的是写出这个专辑第一次发行在什么时候,在同一个专辑多次再版的时候很有用。

Roon拓展元数据#

  • ROONALBUMTAG:专辑标签,Roon会把这个字段的值当成标签来识别,多个标签需要写多个在Mp3tag中显示为xx\\xx\\xx
  • ROONTRACKTAG:曲目标签,Roon会把这个字段的值当成标签来识别,多个标签需要写多个在Mp3tag中显示为xx\\xx\\xx

结语#

到此,基本上你能写的都写了,Roon能认的都认了。Roon不支持给碟片命名,这个已经骂了很久了;Roon不支持从文件读取Artist头像,这个也骂了很久了。总之,Roon的元数据系统虽然有很多坑点,但是只要你按照上面的方法来写,基本上就能写出一个非常完整的元数据了。

如何写出优雅完整的音频元数据
https://nptr.cc/posts/2026-05/roon-tag/
作者
Nullpinter
发布于
2026-05-07
许可协议
All Right Reserved.