MP3

来自EEWiki.

跳转到: 导航, 搜索

历史概述

MP3应该算目前使用用户最多的有损压缩数字音频格式了。它的全称是MPEG(MPEG:Moving Picture Experts Group) Audio Layer-3,1993年由德国夫朗和费研究院和法国汤姆生公司合作发展成功。刚出现时它的编码技术并不完善,它更像一个编码标准框架,留待人们去完善。早期的MP3编码采用的的是固定编码率的方式(CBR ),我们常看到的128KBPS,就是代表它是以128KBPS固定数据速率编码——你可以提高这个编码率,最高可以到320KBPS,音质会更好,自然,文件的体积会相应增大。

因为MP3的编码方式是开放的,你可以在这个标准框架的基础上自己选择不同的声学原理进行压缩处理,所以,很快由Xing公司推出可变编码率的压缩方式(VBR)。它的原理就是利用将一首歌的复杂部分用高 bitrate 编码,简单部分用低 bitrate 编码,通过这种方式,进一步取得质量和体积的统一。当然,早期的Xing 编码器的 VBR 算法很差,音质与 CBR (固定码率)相去甚远。但是,这种算法指明了一种方向,其他开发者纷纷推出自己的VBR算法,使得效果一直在改进。目前公认比较好的首推 LAME,它完美地实现了 VBR 算法,而且它是是完全免费的软件,并且由爱好者组成的开发团队一直在不断的发展完善。

而在VBR的基础上,LAME更加发展出ABR算法。ABR(Average Bitrate)平均比特率,是VBR的一种插值参数。LAME针对CBR不佳的文件体积比和VBR生成文件大小不定的特点独创了这种编码模式。ABR在指定的文件大小内,以每50帧(30帧约1秒)为一段,低频和不敏感频率使用相对低的流量,高频和大动态表现时使用高流量,可以做为VBR和CBR的一种折衷选择。

MP3编码算法及原理

图是MP3编码器的系统方框图。每声道以1152个采样值为一帧进行处理。首先,分析子带滤波采用正交镜像滤波器组,将20kHz左右带宽的信号划分成相等带宽的32个子带。然后对子带样值作MDCT以补偿子带滤波的不足,主要是为提高频率分辨率、消除由子带滤波引起的带间混迭。

image:bk063731l-1.jpg

同时采样值通过心理声学模型计算出各频带的掩蔽阈值。

失真控制循环和非归一化量化控制循环是量化编码循环过程,它通过量化减少各MDCT系数的精度,使编码比特数得以降低。不同系数采用不同的量化阶,人耳敏感的频率量化精度高,不敏感的频率量化精度低,量化误差则不会被人耳察觉。选择量化阶的依据就是心理声学模型计算出的掩蔽阈值。 最后将量化阶等信息以及霍夫曼码打包成比特流,供解码用。

人耳的听觉特性涉及生理声学和心理声学方面的问题。例如人耳对不同频率的声音感觉不同就是生理方面的问题,其中对2kHz~4kHz的声音最敏感,且低频较高频敏感。敏感程度具体体现为静态掩蔽阈值,如图2虚线所示,表示在安静的情况下,各种频率的声音刚好被听到的音量。与人的心理知觉有关的有掩蔽效应等。掩蔽效应指一个声音的听觉感受受到另一个声音影响的现象,分为时间掩蔽(前向、后向掩蔽)和频率掩蔽(同时掩蔽)。例如,当一个较强的声音停止后,要过一会儿才能听到另一个较弱的声音,这就是时间掩蔽效应。频率掩蔽是指一个声音对与其同时存在的临近频率的声音产生的影响,如图2实线所示。其中标志1的实线表示:当1kHz的掩蔽声音为60dB时,不同频率的声音刚好被听到的分贝值,可见越临近频率被掩蔽得越厉害,且低频更易掩蔽高频。 因此心理声学模型就先用FFT分析信号中包含的频率分量,将每个频率处受到其他所有频率分量掩蔽的值加起来,连线得到的曲线就是掩蔽阈值,是频率的函数。当某频率分量的能量处在曲线下方时,不能被人耳感觉到,则该频率分量可用零比特编码;另一方面,选择量化阶时若能保证量化噪声低于掩蔽曲线,也不被人耳察觉,所以掩蔽阈值越大的频率分量量化阶可以越大。因此用掩蔽阈值作为量化编码的依据,就能够保证压缩后的声音质量。由于声音信号随时间改变,因此每帧信号都要计算两次心理声学模型,其中要用到大量的实验测试数据,运算量之大是可想而知的。

image:bk063731l-2.jpg

个人工具箱
导航
支持单位