MP3编码原理概述
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
音频压缩由编码和解码两个部分组成。把波形文件里的数字音频数据转换为高度压缩的形式(称为比特流)即为编码;要解码则把比特流重建为波形文件。
音频压缩可以分为无损(lossless)压缩和有损压缩。无损压缩就是尽量降低音频数据的冗余度,以减小其体积。音频信号经过编码和解码之后,必须要和原来的信号一致。无损压缩的压缩率是比较有限的,不过现在比较出色的APE能做到50%的压缩率(本人用Monkey's Audio 3.97,Extra High压缩模式下压缩WAV,压缩率最低能达到52%);有损压缩就是用尽一切手段,包括无损压缩用到的方法,丢掉一切能丢掉的数据,以减小体积。而音频压缩后解码听起来起码是要跟原来差不多的,有损压缩的压缩比能大幅提高,MP3就是属于有损压缩,压缩比是12:1(128kbps)。
MP3文件是由帧(frame)构成的,帧是MP3文件最小的组成单位。什么是帧?还记得最初的动画是怎么做的吗?不同的连续画面切换以达到动态效果,每幅画面就是一个“帧”,不同的是MP3里面的帧记录的是音频数据而不是图形数据。MP3的帧速度大概是30帧/秒。
每个帧又由帧头和帧数据组成,帧头记录着该帧的基本信息,包括位率索引和采样率索引(这对理解ABR和VBR编码方式很重要)。帧数据,顾名思义就是记录着主体音频数据。
上面说的都是MP3编码的基础,但事实上,早期的编码器都非常不完善,压缩算法近于粗暴,音质很不理想。MP3的音质达到现在的水平有两次飞跃:人体听觉心理学模型(Perceptual Model)的导入和VBR技术的应用。
◆人体听觉心理学模型
下面将简要介绍一下几个重要原理:
1) 最小听觉门槛判定(The minimal audition threshold)
人耳的听力范围是20Hz-20k Hz的频率范围,但是人耳对不同的频率声音的灵敏度是不同的,不同频率的声音要达到能被人耳听到的水平所需要的强度是不一样。那么通过计算,可以把音乐文件中存在但不能被人耳听到的声音去掉。通过这原理,我们还可以建立模型,把大部分数据空间分配到人耳最灵敏的2kHz 到5kHz范围,其余频率分配比较少的空间;
2) 人耳的遮蔽效应(The Masking effect)
蔽效应表现在强信号会遮蔽邻近频率的弱信号。用生活经验来说,在安静的房间中,一根针掉到地上都能听见,可到了大街上,就算手机音量调到最大,来电时也未必能听见,而手机的声音确确实实是存在的,原因就是被周围更大的声音遮蔽了。有了对遮蔽效应的研究成果,编码器就能根据已建立的数学模型,计算强信号对附近弱信号的遮蔽,把能引起人们注意的声音才保留。
人耳还有前遮蔽效应和后遮蔽效应:因为人需要一定的时间来处理声音信号,在强信号之前或之后的弱信号,会被遮蔽掉。前遮蔽效应的时间约只有
2-5ms,而后遮蔽的时间比较长,大约有100ms。利用这,我们能减小强信号之前和之后的分辨率;
3) 人耳的空间响应: 人耳对某些高频的声音的空间感很差,辨别不了声源的方向。联合立体声(Joint Stereo)应运而生:在某些频率上采用“单声道”(事实上并非真正意义上的单声道),以减小流量。
◆VBR技术
正如上面所说,MP3是由帧构成的,MP3能象动画那样读到哪放到哪,播放器不必预读整个文件的内容,即使部分数据损坏也不会对播放效果有太大影响(实际上这就是流媒体所具有的特性)。而每个帧的帧头里都包含这该帧的码率(bitrate,单位是kbps)等信息,所以,我们可以对每一段音乐甚至每一个帧定义独立的码率,这就是VBR(Variable bitrate,动态码率)技术。
与VBR向对应的是CBR(Constant bitrate)。一支交响曲,合奏大动态部分的数据量显然大于引子部分,如果用128kbps的CBR编码方式来编码,在引子部分可能有多余的数据流量,而在合奏部分却又不够,VBR就是解决这个问题的。把在不影响音质的情况下,对流量需求小的部分分配较小的码率,把冗余字节缓存起来留给有需要的部分,在短时间内提供更高的码率,以保证音乐的质量。所以说,VBR的作用是更合理的分配流量,在不增大文件体积的条件下提高声音的质量。
不过VBR在应用初期带给过MP3随生听不少麻烦。因为早期大多数MP3播放器都是针对CBR设计的,其根据文件大小来获得时长的算法对VBR失效了,因为VBR MP3的bitrate可能每时每刻都在变化。不过现在这个问题基本上不用担心了,市场上的播放器基本上都解决这问题了。
除了上面说的两方面,MP3编码还有很重要的一招:Huffman编码(Huffman 是个科学家的名字),Huffman编码广泛应用于无损压缩领域,比如我们常用的WINZIP,WINRAR等压缩软件就是以此为基础的(只能说是基础,因为这些用到的编码方法不只是Huffman编码)。Huffman编码用途就是降低数据的冗余度,可节省大约20%的空间。用WINZIP来再压缩MP3文件每什么效果就因为MP3编码的时候已经应用到采用Huffman编码。
下面我们看看编码器是怎样工作的。
1) 滤波器段(filterbank)
数字音频信号以脉冲的形式送进编码器,首先会经过一滤波器段(filterbank),它由两个串联的滤波器段组成:一个多相分析滤波器段和一个MDCT(Modified Discrete Cosine Transform,经改良的离散余弦转换),前者也应用到layer-1和layer-2中,后者是MP3独有的。
输入的音频信号在20Hz-20k Hz的频率范围内,通过第一个滤波器段后,把信号按频率分成32个小频带,称为子带(Subband)。20000Hz/32=625Hz,那么每个子带的宽度就是625Hz。人耳对不同频段的灵敏度是不同的,编码器可对不同的子带进行不同的量化分层。
不过等宽的子带并没有准确反映人耳的听觉特性,这样进行等宽划分并没有考虑到不同信号的临界宽度,也就是该信号的影响范围,以及不同信号的相互影响,所以这样会产生大量的信号重叠。MDCT转换就是为了解决这问题,它能对子带进行细分,清楚重叠部分,得到更高的频谱解析度。
2) 人体听觉心理学模型(Perceptual Model)
上面已经谈到过人体听觉心理学模型,心理学模型可以说是感受编码的重中之中,它决定着编码器的编码质量(后面谈到的LAME就拥有着大量优秀的人体精神听觉模型和数学模型)。下面将深入分析两个重要原理: 最小听觉门槛判定和遮蔽效应。
◆最小听觉门槛判定
声音其实是传播在介质中的能量波,人耳对声音能量强弱的直接感受就是听到音量的大小,也就是响度,单位是分贝(dB)。下面是人耳可听最小响度曲线: