文件压缩技术的日新月异使得MP3成为时下最烫手的音乐格式,优质的音乐随着0与1的排列迅 速散布到世界各地,撼动人心。何谓MP3?MP3的全称是MPEG Audio Layer 3,它是一种高效的计算机音频编码方案,它以较大的压缩比将音频文件转换成较小的扩展名为.MP3的文件,基本保持原文件的音质。MP3是 ISO/MPEG标准的一部分,ISO/MPEG标准描述了使用高性能感知编码方案的音频压缩,此标准一直在不断更新以满足“质高量小”的追求,现已形成 MPEG Layer 1、Layer 2、Layer 3三个音频编码解码方案。MPEG Layer 3压缩率可达1:10至1:12,1M的MP3文件可播放1分钟,而1分钟CD音质的WAV文件(44100Hz,16bit,双声道,60秒)要占用 10M空间,这样算来,一张650M的MP3光盘播放时间应在10小时以上,而同样容量的一张CD盘播放时间在70分钟左右。MP3的优势是CD难以比拟 的。
2 MP3原理浅析
2.1 MPEG Audio标准
MPEG(Moving Picture Experts Group)是ISO下的一个动态图象专家组,它制定的MPEG标准广泛应用于各种多媒体中。MPEG标准包括视频和音频标准,其中音频标准已制定出 MPEG-1、MPEG-2、MPEG-2 AAC和MPEG-4。
MPEG-1和MPEG-2标准使用同一个音频编码解码族—Layer1、2、3。 MPEG-2一个新特点是采用低采样率扩展降低数据流量,另一特点是多通道扩展,将主声道增加为5个。MPEG-2 AAC(MPEG-2 Advanced Audio Coding)标准是Fraunhofer IIS同AT&T公司于1997年推出的,旨在显著减少数据流量,MPEG-2 AAC采用的MDCT(Modified Discrete Cosine Transform)算法,采样率可在8KHz到96KHz之间,声道数可在1-48之间。
MPEG Audio Layer 1、2、3三个层使用相同的滤波器组、位流结构和头信息,采样频率为32KHz、44.1KHz或48KHz。Layer 1是为数字压缩磁带DCC(Digital Compact Cassette)设计的,数据流量为384kbps,Layer 2在复杂性和性能间作了权衡,数据流量下降到256kbps-192kbps。Layer 3一开始就为低数据流量而设计,数据流量在128kbps-112kbps,Layer 3增加了MDCT变换,使其频率分辨能力是Layer 2的18倍,Layer 3还使用了与MPEG Video类似的平均信息量编码(Entropy Coding),减少了冗余信息。MP3绝大部分使用的是MPEG-1标准。
2.2 音频压缩的目的
MP3格式始于80年代中期,德国Erlangen的Fraunhofer研究所致力于高质 量、低数据率的声音编码。让我们来看一个例子:你想对你喜欢的一首长约4分钟的歌曲采样,将其存储在磁盘上,以CD音质的WAV格式抽样,抽样率为 44.1kHz,即每秒钟接收44100个值,立体声,每次抽样数据为16位(2字节),则这首歌占的空间为:
44100x2声道x2字节x60秒x4分钟=40.4MB
如果从Internet上下载这首歌,假设传输率为56kbps,则下载时间为:
40.4x106x8/56x103x60=96分钟
即使是1M的宽带网也需5分钟以上,由此可见,音频压缩对减少音频数据的存储空间显得尤为重要。
2.3 MP3编码与解码
MP3音频压缩包含编码和解码两个部分。编码是将WAV文件中的数据转换成高压缩率的位流形式,解码是接受位流并将其重建到WAV文件中。
MP3采用了感知音频编码(Perceptual Audio Coding)这一失真算法。人耳感受声音的频率范围是20Hz-20kHz,MP3截掉了大量的冗余信号和无关的信号,编码器通过混合滤波器组将原始声 音变换到频率域,利用心理声学模型,估算刚好能被察觉到的噪声水平,再经过量化,转换成Huffman编码,形成MP3位流。解码器要简单得多,它的任务 是从编码后的谱线成分中,经过反量化和逆变换,提取出声音信号。MP3编码和解码流程如图1所示。
2.4 修正的离散余弦变换
修正的离散余弦变换(MDCT)是指将一组时域数据转换成频域数据,以得知时域变化情况。MDCT是对DCT算法的改进,。早期的快速算法是快速付立叶变换(FFT),但FFT有复数运算,MDCT都是实数运算,便于编程。
在压缩音频数据时,先将原始声音数据分成固定的分块,然后做顺向MDCT(Forward MDCT)将每块的值转换为512个MDCT系数,解压时,经反向MDCT(Inverse MDCT)将512个系数还原成原始声音数据,前后的原始声音数据是不一致的,因为在压缩过程中,去掉了冗余和不相关数据。FMDCT变换公式为:
k=0,1,…,N/2-1
式中N是转换视窗长度,即每块样本点数,N=8,16,…,1024,2048。
n0=(N/2+1)/2,X(n)为时域值,X(k)为频域值。若N取1024点,则转换成512个频域值。
IMDCT变换公式为:
n=0,1,…,N-1
MDCT本身并不进行数据压缩,它只是把信号映射到另一个域,量化才使数据得到压缩。在对量化后的变换样值进行比特分配时要考虑使整个量化块最小,这就成为有损压缩了。
3 MP3文件格式分析