关于用EAC抓轨的测试
数字崇拜
本站编者按——Exact Audio Copy是本站重点推荐的一款无损音质CD抓轨软件。网友“数字崇拜”针对这款软件进行了深入的抓轨测试,得出了非常宝贵的经验,因此也就有了这篇文章。文中详细介绍了EAC能够做到无损抓轨的原理以及具体的测试过程,确实是一篇不可多得的优秀文章——
这两天闲来无事,作了一些抓音轨的试验,本人的机器配置如下:PII400超450,HY128M,EPOX BX3主板。使用两台CDROM:
1.Acer CD650P 50倍速,传输模式 UDMA/33
2.Samsung SC-140 40倍速,传输模式 PIO-4
使用的软件:Exact Audio Copy V0.9 Prebeta 9
实验唱片:
1.Z版 MERCURY Hi-Fi西班牙 编号434 349-2
2.D版 MERCURY Hi-Fi西班牙 盘片白底蓝字,标称贵州音像出版公司发行
测试音轨:使用Track1 BRAZILIAN SLEIGH BELLS
实验一:同一张Z版唱片在不同的CD-ROM上的多次抓取
首先在IDE2接上Acer光驱,进行三次抓取,然后关闭计算机,拆下Acer 50X的数据线,接到Samsung 40X上,进行两次抓取,关闭计算机,重新启动,进行三次抓取,关闭计算机,拆下数据线,重新接到Samsung 40X上,再进行两次抓取。在开始和更换光驱后,首先使用EAC检测光驱的特性,发现两台光驱都支持如下三个特点:
1.不缓冲音频数据(No Cache Audio Data)
2.精确流模式(Accurate Stream)
3.C2级校错(C2 error correction)
使用安全模式(Secure Mode)进行抓取,抓取前首先检测音轨之间的间隔(Gap),一次抓取完毕后关闭EAC,再重新启动EAC,检测Gap,然后进行下一次抓取。首先观察十个文件的大小,都是34,052,300字节,即272418400位。 然后使用FC/B进行二进制比较,发现所有的文件都是相同的。由此可见,使用质量好的Z版唱片,在两台CDROM上,使用EAC抓取的WAV文件是完全相同的,但这样的数据是否就是CD上原有的数据呢?这可以通过红皮书的误码率作一个模糊的概率统计,但是红皮书只是一个书面标准,并不能保证我抓取音轨的误码率就是这样,所以我采用了一个通用的数字游戏的方法。
下面简单地分析一下,为简单起见,首先只考虑其中两个文件A和B。分几种情况讨论。
1.两个文件都是正确的,这很好。
2.一个文件正确,一个文件错误,这与实验结果相矛盾。
3.两个文件都错误,但错误的位数不一样。不妨设A,B错误的位数分别为x和y x<>y,那么两个文件至少有x-y位不相同,这与实验结果相矛盾。
4.两个文件都错误,且错误的位数一样,不妨设为m(m>0),也就是说B文件也错在m个固定的位(相对A文件来说)。这种事件出现的概率是P=1/C(n,m)=m!(n-m)!/n! n=272418400。当m-n/2越大时,P越大。如果m<>n,也就是说文件不是全错的话,当m=n-1或m=1时,P最大,P=(n-1)!/n!=1/n=1/272418400=3.67e-9。扩展到十个文件,他们全部出错误,错误的位数相同,位置相同,且并非所有位全错的最大概率是(3.67e-9)^9=1.21e-76,这是什么样的小概率事件,不言而喻,我想不会比中一个几百万元的彩票的机会更大。
看来只有一种情况可能出现了,即m=n,P=1,唉,我的两台光驱读CD数据居然在所有的位上100%的出错,在红皮书的标准之下,这真是不可思意,这种误差如果是随机性的,那么其概率为1/2^272418400,不大于10e-68104600,如果是系统性的,看来又该换光驱了,不过我的光驱读软件可好好的,真是不可思议。
顺便说一下:在原先的实验中,网友在不同的光驱上抓却音轨往往不一致。但EAC为什么这么厉害呢,我摘译软件作者在文档中的若干描述,本人英文水平不高,也不是相关技术领域专家,错误在所难免。
EAC的作者Andre Wiethoff是德国多特蒙德大学计算机专业的一名学生,经常抓取和监听各种WAV文件,所以使用了许多抓音轨的软件,但令他不满意的是,这些软件只有时基误差的校正,而CDROM在抓音轨时会产生其他的误差,所以,他就萌发了开发一个完全精确的抓音轨软件的念头,这样EAC诞生了。EAC的特点如下:
抓取技术:
EAC采用三种抓取方式:安全(Secure),快速(Fast)和爆发(Burst)。在安全模式模式下,对于每一段音频数据至少读取两次,如果两次不一样,则继续读取直到有50%以上的采样是完全相同的为止,不过最多只读取82次,这样就会得到完全正确的或最佳结果,当光驱支持精确流(accurate stream)特性时可以确保这一点。如果光驱对于音频数据进行缓冲(Cache),情况就会变得复杂起来,因为后面每一次读取数据都是第一次的缓冲,是从Cache中读出的,当然是一致的。EAC通过重新初始化光驱来避免这一点。由此可见,安全模式是比较慢的。C2级错误检测是EAC采用的又一种光驱特性。光驱有C1,C2两种错误检测方法,如果在读取音频流时,发现C1和C2校验错误,那么只用读取一次就可以了,不过需要注意的是:光驱对以这一特性的报告可实现并非完全准确,所以为了保险,可以关闭这一选项。如果光驱支持精确流特性,且不对音频数据进行缓冲,那么EAC可以使用快速模式效果是相同的。而爆发模式不进行任何的检测和校正,只是速度快。
间隙技术:
EAC可以检测音轨之间的间隙,这种信息并非直接存储在CD上,需要进行测试,使用这种技术的一个好处是可以指明抓取的时间范围。
光驱特性自动检测技术:
上面说了,如果光驱支持支持精确流特性,C2级错误校正,且不对音频数据进行缓冲这对于音轨的抓取是非常有好处的。所以在使用EAC之前,首先要检测你自己的光驱,EAC对于精确流特性的检测是完全正确的,但对于Cache的检测并非完全准确,为保险起见,你可以假设你的光驱对音频数据进行缓冲。
音轨同步技术:
如果使用这一选项,EAC会对于相邻的音轨进行同步,以避免时基误差,这对于一些现场录音(Live Recording)特别有用。
采样偏移技术:
采样偏移(Sample Offset)技术是EAC的又一大特点,许多光驱不支持精确流特性,EAC使用这一技术有利于在进行多次抓取时,同一条音轨其数据都是一致的。有些光驱无法精确的定义起始点,所以程序指定读取第10000块(Block)时,可能读的是第9998块,但读取程序是无法发现这一点的。一般的,对于每一台光驱,都有其特定的偏移值,EAC如何适应这一点呢,作者收集了几百张常见的CD,在每张CD的特殊位置读取了一些字节,建立了一个CD特征库,如果你也正好有这个版本的CD,你就可以使用他们,通过EAC进行比较,以得到你自己的光驱的特征偏移,注意同一种CD可能有多种版本,所以你必须仔细检查CD内环的代码,当然,如果同一版本的CD,不同的碟片上的数据居然不一致的话,这种技术也就失效了。
正是因为EAC采用了这些技术,所以将音频数据抓取的正确程度提升到了一个新的高度。目前,它还是0.9的贝塔测试版,作者还在不断地进行努力。
文档摘译完了,我的观点是:在适当的软件(EAC)的驱动下,当然这种控制软件也可以设计成专用的芯片,廉价的CD-ROM(即使是维修过的)完全能胜任红皮书标准的音乐CD数据的读取,这与天价转盘没有什么两样,无论他们采用了什么防震措施和发烧级的元器件。前题是控制软件要足够好。
一个免费软件能够做到的事,但是为什么音响厂商们做不到这一点呢,这恐怕没有技术上的困难,只有从商业目的上来理解了,对于数字信号的正确读取,传输和复制,他们恨得要死,怕的要命,当然,这更包括各个唱片公司,反观IT厂商,对于D版的问题更多的是从法律和技术上来防范,而不是鼓吹炒作各种奇怪的概念。
实验二:同版本的D版唱片在不同的CD-ROM上的多次抓取
既然Z版唱片的问题不大,那么D版唱片呢,我找到了Hi-Fi西班牙的 一张D版,盘片白底蓝字,标称贵州音像出版公司发行,与Z版相比,印刷粗糙多了,盘片的内环和外沿都不是很平滑。同样的在两台光驱 中分别抓取了5次,其中有时还关闭了EAC的精确流选项,no cache audio 选项,即让EAC采用最保守的多次比较的方法进行抓取,结果是所有文件 的大小仍然为34,052,300字节,但是进行二进制比较时,问题来了,D版本身抓取的十个文件是完全一致的,但是与Z版相比较时,几乎100%不一样,经过分析,发现同一段的数据在两个文件中的偏移完全不同,由此可见D版还是有问题的。
由于本人是从事软件工作的,所以以上的某些观点可能不免又陷入了软件万能论的泥潭,其实也就是硬件万能论,因为许多计算机控制芯片就是在不断的固化各种软件。