唱片资料 维基

以下仅作个人的一些思考和经验分享。

首先提一个问题:在音乐爱好者的团体内,多数人or少数人会在意歌曲的不同版本问题?

  • 如果您认为只是少数人没必要考虑,那就不用看这个贴子了。
  • 如果您认为歌曲音源的版本问题是一个值得去研究、探讨和解决的痛点,那么下面的一些分享供您参考。

1. 追求版本唯一性[]

首先,音乐网站对于歌曲音源追求版本唯一性的坚持,这是很有必要的。对于同一首歌的同一个录音版本收录在不同专辑、精选集、合辑里的情况,统一归整歌曲音源是很正确的处理方式。

但是上面的操作其实是有一个大的前提条件的:

  • 需要确定这首歌确实是同一个录音版本

看似简单的一个大前提条件,在现实里其实变得很复杂-

2. 如何定义音源版本是“相同”的?[]

首先,以下情况,一定是相同版本,也不用多说:

  • 2.0.1 从CD无损抓取的音轨文件md5校验值完全一致-这说明这两种音频在数字音乐的世界里是完全相同的版本

然后,以下情况,一定是不同版本,不用多说:

  • 2.0.2 编曲方式不同
  • 2.0.3 艺术家表演方式不同(比如录音室vs现场)

可是现实情况下,有很多校验值不一致、但编曲/表演模式均相同的案例。这是我们下面讨论的重点。

情况序号 文件校验一致 编曲方式一致 表演方式一致 判定结果
1 相同版本
2 不同版本
3 不同版本
4 不同版本
不可能的情况
不可能的情况
不可能的情况
5 本文重点探讨的对象

既然编曲和演唱模式都相同,但无损音源的文件校验不一致,至少说明从技术角度来看一定存在校验不一致的原因。

笔者曾经进行过一些研究,主要是通过将两段音频导入Adobe Audition,将其中一段进行反相处理,然后两段音频进行点对点的对比,如果合成后的结果是两段音频互相抵消,就说明这两段音频是相同的版本;如果并未抵消,那么合成的结果理论上就会展示出它们之间的差异。

以下列出一些常见的情况-即文件校验不一致的原因。

2.1 音轨头尾部的空白区域时长会不一致,但加上offset之后,两段音频完全match。[]

这主要是因为抓轨模式不同、或专辑收录版本不同(个人专辑vs精选集、首版vs再版etc)、或唱片压制模式不同(CD碟片在不同国家压制的版本),因此导致文件的校验不同。
Foobar2000的最新版本提供了bit comparison功能,可以有效检测这种情况。当两个音频文件有着不同的offset,可以使用这个工具来判断音频实际内容是否match。
Differences found in compared tracks; the tracks became identical after applying offset and truncating first/last samples.
Extra leading/trailing sections contained only null samples.

Comparing:
"C:\Users\zheng\Desktop\2.wav"
"C:\Users\zheng\Desktop\3.wav"
Differences found: length mismatch - 0:30.000000 vs 0:30.110615, 2880000 vs 2890619 samples.
Compared 2880000 samples.
Discarded last 10619 samples containing non-null values from the longer file.
Differences found within the compared range: 2879991 values, 0:00.000010 - 0:29.999990, peak: 1.376119 (+2.77 dBFS) at 0:00.110990, 1ch
Channel difference peaks: 1.376119 (+2.77 dBFS)
File #1 peaks: 0.800000 (-1.94 dBFS)
File #2 peaks: 0.800000 (-1.94 dBFS)

Comparing again with corrected offset...
Compared 2880000 samples, with offset of 10619.
Discarded 10619 leading null samples from file #2.
No differences in decoded data found within the compared range.
Channel peaks: 0.800000 (-1.94 dBFS)



Total duration processed: 0:30.000
Time elapsed: 0:00.103
290.39x realtime
这种情况,我认为,在数字音乐的领域内,应该判定两段音频的版本【相同】。

2.2 去除掉头尾的空白之后,发现两段音频的播放速率有差异,但听感完全一致。[]

比如其中一个版本的音频速率会比另一个版本快几毫秒,整体快的几毫秒并不影响任何听感,但是会导致数字文件的校验不同。
究其原因,也许是母带转录时的差异,也许是不同版本唱片的压制模式的差异。
而且我发现这种情况非常常见,很多都是同一首歌在个人专辑和精选集收录时,就会有这种情况。
这种情况,我认为,在数字音乐的领域内,倾向于判定两段音频的版本【相同】。除非是速率有巨大(日后可以探讨这个阈值)的差异。
或者理想状态下,我希望能有一个平台,提供两段这样的音频,然后开放听众投票来决定版本是否相同。

2.3 【最纠结也最常见的情况】两段音频的mix/mastering(缩混母带处理)不一致[]

这里包括音量电平大小的差异、动态压限的差异,从而导致波形图的差异、高频低频信息的差异等等。
在这种情况下,一般情况下听众的听感也是不同的。这也是大部分再版碟所一再提到的remaster的概念和卖点。
这种情况,在数字音乐的领域内,是否应该判定两段音频的版本相同呢?
目前,全球几乎所有的流媒体数字音乐平台,都默认这些版本是【不同】的。我也倾向于认同这一点。
再加上,这些歌曲版本的ISRC大多数情况下也是不同的,甚至版权方也不同,所以全球各大平台为了方便管理,都是判定为不同版本。

但是,这也违背了数字音乐网站尽量追求音频版本唯一和权威性的初衷了。

理想状态下,如果一定要全部收录所有的mastering版本,我希望数字音乐平台可以继续做到以下几点:
× 2.3.1 公开展示这些版本的ISRC-这样可以让听众大致了解这些mastering版本的出版时间和地区,ISRC作为一个identifier,也可以便于区分。
× 2.3.2 希望可以开放用户投票,选出听感最佳的mastering版本,并做一些标识,从而为普通听众提供最佳的收听体验
× 2.3.3 而对于其他版本,则只开放给高级的、粉丝级的用户用来考究和收藏。

说来说去,其实2.3这种情况的理想化的处理方式,有点像目前Discogs等网站对于专辑的不同版本的收录方式-选定一个首版,然后其他版本归属到首版的下面,作为同一张专辑来呈现。

总结一下[]

情况序号 文件校验一致 编曲方式一致 表演方式一致 头尾Offset偏移 播放速率 电平增益 Mastering 判定结果
1 相同 相同 相同 相同 相同版本
可借助Foobar2000工具检测
2 不同 不同版本
3 不同 不同版本
4 不同 不同版本
5.1 不同 相同 相同 相同 相同版本
可借助Foobar2000工具检测
5.2 相同 不同 相同 (倾向于)相同版本
这种情况下只是电平增益不同,但母带处理的方式是相同的版本。通过调整/标准化播放增益,可以完全match。目前没有工具可以直接检测,只能借助Audition反向叠加手动检验,Foobar2000的电平检测可作参考
5.3 不同 相同 相同 (倾向于)相同版本
这种情况下只是播放速率不同,母带处理的方式应该是相同的版本。目前没有工具可以智能检测,只能借助Audition反向叠加手动检验
5.4 不同 不同 相同 (倾向于)相同版本
这种情况下电平增益和播放速率都不同,但母带处理的方式应该是相同的版本。通过调整/标准化播放增益,可以达到相同的听觉效果。目前没有工具可以智能检测,只能借助Audition反向叠加手动检验
5.5 不同 (倾向于)不同版本
这种情况下母带处理的方式应该是不同的版本,即使通过调整播放增益,也无法达到相同的听觉效果。目前没有工具可以智能检测,只能借助Audition反向叠加+人耳主观试听手动检验

3. 现实里的问题[]

好了,上文从理想化的角度探讨了如何判定音源版本是否相同。下面来列举一些现实的问题。

3.1 唱片公司、出版商的专业靠谱程度不一[]

在出版业,ISRC是作为验证音源是否是同一个录音版本的一个identifier,理想状态下,检验是否是同一个录音版本只需要检查ISRC是否一致就可以了。 但是,现实中,ISRC也并不靠谱,下面的情况也很常见:

  • ×3.1.1 ISRC不同,音源却是同一个版本:比如一些国内的再版专辑,用的是不同ISRC但是音源是一模一样、甚至文件校验码都是一致的版本
  • ×3.1.2 ISRC相同,音源确实不同的mastering版本。
  • ×3.1.3 ISRC在国内大概1993年才开始实行,那么1993年以前出版的音源,也没办法用ISRC来做判断。
  • ×3.1.4 ISRC代码有时没办法查证-比如实体专辑有时并没有列出确切的代码;抓轨出的CUE里有时也不会嵌入ISRC代码

先意识流地写到这里,之后会再扩充。

阅读更多[]