实验六 MPEG音频编码实验

来源:互联网 发布:linux修改文件字符集 编辑:程序博客网 时间:2024/06/14 08:22

代码晚上补

MPEG音频压缩几个基本概念:

  • 人耳听觉特性
  • 临界频带
  • 感知子带编码

人耳听觉特性

  1. 人类听觉系统大致等效于一个在0Hz到20KHz频率范围内由25个重叠的带通滤波器组成的滤波器组。人耳不能区分同一频带内同时发生的不同声音;
  2. 人耳频带被称为临界频带(critical band);500Hz以下每个临界频带的带宽大约是100Hz,从500Hz起, 临界频带带宽线性增加。

这里写图片描述

临界频带

  • 临界频带是指当某个纯音被以它为中心频率、且具有一定带宽的连续噪声所掩蔽时,如果该纯音刚好被听到时的功率等于这一频带内的噪声功率,这个带宽为临界频带宽度。

  • 掩蔽效应在一定频率范围内不随带宽增大而改变,直至超过某个频率值。通常认为从20Hz到16kHz有25个临界频带,单位为bark,1 Bark = 一个临界频带的宽度

这里写图片描述

感知编码的基本思路:

核心思想是根据心理声学模型: 听觉系统中存在一个听觉阈值电平,低于这个电平的声音信号就听不到。听觉阈值的大小随声音频率的改变而改变。一个人是否听到声音取决于声音的频率,以及声音的幅度是否高于这种频率下的听觉阈值。

听觉掩蔽特性:即听觉阈值电平是自适应的,会随听到的不同频率声音而发生变化。一种是1000Hz的声音,另一种是1100Hz的声音。但它的强度比前者低18dB。声音压缩算法可以确立这种特性的模型来取消更多的冗余数据。

这里写图片描述

频域不同掩蔽类型的讨论:
这里写图片描述


MPEG-I 标准定义了两个模型

  • 心理声学模型1:
    计算复杂度低,但对假设用户听不到的部分压缩太严重
  • 心理声学模型2 :
    提供了适合Layer III 编码的更多特征,实际实现的模型复杂度取决所需要的压缩因子,如大的压缩因子不重要,则可以完全不用心理声学模型。此时位分配算法不使用SMR(Signal Mask Ratio),而是使用SNR。

心理声学模型1

1、将样本变换到频域
2、确定声压级别
3、考虑安静时阈值
4、将音频信号分解成“乐音(tones)” 和“非乐音/噪声”部分:因为两种信号的掩蔽能力不同。
这里写图片描述
模型1:根据音频频谱的局部功率最大值确定乐音成分,局部峰值为乐音,然后将本临界频带内的剩余频谱合在一起,组成一个代表噪声频率(无调成份)。
5、音调和非音调掩蔽成分的消除
利用标准中给出的绝对阈值消除被掩蔽成分;考虑在每个临界频带内,小于0.5Bark的距离中只保留最高功率的成分。
6、单个掩蔽阈值的计算
音调成分和非音调成分单个掩蔽阈值根据标准中给出的算法求得。
7、全局掩蔽阈值的计算
某一频率点的总掩蔽阈值可通过该点的绝对掩蔽阈值与单独掩蔽阈值相加来获得。还要考虑别的临界频带的影响。一个掩蔽信号会对其他频带上的信号产生掩蔽效应。这种掩蔽效应称为掩蔽扩散。
这里写图片描述
8、每个子带的掩蔽阈值
——–选择出本子带中最小的阈值作为子带阈值
——–对高频不正确——高频区的临界频带很宽,可能跨越多个子带,从而导致模型1将临界带宽内所有的非音调部分集中为一个代表频率,当一个子带在很宽的频带内却远离代表频率时,无法得到准确的非音调掩蔽值。但计算量低。
9、计算每个子带信号掩蔽比(signal-to-mask ratio)
SMR=信号能量/掩蔽阈值


MPEG-1音频编码器框架图

这里写图片描述

多相滤波器组(Polyphase Filter Bank)作用:将输入信号分成32个临界频带
这里写图片描述
心理声学模型(Psychoacoustic Model):计算信号中不可听觉感知的部分,计算噪声遮蔽效应
比特分配器(Bit Allocator):根据心理声学模型的计算结果,为每个子带信号分配比特数
装帧(Frame Creation):产生MPEG-I兼容的比特流
子带划分方法:线性划分;按临界频带划分
编码机制:PCM、ADPCM、VQ
量化&编码
1. 子带编码工作原理首先用一组带通滤波器组将输入信号分成若干个子带信号,进行频谱平移、取样以及各子带分别进行量化编码,再将各子带的编码值合路变成全频带信号传送给接收端。在接收端把总的编码分成各子带的编码值,分别解码,再经频谱平移,带通滤波,最后相加得到重建信号。
2. 不同子带承载不同数量的感知信息,不太重要的子带可以用较低码率下采样,且可以采用较粗糙的量化粗量化,运载最重要信息的子带用高质量编码。
3. 比特分配对总质量影响极大,感知边界之外的带宽可以被抛弃。
4. 在低频子带中,为了保护音调和共振峰的结构,就要求用较小的量化阶、较多的量化级数,即分配较多的位数来表示样本值。而话音中的摩擦音和类似噪声的声音,通常出现在高频子带中,对它分配较少的位数。
计算比特分配Rk,使得给定码率R下失真D最小
这里写图片描述

通过子带分析滤波器组,使信号具有高的时间分辨率,确保在短暂冲击信号情况下,编码的声音信号具有足够高的质量,同时信号通过FFT运算具有高的频率分辨率,因为掩蔽阈值是从功率谱密度推导出的。

傅里叶变换的局限性

1. 缺乏时频定位功能,不适合分析非平稳信号。
2. 时频分辨率的矛盾:时域上采样时间越短,保持高的时域分辨率,但此时频谱展宽频域分辨率必然下降。时频分析的矛盾是编码算法需要考虑解决的关键点。

Layer I:
每帧含384个样本数据,每帧由32个子带分别输出的12个样本值组成
采用线性子带划分
使用频域掩蔽特性
SMR使用全局掩蔽阈值

Layer II:
每帧包含1152个样本。低、中、高频段对比特分配不同,分别用4、3、2比特。比特流中增加了一个比特因子选择信息域,解码器根据这个域的信息可知道是否需要以及如何共享比例因子
采用线性子带划分
使用频域掩蔽和时域掩蔽特性
SMR使用全局掩蔽阈值

Layer III(即MP3):
每帧数据包含1152个样本(32x12x3)
采用临界频带划分子带
使用频域掩蔽和时域掩蔽特性,还考虑立体声冗余特性
增加Huffman编码进一步压缩数据
另外:
第3层使用的滤波器组是多相/MDCT混合滤波器组,并且使用了心理声学模型2来评估掩蔽门限,除了考虑使用频域掩蔽特性和时间掩蔽特性之外,还考虑了立体声数据的冗余。
为了增加编码增益,采用了非均匀量化和Huffman编码,并且使用了称为比特池的缓存技术来维持编码效率和使量化噪声保持在掩蔽门限以下。

LayerIII编码框图:
这里写图片描述


Layer I 码率分配:
在调整到固定的码率之前先确定可用于样值编码的有效比特数,.这个数值取决于比例因子、比例因子选择信息、比特分配信息以及辅助数据所需比特数。
比特分配的过程:对每个子带计算掩蔽-噪声比MNR,是信噪比SNR与信掩比SMR的差值
MNR = SNR – SMR(dB)

比特分配算法:
使整帧和每个子带的总噪声-掩蔽比最小,循环分配可用比特数直到没有比特可用。MNR=SNR-SMR 表示波形误差与感知测量之间的误差。比特分配的过程是使整个一帧和每个子带的总噪声-掩蔽比最小,这是一个循环过程,每一次循环使获益最大的子带的量化级别增加一级,当然所用比特数不能超过一帧所能提供的最大数目。

这里写图片描述
SMR=掩蔽音/最小掩蔽阈值
如:最小掩蔽阈值↑被掩蔽音(noise)↓SMR↓ →:MNR↑降低量化深度

  1. 对最低MNR的子带分配比特,使获益最大的子带的量化级别增加一级。
  2. 重新计算分配了更多比特子带的MNR
  3. 返回步骤1继续分配直至比特数为0

这里写图片描述
1、输入以12个样本为一组,每组样本经过时间-频率变换之后进行一次比特分配并记录一个比例因子(scale factor)。
2、比特分配信息告诉解码器每个样本由几位表示,比例因子用6比特表示,解码器使用这个6比特的比例因子乘逆量化器的每个输出样本值,以恢复被量化的子带值。比例因子的作用是充分利用量化器的量化范围,通过比特分配和比例因子相配合,可以表示动态范围超过120dB的样本。
3、第2层中,量化级别的数目随子带的不同而不同,但量化等级仍然覆盖了3~65535的范围,同时子带不被分配给比特的概率增加了,没有分配给比特的子带就不被量化。低频段的量化等级有15级,中频段7级,高频段只有3级。


装帧编码

子带样本产生以及数据成帧示意图:
这里写图片描述

  1. 帧头(Header):每帧开始的头32个比特,包含有同步和状态比特流信息,在所有层都相同,同步码字为12bit全1码(1111, 1111, 1111)。
  2. 误码检测CRC:使用一种16bit奇偶校验字,可供在比特流中作检测误码用。在所有层都相同
  3. 声音数据:由比特分配表、比例因子选择信息、比例因子和子带样值组成,其中子带样值是声音数据的最大部分。每层声音数据不同。
  4. 辅助数据:用作辅助数据比特流

实验要求:

  1. 理解程序设计的整体框架
  2. 理解感知音频编码的设计思想
    ————–两条线
    ————–时-频分析的矛盾!
  3. 理解心理声学模型的实现过程
    ————–临界频带的概念
    ————–掩蔽值计算的思路
  4. 理解码率分配的实现思路
  5. 输出音频的采样率目标码率
  6. 选择某个数据帧,输出
    ————–该帧所分配的比特数
    ————–该帧的比例因子
    ————–该帧的比特分配结果
原创粉丝点击