首 页 | 新 闻 | 文 档 | 代 码 | 工 具 | 论 坛

Mp4Tech 首页  >  文 档  >   音频编码
 
 

MPEG1 Layer 3 原理介绍



原作者:龙帅 (loppp138@hotmail.com)

此文章为便携式多媒体技术中心提供,未经站长授权,严禁转载,但欢迎链接到此地址。

1、Mp3的文件结构

Mp3的文件结构如下图所示:

mp3文件结构
mp3文件结构

Mp3码流是图中绿色的部分并不包括ID3信息,但现在的Mp3文件格式通常都包含ID3信息,用以记录Mp3的各种信息。于是在对Mp3文件解码时,还需要对ID3信息进行解复用。

Mp3的编码器的数据流和控制流如下图所示:

mp3编码数据流和控制流

mp3编码数据流和控制流

2、混合多相滤波器(Hybrid Polyphase FilterBank)

混合多相滤波器(也称为合成多相滤波器,上图简化称为滤波器组)的作用是将输入的时域PCM码流转化为分为若干子带的频域值。

mp3编码的输入和输出信号是什么?mpeg layer3 编码的输入信号是PCM码流,输出是Mp3码流

为什么要将PCM时域值转化为频域值?这是因为这样可以去除时域值的相关性。

为什么时域值会有相关性?这里的相关性是指邻近的时域采样点具有相似的振幅。因为自然世界中同一个音源的声音绝大多数都是连续变化的,这样就使得最终合成的声音的采样值在很大程度上都是具有相关性的。即使在较大的时间尺度上不是,将它划分成非常小的时间区间后,前一个时间区间和后一个时间区间都是具有相似的振幅的(即导数存在,不为无穷大)。

为什么要去除时域值的相关性?这是因为这样更利于提高一组采样值的编码效率。想像一下一个正弦波信号

y(t) = Asin(wt + phi)

的n个采样点,如果对它每个时域值进行编码,则需记录下n个采样点的振幅值,但如果用频 频进行编码,则只用记录下w、A和phi即可,这就像是找到了一组数据的规律一样,用最小的代价记录下了这n个振幅值。

如果这并不是一个标准的正弦波,则可以想像,对n个采样点的记录可以分为两个部分:(1)记录下规律的部分(2)记录下剩下的不规律的部分。无论如何只要有(1)的步骤存在,其编码效率必然大于时域编码。

混合多相滤波器组是由多相滤波器组(Polyphase filterbank)和MDCT滤波器组合而成的。其中多相滤波器组是所有MPEG1音频都会用到的滤波器组。


Polyphase
多相滤波器组工作原理图

多相滤波器组

多相滤波器组通过一组带通滤波器(FIR滤波器)将输入的1152个采样值在频域上划分成32个相等的子带,每个子带有36个采样值。注意这并非是无损转化,即使不通过量化,这种转化也将带来音质的损失,只是在特殊的设计下音质的损失非常小,几乎难以察觉。

MDCT(Modified Discrete Cosine Transform 改进的离散余弦变换)滤波器

MDCT
改进的离散余弦变换滤波器工作原理图

MDCT滤波器对多相滤波器组造成的滤波缺陷作出补偿,和多相滤波器一同构成混合滤波器,混合滤波器可以针对信号特性进行较好的匹配(比如依赖于信号特性的长短块转换)。

MDCT滤波器将32个子带中每一个子带的的信号在频域上进一步划分,长块进行18点(18个频域采样点)的MDCT变换,短块进行6点(6个频域采样点)的MDCT变换。

长块

长块是指对18个采样点进行一次MDCT变换的一组采样值,相对于只对6个采样值进行变换的短块来说,采样点组成的“块”似乎更“长”故命名为长块。在相同的频域范围内,由于长块的采样值更多,所以会有更高的“频域分辨率”(这里可以想像同一屏幕下640*480的分辨率大于320*240的分辨率)。而相对的,由于是对18个点进行运动平均(running average)(请参阅FIR滤波器特性)的原因,在时间上变化的处理就不如短块(只有6个点)来得及时,准确,所以会有更低的“时域分辨率”。(想象一头大象不可能像一只老鼠那样在变速跑动)

每一个子带的18个频域采样值组成的长块被MDCT滤波器转化成为18个频域系数,总共得到32*18 = 576个频域系数(也要频率线)。每个系数代表了在48kHz采样率下的41.67Hz的带宽。相邻的转换窗(采样器指定的采样点个数,参看信号处理中窗的概念)会有50%的重叠,所以窗的长度为36个采样点。

短块

短块有更高的时域分辨率,即对短时间变化较大的声音能有更精确的拟合能力。每个子带被转化为6个频域参数,总共得到32*6 = 192个频域系数(也叫频率线),每个系数代表了48kHz采样率下的125Hz的带宽。同上,相邻的转换窗(参看信号处理中窗的概念)会有50%的重叠,所以窗的长度为12个采样点。

到底是用长块还是用短块?长短块的转换依赖于心理声学模型。

长短块和混合块都是必需的吗?不,完全可能在一帧数据(1152个采样点)中完全是长块或完全是短块或是完全是混合块。

MDCT是否也会造成声音信号的丢失?MDCT滤波器的变换是无损(声音内容不会丢失)的。

为什么要进行混迭还原(Alias Reduction)?一旦经过MDCT变换,由多相滤波器引起的频域中的音频信号混迭(aliasing)将会被部分消除掉。在解码时则需要对这些混迭进行还原(alias reduction)以使得合成多相滤波器能够顺利地重建原来的声音信号。

3、心理声学模型

心理声学模型应用在Mp3的目的是使得mp3编码变换所造成的声音质量损失是“不可察觉”的。众所周知跟APE不一样,mp3编码是一种有损编码,这是因为要想让mp3文件方便传输、携带,文件必须缩小。关键的问题在于,如何使得在文件缩小的同时还能最大程度地保证声音质量。从mp3的普及程度来看,mp3编码很好的做到了这一点。而这里的关键技术就在于心理声学模型的引入。

心理声学模型是大量听觉实验的结果抽象出来的一种算法。它的核心在于对输入的一组采样值计算出可允许(“不可察觉”)的量化误差。

临界带(Critial band 又称为临界频带)

临界带是指用噪声产生人刚好能听到的某个频率时,噪声的频带宽度,也就是说仅有频率分量落入某个临界带中时,人才能感受到这个频率。人的耳朵能感受许多不同的频率,也即人耳的听觉频谱可划分成为不同的临界带,在相同的临界带中人的听觉感知能力是相似的,即觉得在这一范围内的声音频率是相似的。这样,在大量实验后,在20Hz到20kHz(人的听觉上下限)之间就划分出了25个不同的临界带。如下图所示:

关键频带
临界频带

关键频带频谱
临界频带频谱

绝对听觉阈值

在不同频率下人耳能察觉到的响度是不一样的,在20Hz到20kHz之间某一频率对应的响度值如果太低,人耳就不能听到,人耳刚好能哆听到的这一响度值被称为“绝对听觉阈值”。绝对听觉阈值的频谱如下图所示,它表示了人耳在不同频率下能听到的声压大小。

绝对听觉门限
绝对听觉门限

遮掩效应(Masking Effect)

遮掩效应简单的说是指原本人耳能听到的声音因为声音信号间的互相影响而变得听不到了。

遮掩效应是人耳听觉系统的一个重要特性,正是因为这个效应的存在,使得mp3编码去除了大量的人耳察觉不到的信息,因此声音信号编码在大幅度缩减后还能保证人耳几乎察觉不到的音质损失。

遮掩效应分为两种,时域遮掩和频域遮掩。

时域遮掩(Temporal Masking)

时域遮掩是指两个声音信号因为在时间上的相邻性而发生遮掩效应。

时域遮掩又分为三种:前遮掩(Pre Masking)、同时遮掩(Simultaneous Masking)和后遮掩(Post Masking) 分别对应于原始信号对于干扰信号所处的三种不同位置。如下图所示:

时域遮掩
时域遮掩

这幅图表示了一个Masker信号对于在它前面的信号,和它同时的信号,在它之后的信号的影响强度。显然,绿色部分中,声音信号将被遮掩。

后遮掩比前遮掩的时间更长,影响更大。由图可见,后遮掩对信号的影响时间持续了超过160ms,而前遮掩仅持续了20ms。

频域遮掩(Frequency Masking)

频域遮掩效应指的是在具有相邻频域的信号也会发生遮掩效应。

一个声音信号如果它的声压超过了绝对听觉阈值,则将会被人耳听到,但如果跟它频率相近而声压更大的声音信号存在,则将可能会变得不可察觉(想象一下在嘈杂的市场上常常听不清朋友说话)如下图所示:

频域遮掩
频域遮掩

图中可以看到绝对听觉阈值(Threshold in Quiet)、没有被遮掩的声音信号(Non-masked Sound),遮掩信号(Masker) 、遮掩阈值(Masking Threshold)、被遮掩的声音信号(Masked Sound)。可以看到,遮掩信号改变了人耳能够听到的听觉阈值, 只有高于遮掩阈值(Masking Threshold)的声音(图中绿色的声音信号)才可以被听到,低于遮掩阈值的声音(图中紫色声音信号)人耳不能察觉。于是mp3的心理声学模型将丢弃不可听到的紫色声音信号,而对于可以听到的绿色声音信号仅对其在遮掩阈值以上的部分进行编码,使得编码效率大大提高。

MP3用了哪些心理声学模型?MPEG1标准推荐了两个心理声学模型,这里简称为I型和II型。理论上MPEG1 Layer 1, 2,3 都可以使用任意一个心理声学模型,但实际应用的结果是Layer 1和Layer 2一般使用心理声学模型I, Layer 3一般使用心理声学模型II

心理声学模型是必须的吗?不是必须的,心理声学模型的作用只是用来提高编码效率,减少声音信号的数据冗余。在需要快速编码而不担心编码大小的场合,完合可以使用不带心理声学模型的编码器。

解码器和编码器都要使用心理声学模型?不,解码器完全不需要心理声学模型,心理声学模型仅在编码器中使用。

心理声学模型II如何使用1024点的FFT去变换1152个信号的?心理声学模型II使用了两次FFT变换,第一次计算前1024个点,第二次计算剩余部分。

乐音指数(tonal index)是什么?音调指数是心理声学模型中使用的,表示一个声音信号是否更像乐音(基音及泛音的正弦信号叠加)还是更像噪音(杂乱无章的正弦信号叠加)。

为什么心理声学模型II要使用乐音指数?因为乐音和噪音的遮掩能力是不相同的。虽然心理声学模型II并不明确区分一个声音信号是乐音还是噪音,但它会使用乐音指数来对遮掩进行计算。

心理声学模型II的处理流程

心理声学模型的处理流程是:

1.)对输入的1152个信号的每一半进行一个1024点的FFT(Fast Fourier Transform快速傅叶变换),选择两半中最低的一个遮掩阈值作为此子带的遮掩阈值。

2.)每个频率线均被映射到其对应的临界频带上。

3.)计算乐音指数。

4.)使用一个定义好的扩展函数来计算每个声音信号对相邻临界频带的遮掩效应。

5.)计算每个子带最终的遮掩阈值。

6.)计算每个子带的信掩比(SMR,Signal-to-Mask Ration)并将信息传递给量化器。

3、量化

量化的mp3采用的是非均匀量化(Non-uniform Qualization) 。这里的非均匀和在英语中的Non-uniform 指的是量化的时候是一种非线性的量化关系,实际上,mp3压缩采用了下面的公式:

mp3量化公式

其中xr(i)是量化前的频域响度,可以看到它和输出的量化值ix(i)是非线性关系, nint指四舍五入地取整数,stepsize是要调整的量化步阶,可由下式求得:

其中

量化主要的时间复杂度在于高整量化步阶,由于其输出不能高于 14(哈夫量编码表最大值)+8191(哈夫曼编码最大附加量化值linbits)=8207 ,所以这里必须调整量化步阶使量化值小于8207。

 

 


联系我们
便携式多媒体技术中心
All Rights Reserved