现在对于电声的原理因该比较清楚了,爱迪生发明留声机正是利用了这个原理,在唱片上刻下声波的曲线,再用唱针沿着波线划过产生振动,并用电流放大就可以放出声音了。这其实就是现在所说的模拟信号,也就是用一条光滑的曲线来表示声波,但计算机数据只能用1和0表示,那么计算机又该如何表示声波呢?下面我们将引入一个概念“采样率”。
在一秒钟之内对声波进行取点的数量叫做采样率。假设声波是一条沿X正方向沿伸的sin曲线,那么我们就可以沿着X方向上在曲线上取到不同的Y方向的值,这个值就叫做采样值。当然计算机能表示的数量是有限的,我们不可以在X方向上以无限小的增量对曲线进行采样,所以我们只能按照固定的间隔对波进行采样。采样的过程其实就是抽取声波中某时间点的振幅值,很显然,在一秒中内抽取得点越多,获取得振幅越多,对波形的描述就更加准确。,人耳能够感觉到的最高频率为20kHz,但人耳对这一频率的声音并不是很敏感,所以在一次振动周期中,至少有2个点的采样,就能基本满足听觉要求,也就是至少每秒进行40k次采样,用40kHz表达,这个40kHz就是采样率。
现在我们已经可以用数字来表示声波了,但这还够,我们还必须用一个固定大小的数值类型来表示每一个采样点的量化值,这个量化值叫做“位率”,就是通常说的“比特率”。为了方便计算机表示,位率被定为2的整数次幂,所以我们常见的CD是以每点16bit的采样点进行采样的,能表示的振幅是2的16次方,也就是-32768到32767。当然了,采样率越高越能重现波形,表现更准确的音色,但是不是位率越高越能表现更大的音量呢?事实上不是这样的,比如16位能表现最大32767的值,而8位最大表现255,但在计算机做位率的转换时,它会做一个映射,比如16位的值32767向8位转换时,它会被按比例缩小到255,这样的音量值实际上是一模一样的,只是位率越高越能体现更多的动态细节。
现在你也许注意到了一点,常见的采样率是48000、44100、22050、11025等,为什么不是50000、10000之类的呢?人耳的极限频率是20000hz,而采样率只要大于频率的2倍,人耳就能够几本分辩率出声音,所以对应于人耳的最大接受频率,同时也为了机算机方便表示,设定CD的标准采样率为44100,低于他的采样率按他的分倍数计算,大于的按48000的整数倍计算。
现在我们再来看一下音乐CD的存储方式。CD的全称是Compact Disk,是一种激光储存媒体,它用覆盖在圆形塑料片上的金属膜来存储数据。存在CD上的数据是以数字方式存储的,也就是0、1数据,每一位就是金属膜上的一个点。这些点是以同心圆的方式由里圈到外圈顺序排列的,点的凸凹带表0或1。当激光照射在盘面时,凸凹会有不同的反射,这样数据就被读了出来。音乐CD就是按照音轨的段落标签,将上面讲的数字波形数据刻到盘面上的。音频CD格式就是纯粹的数字音轨,没有校验,然而世界上不可能有完美的盘面,或多或少会有一些物理损坏,这就导致音频数据的丢失。但通常情况下这是微不足到的,很小的盘面划伤对于音乐数据的损伤连仪器都很难测出来,更不要说人耳了,但发烧友对完美的追求是无穷尽的。现在有一款软件在抓轨时就采用了重复读取求平均值的方式来提高精度,这款软件的名字叫做EAC。