Featured image of post AccurateRip 详解

AccurateRip 详解

经常抓轨的朋友肯定对 AccurateRip 不陌生,本文来详细介绍一下它。

本文翻译自 hydrogenaudio

AccurateRip 是一个在线的抓轨精度数据库。借助世界各地人们提交的数据,可通过匹配来逐位确认音轨抓取的准确性。AccurateRip 还可确定光驱的偏移值。

数据库由 Illustrate 有限公司维护,该公司由 dBpoweramp 的主要开发商「Spoon」运营。其所有的数据由 Windows 抓轨程序 dBpoweramp 和 EAC 通过 Illustrate 许可的 DLL 提交。其他抓轨软件和工具(例如 CUETools 和基于 macOS 的抓轨软件)可以从数据库接收信息,以查询光驱偏移值或检查抓轨质量,但它们无法向数据库提交抓取结果。

光驱读取偏移

实际上,很少有光驱能准确地从 DAE(Digital Audio Extraction)软件所要求的扇区开始读取音频 CD 的数据。有些光驱的偏移值超过一个扇区(一秒的 1/75),但大多数的偏移值小得多(1/350 至 1/250 秒)。大多数现代 CD 光驱具有「精确流」技术,因此不存在「时基误差(jitter)」,这意味着每次读取的差异是恒定的,且对于特定品牌和型号的所有光驱而言,差异趋于一致。

AccurateRip 数据库允许用户查询读取偏移值,对于给定品牌和型号的光驱,偏移值通常是固定的。然后,DAE 软件可利用该值,确保每个曲目都被从准确的起点和终点复制了。

偏移值的单位是采样。音频 CD 上一个「采样」是 4 字节,由 2 字节的左声道值和 2 字节的右声道值组成。音频 CD 的每个扇区中有 2352 个字节或 588 个采样,对应着 1/75 秒的声音。因此,+134 的 AccurateRip 偏移值意味着光驱始终从所要求的读取位置之前 536 字节处传输数据,因此 DAE 软件需要向前看(因此偏移值为正)以获取正确的数据。

考虑到偏移值,DAE 软件可能必须要求光驱「踰读(overread)」到无音频数据的光盘导入(lead-in)或导出(lead-out)部分。有些光驱做不到,另一些则会尝试然后失败,还有些干脆返回空采样(一连串「0」比特,即数码静音)。如果光驱不能踰读,被抓取的音轨就会丢失部分采样。DAE 软件可用静音填充丢失的偏移采样以保证长度正确。

偏移值精度

确定光驱的真实读取偏移值绝非易事。Spoon 在 AccurateRip 数据库中采用的、由 Andre Wiethoff 制定的参考度量值于 2006 年底遭到挑战;挑战者宣称参考值实际上跑偏了 30 个采样。偏移值低了 30 个采样,或是校正值高了 30 个采样。Wiethoff 认为想要更换成另一参考值已为时太晚,因为数据库已经广泛使用了。但是,由于所有提交的数据都以同一参考值校准,且表观误差是如此之小(约 680 微秒),因此 AccurateRip 的数据可靠性丝毫不受影响。

被抓音轨的校验码

一旦音轨的所有采样都被抓取且被存入一个文件,例如 WAV,就可以生成校验码以概括采样数据。相同的数据会产生相同的校验码,若数据稍有不同,则校验码通常会非常不同。只要考虑了光驱偏移值,就可以比较相同压盘的相同 CD 中的相同音轨生成的校验码,以确认抓轨是否准确无误。也就是说,如果你抓取某个音轨,且你的校验码和其他所有人的校验码匹配得上,那么你就可以确信没有丢失或错误的采样(或者你们所有人的碟片都有完全一致的损坏,这几乎不可能)。更多内容请参阅 精确抓轨 一文。

AccurateRip 数据库存放了逾 200 万张各不相同的碟片。DAE 软件可利用此信息来决定是否尝试重读产生了不同于校验码期待值的音轨。

校验码计算

校验码计算的技术细节在此:AccurateRip-CRC-Calculation

一个用以计算 AccurateRip 校验码的 Linux 命令行工具可在此找到:GitHub 链接

每个 AccurateRip 校验码都基于一个完整音轨的抓轨,从音轨的开头到结尾,它由碟片的目录表(ToC, table of contents)决定。这意味着位于音轨开头或结尾(除了第一轨之前的部分)的任何静音或曰「间隙」,都必须包含在抓轨内。如果你的 DAE 软件被配置为修剪静音或是选择不将间隙追加到上一音轨末尾(通常发生于不将间隙纳入考虑的情况下),则你抓轨的校验码就不太可能被提交到 AccurateRip 数据库或是与其中的记录比较。

校验码算法会忽略第一个音轨开头的 2939 个采样(不到 5 块,略大于 0.013 秒的音频),也会忽略最后一个音轨末尾的 2940 个采样(正好 5 块)。截至 2011 年底,数据库中最大的光驱偏移值仅 1776 个采样,因此,经过偏移值校正的驱动器「踰读」到音频数据的边界之外时,通常不会影响校验码。但是,如果踰读了超过 2940 个采样,则该算法将假定数据已用数字静音填充(都是零)。如果你的驱动器无法踰读数据,且 DAE 软件未使用静音填充丢失的偏移采样,则你抓轨的校验码不太可能被提交到 AccurateRip 数据库或是与其中的记录比较。

在优化原始 AccurateRip 校验码算法时的一个疏忽导致了准确性的意外损失:大约 3% 的音频数据根本没被纳入校验码计算。左声道的采样已被完全纳入,但在 65536 采样的周期中,右声道的一半采样会被作为随机丢失了 1 bit 至 16 bit 的情况处理。数据库及其 API 采用了改进算法,优化后的算法被应用于 AccurateRip v2 校验和的计算,它现在是支持 AccurateRip 的抓轨软件的默认计算方式。v2 校验和相较于原版有多大提升尚且存疑。v2 校验和与原版被视为不同的压盘,所以并无既有数据完整性的风险。

压盘(Pressing)

从 AccurateRip 的角度看来,压盘是由压盘厂制造的一批相同的音频 CD,通常又在之后的某个时候另压制一批数据相同而偏移值相异的 CD。偏移值是由于母盘复制到压盘机器时方式不同而产生的。不同的压盘批次除了偏移值都一样;它们记录的音频数据是完全相同的。AccurateRip 在编写之初只能验证特定的压盘(相同的数据、相同的偏移值),尽管软件的校验进程仍能交叉校验不同轮次的压盘。CUETools 的一次重大更新提供了一种数学上的解决方案,可以快速地交叉校验某一抓轨和不同轮次的压盘。AccurateRip v2 在之后发布以包含对不同轮次压盘的交叉校验。

AccurateRip 数据分析

统计分析 AccurateRip 亿万次提交的数据,考虑到光驱数据提交的来源足够广泛、损坏 CD 的异常结果会被分摊,从而确定特定光驱的精确度是完全可能的。最近的数据在此:2019 年度 CD/DVD 光驱准确度榜单

关于光驱的偏移值报告在此:CD Drive Offsets

提交偏移值和校验码

数据库被设计为由 DAE 软件通过 HTTP 匿名访问。只能通过此类软件提交数据。

使用 AccurateRip 的软件

  • Exact Audio Copy
  • DBpowerAMP with AccurateRip
  • Foobar2000
  • MediaMonkey
  • CueTools
  • XLD
  • Python Audio Tools
  • Rip
  • Songbook
  • morituri
  • whipper

历史

AccurateRip 于 2003 年 1 月作为 dBpowerAMP Music Converter (dMC) 的附件推出。

Written by ZexWoo. All rights reserved.
主题 StackJimmy 设计 | 使用 Hugo 搭建