唱片资料 维基

本页面主要介绍和分享关于音频文件差异对比的方法和相关案例。应用场景主要适用于

  • 比对相同的音乐作品,在不同的CD唱片版本收录的音源差异。
  • 比对相同的音乐作品,在不同渠道、介质和格式之间的音质差异。
  • 当两段音频并没有明显听觉差异、但音频文件的MD5等校验值却并不相同,在这样的情况下,这些方法也许会帮助我们了解两个音频文件的实际差异在哪里。

Foobar2000的Binary Comparator插件[]

此插件在最新版本的Foobar2000中已经自带,因此无需手动添加或安装,使用方式如下图所示。更多详情请参考官方页面[1]

案例解读[]

使用Foobar的BC插件进行对比之后,会生成关于两段音频的对比结果Log,下文会针对不同案例和不同情况下的对比结果Log进行展示和说明。不过,在进行案例解读之前,欢迎先行阅读并了解#相关博文章节中提到的博文,来明确关于音乐歌曲「版本」的基本定义和共识。本章节的案例解读部分,会对应博文中展示的各种不同情况(如下表所示)进行解读。

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

案例1:完全相同[]

所有音轨解码良好,未发现差异。

比较:
"J:\音乐备份1\许美静 - 快乐无罪.cue" / index: 1
"E:\Audition\compare\许美静 - 01.或许可能应该.flac"
比较 11607120 采样.
未发现解声道峰值: 0.988556 (-0.10 dBFS) 0.988556 (-0.10 dBFS)

这个案例中,两个音频文件在数据层面完全相同,MD5等校验值也应该是相同的。对应的是「版本判定」表格中的情况#1。这一案例无需赘言,是版本对比中最简单直接的情况,证明音源是完全相同的。至于其他层面的音质差异,比如不同播放器、音响设备播放造成的听觉差异,在此就不作详细探讨了。

案例2:除offset之外完全相同[]

在比较音轨中发现的差异;在应用偏移并截断第一个/最后一个样本之后,音轨变得相同。
额外的头部/尾部包含有采样。

比较:
"D:\#ToArchive\周杰伦 - 叶惠美(2003阿尔发音乐CD+VCD双碟厚盒首版)\周杰倫 - 葉惠美.cue" / index: 3
"D:\#ToArchive\周杰伦 - 叶惠美(JVR版)\周杰伦 - 叶惠美.cue" / index: 3
比较 11895828 采样.
发现差异: 23723299 数值, 0:00.000000 - 4:29.746644, 峰值: 1.884460 (+5.50 dBFS) 在 2:00.768254, 1ch
声道差异峰值: 1.884460 (+5.50 dBFS) 1.806152 (+5.14 dBFS)
文件 #1 峰值: 1.000000 (0.00 dBFS) 1.000000 (0.00 dBFS)
文件 #2 峰值: 1.000000 (0.00 dBFS) 1.000000 (0.00 dBFS)
检测到的偏移为 -1237 采样.

再次与校正偏移进行比较...
比较 11894591 采样, 偏移量为 -1237.
已废弃 1237 头部 采样包含非空值 从文件 #1.
已废弃 1237 结尾 采样包含非空值 从文件 #2.
在比较范围内未发现解码数据的差异。
声道峰值: 1.000000 (0.00 dBFS) 1.000000 (0.00 dBFS)

这个案例非常普遍,经常出现在同张专辑的不同发行版本之间。所对应的是「版本判定」表格中的情况#5.1。上面Log中加粗的部分是比较重要的部分,说明两段音频在修正了头尾偏移之后,就变得完全相同。因此,通常这种情况下,我们会立刻判定两个音频的版本是相同的,尽管他们的MD5等校验值并不一定相同。

案例3:曲目头部或尾部出现局部的细微差异[]

在比较的音轨中发现差异。
检测到非零偏移。
额外的前导/尾随部分仅包含空样本。

比较:
"J:\音乐备份1\孙燕姿\孙燕姿 - 2005 - 完美的一天 [台湾版]\孙燕姿 - 完美的一天(A perfect day).cue" / index: 1
"D:\#ToArchive\孙燕姿 - 完美的一天(香港首版)\孙燕姿 - 完美的一天.cue" / index: 1
比较 10779216 采样.
发现差异: 21367827 数值, 0:00.008776 - 4:02.418957, 峰值: 1.986450 (+5.96 dBFS) 在 1:33.538639, 1ch
声道差异峰值: 1.986450 (+5.96 dBFS) 1.975006 (+5.91 dBFS)
文件 #1 峰值: 0.998840 (-0.01 dBFS) 0.998840 (-0.01 dBFS)
文件 #2 峰值: 0.998840 (-0.01 dBFS) 0.998840 (-0.01 dBFS)
检测到的偏移为 1793 采样.

再次与校正偏移进行比较...
比较 10777423 采样, 偏移量为 1793.
已废弃 1793 结尾 无采样 从文件 #1.
已废弃 1793 头部 无采样 从文件 #2.
在比较范围内发现的差异: 596 数值, 0:00.008277 - 4:02.383379, 峰值: 0.000031 (-90.31 dBFS) 在 0:00.008277, 1ch
声道差异峰值: 0.000031 (-90.31 dBFS) 0.000031 (-90.31 dBFS)
文件 #1 峰值: 0.998840 (-0.01 dBFS) 0.998840 (-0.01 dBFS)
文件 #2 峰值: 0.998840 (-0.01 dBFS) 0.998840 (-0.01 dBFS)

这个案例也非常普遍,也是经常出现在同张专辑的不同发行版本之间。所对应的是「版本判定」表格中的情况,在大多数情况下为#5.1。上面Log中加粗的部分是比较重要的部分,说明两段音频虽然在修正了头尾偏移之后,依然存在差异,但是,

  • 存在差异的采样单位仅有596个
  • 最大的差异(峰值)出现的位置是在音频开头(0:00.008277)
  • 并且,最大的差异只有-90.31 dBFS,这完全无法被人耳所分辨[2]。这个数字越小,人耳就越难以分辨,我们一般情况下,如果数值小于-50 dBFS,就可以判定这个差异可以忽略不计了。

因此,通常这种情况下,在这个案例下,我们也会判定两个音频的版本是相同的(同#5.1),尽管他们的MD5等校验值并不一定相同。

案例4:曲目中间出现局部差异[]

在比较的音轨中发现差异。
检测到非零偏移。
额外的头部/尾部包含有采样。

比较:
"J:\音乐备份1\孙燕姿\孙燕姿 - 2005 - 完美的一天 [台湾版] (borisfeng)\孙燕姿 - 完美的一天(A perfect day).cue" / index: 3
"D:\#ToArchive\孙燕姿 - 完美的一天(香港首版)\孙燕姿 - 完美的一天.cue" / index: 3
比较 12199824 采样.
发现差异: 24228364 数值, 0:00.000000 - 4:36.639887, 峰值: 1.975037 (+5.91 dBFS) 在 2:42.782041, 2ch
声道差异峰值: 1.975006 (+5.91 dBFS) 1.975037 (+5.91 dBFS)
文件 #1 峰值: 0.998840 (-0.01 dBFS) 0.998840 (-0.01 dBFS)
文件 #2 峰值: 0.998840 (-0.01 dBFS) 0.998840 (-0.01 dBFS)
检测到的偏移为 1793 采样.

再次与校正偏移进行比较...
比较 12198031 采样, 偏移量为 1793.
已废弃 1793 结尾 采样包含非空值 从文件 #1.
已废弃 1793 头部 采样包含非空值 从文件 #2.
在比较范围内发现的差异: 8899 数值, 0:00.000363 - 4:34.868073, 峰值: 0.028625 (-30.86 dBFS) 在 2:31.953288, 2ch
声道差异峰值: 0.021393 (-33.39 dBFS) 0.028625 (-30.86 dBFS)
文件 #1 峰值: 0.998840 (-0.01 dBFS) 0.998840 (-0.01 dBFS)
文件 #2 峰值: 0.998840 (-0.01 dBFS) 0.998840 (-0.01 dBFS)

这个案例相对少见,但如果遇上,需要仔细判断差异出现的位置和实际对音质的影响。上面Log中加粗的部分是比较重要的部分,说明两段音频虽然在修正了头尾偏移之后,依然存在差异。

  • 存在差异的采样单位有8899个,这说明差异出现的位置是局部的,而不是存在于整首曲目。
  • 最大的差异(峰值)出现的位置是在中间位置
  • 最大差异的峰值为-30.86 dBFS

基于上面几点,是有必要对出现差异的位置进行详细对比和考究的,可以使用Adobe Audition将两段音频中的其中一段反相处理,然后叠加相消,叠加之后得到的就是具体差异的实际情况,然后再对出现差异的位置进行判定。

理论上,这种差异会引发一些听觉上的差异。但现实里并不一定如此,比如如果差异出现在一段音乐非常强烈的曲目段落中,那么就不会构成听感上的影响。所以,

  • 如果最终判定发现其差异不构成实质听觉上的影响,我们就会认定两段音频的版本是相同的。
  • 而如果这些差异确实构成了实际听觉的明显影响,则会根据具体差异的情况归类为「版本判定」表格中的情况#4(编曲方式不一致)或情况#5.5(母带后期处理Mastering不一致)。

案例5:曲目整体音质存在差异[]

在比较的音轨中发现差异。
检测到非零偏移。
额外的头部/尾部包含有采样。

比较:
"J:\音乐备份1\周杰伦\周杰伦 - 2010 - 跨时代\周杰伦 - 跨时代 - 台湾版.cue" / index: 1
"D:\#ToArchive\周杰伦 - 跨时代\周杰伦 - 跨时代 - 内地版.cue" / index: 1
发现差异: 长度不匹配 - 3:14.453333 与 3:14.560000, 8575392 与 8580096 采样.
比较 8575392 采样.
废弃尾部 4704 采样包含非空值 从较长的文件.
在比较范围内发现的差异: 17139145 数值, 0:00.014422 - 3:14.453311, 峰值: 1.998962 (+6.02 dBFS) 在 2:51.672018, 1ch
声道差异峰值: 1.998962 (+6.02 dBFS) 1.973022 (+5.90 dBFS)
文件 #1 峰值: 1.000000 (0.00 dBFS) 1.000000 (0.00 dBFS)
文件 #2 峰值: 1.000000 (0.00 dBFS) 1.000000 (0.00 dBFS)
检测到的偏移为 4265 采样.

再次与校正偏移进行比较...
比较 8575392 采样, 偏移量为 4265.
已废弃 4265 头部 采样包含非空值 从文件 #2.
已废弃 439 结尾 采样包含非空值 从文件 #2.
在比较范围内发现的差异: 17108246 数值, 0:00.000000 - 3:14.453311, 峰值: 0.572662 (-4.84 dBFS) 在 0:39.047483, 2ch
声道差异峰值: 0.530975 (-5.50 dBFS) 0.572662 (-4.84 dBFS)
文件 #1 峰值: 1.000000 (0.00 dBFS) 1.000000 (0.00 dBFS)
文件 #2 峰值: 1.000000 (0.00 dBFS) 1.000000 (0.00 dBFS)

在这个案例中,Foobar的BC程序可以识别出两段音频的偏移值,这就说明两段音频的播放速率、电平以及母带处理方式(Mastering)大体是一致的。然而,依然存在较为明显的差异,包括

  • 出现差异的采样单位数量非常巨大,差异的范围也是贯穿歌曲始终,说明这些差异是全局的,而不是局部差异。
  • 差异最大的峰值达到-4.84 dBFS,这属于人耳能够分辨的比较大的差异了。

由此,在这种情况下有必要使用#案例4 中提到的Audition反相相消的方法对差异进行具体分析。如果这些差异确实构成了实际听觉的明显影响,则会根据具体差异的情况归类为「版本判定」表格中的情况#4(编曲方式不一致)或情况#5.5(母带后期处理Mastering不一致)。

此外,如果你所比对的音频文件是来源于网络流媒体平台(而非CD抓轨)的话,那么也有可能是这些流媒体平台的音频文件中增加了数字水印[3],导致整体音质受到影响。反映到Foobar对比的Log上,也会类似上面的案例。

案例6:结果识别出了差异,但无法识别偏移[]

在比较的音轨中发现差异。
额外的头部/尾部包含有采样。

比较:
"J:\音乐备份1\周杰伦\周杰伦 - 2010 - 跨时代\周杰伦 - 跨时代 - 台湾版.cue" / index: 4
"D:\#ToArchive\周杰伦 - 跨时代\周杰伦 - 跨时代 - 内地版.cue" / index: 4
发现差异: 长度不匹配 - 3:58.960000 与 3:59.080000, 10538136 与 10543428 采样.
比较 10538136 采样.
废弃尾部 5292 采样包含非空值 从较长的文件.
在比较范围内发现的差异: 21067669 数值, 0:00.000000 - 3:58.959977, 峰值: 1.884552 (+5.50 dBFS) 在 0:59.692063, 2ch
声道差异峰值: 1.837341 (+5.28 dBFS) 1.884552 (+5.50 dBFS)
文件 #1 峰值: 1.000000 (0.00 dBFS) 1.000000 (0.00 dBFS)
文件 #2 峰值: 1.000000 (0.00 dBFS) 1.000000 (0.00 dBFS)

如果对比两段音频出现了类似上面的结果,Log只给出了最大差异峰值却没有识别出任何偏移,而且差异峰值也非常大(>0 dBFS),那么很遗憾,这说明Foobar的BC插件只能判断两段音频是不同的,但无法进一步判断差异具体的情况。那么这时就需要结合不同情况去仔细判断了,下面列出几种可能的情形。

案例6.1:曲目的编曲、电平或混缩有明显差异[]

这种情况(对应「版本判定」表格中的情况#4 #5.2 #5.4#5.5)不用多说,通过Auditon反相相消+手动调整电平,或者干脆人耳手动试听对比,也许就可以发现两段音频中出现的具体差异的情况。Foobar上面的Log中的最大峰值的位置,也可以作为参考。

案例6.2:两段音频本来就是互为反相[]

这种情况相对少见,但也存在。意思是,这两段音频的某一个版本在母带压制的时候,由于不明原因,以与另一个版本反相的形式压进了CD中。这样一来,两段音频虽然听感无差异,但是波形图会非常不同。如果是这样的情况,很简单,将其中一段音频放入Audition,对其再作一次反相处理,那么,得到的音频就会与另一版音频相同或相似。这时,我们可以利用Foobar的BC插件再次对反相后的音频进行对比,然后再进行判断。案例:八度空间_(周杰伦专辑)#发行版本的日本版vs台湾版。

案例6.3:Mastering相同,但播放速率有差异[]

这种情况虽然很少被提及,却是非常常见。有很多曲目在不同专辑或版本中收录的版本,虽然没有明显的编曲、电平或母带处理方面的不同,但是其播放速率存在非常微妙的差别。这一点在上述提到的博文中有详尽说明,对应的是情况#5.3

在这种情况下,我们倾向于判定两个版本为同一版本,但很遗憾:(,目前没有找到一种比较方便量化的比对工具或方法,只能通过将两段音频载入Audition,然后尝试用反相相消的方式大致调整偏移并进行播放速率差异的对比和验证。

相关博文[]

参考资料[]

  1. https://www.foobar2000.org/components/view/foo_bitcompare
  2. 关于dBFS的更详细信息:https://en.wikipedia.org/wiki/DBFS
  3. 关于数字水印的更详细说明,请参见这篇文章:https://zexwoo.blog/posts/knowledge/audio-watermark 作者:ZexWoo