1. MP3 编解码算法涉及的概念
每个帧 Frame 有 2 个颗粒 Granule,或 1152 个样 Sample
每个颗粒 Granule 有 576 个样 Sample
每个颗粒 Granule 有 32 个子带 Subband
每个样 Sample 有 1 或 2 个通道 Channel
每个子带 Subband 有 18 个样 Sample
子带编码 Subband Coding
下降采样 Downsampling
多率信号处理 Multirate Signal Processing
差分脉冲编码调制 DPCM
频率响应 Frequency Response
量级、大小(dB) Magnitude
过滤器组 Filter Bank
频率划分 Frequency separation.
时间到频率的影射 Time to frequency mapping.
子带滤波分析 Analysis Subband Filter
分离宽带信号为 Split the broadband signal with sampling
32个等宽的子带 frequency fs into 32 equally spaced
subbands with sampling frequencies fs/32.
子带滤波器响应 Subband Filter Response
2. 心理声学模型II
安静阈值 The Threshold in Quiet
SPL - Sound Pressure Level 声压级,是一个评测听觉刺激强度的标准
理想的临界子带 Ideal Critical Bands
人耳对不同频率的分辩率是不同的 Different frequency resolution in human hear.
Bark : unit of critical bands.
Frequency translation to Bark :
每个临界子带的带宽 Bandwidth of each critical bands :
频域掩蔽 Frequency Masking
MNR(m) = SNR - SMR(m)
时域掩蔽 Temporal Masking
* 在一个很短的时间内,若出现了两个声音,不论声音出现的先后顺序,其中 SPL较大
的声音(遮噪者,masker)会遮蔽SPL较小的声音(被遮噪者,maskee);
* 这时 SPL较大的声音在时轴上会产生两种遮蔽效应:
若 maskee 出现在前,称为 pre-masking;反之则称为 post-masking
其他的声音若出现在掩蔽中,就会被遮蔽。值得注意的是post-masking所影响的时间
较长,至少有160ms,而pre-masking大约只有post-masking十分之一的时间;
* 时轴上的遮蔽效应重要之处在于能够让前迴音(pre-echo)的杂讯不被人耳察觉;
Pre-echo Noise Cancellation
感知熵 PE Perceptual Entropy
压缩的限度 Limit on compressibility. PE 的单位是 bits/sample,代表每个取样在
维持CD音质的前提下,能够压缩到最低的位元数。
建议 CD 质量的熵为 2.1;Suggest CD quality at 2.1bits/sample.
窗跳转状态图 Window Switch:
No Attack
+--------------------------------------------------+
| ___ |
V Attack Attack \/ \ No Attack |
Normal --------> Start --------> Short ----------> Stop
/\ / A |
\__/ | Attack |
NA +--------------------------------+
颗粒熵 Limit on compressibility of a granule.
每颗粒 576 样,要达到 CD 质量,最少 PE > 576*2.1 > 1209
取窗决策: 如果 PE > 1800 选择短窗;否则取长窗
3. MP3 编码流程
| +------------+ +------+ +-----------------+ +-----------+ |
Digital | | 32-Channel | | | | Bit Allocation | | | |
Audio | -> | Polyphase | -> | MDCT | -> | Loop | -> | Bitstream | |
Signal | | Analysis | | | | Quantization | | Formating | |
| | Filterbank | | | | Huffman Coding | | | |
| +------------+ +--^---+ +--^---------+----+ | | |
| | | | | | |
| +--------------------+---+ | +------V----+ | | | Coded
| -> | Psychoacoustic | ------+ | Coding of | -> | | -> | Audio
| | Model II | | Side Info | | | | Data
| +------------------------+ +-----------+ +-----------+ |
编码的四个主要部分:
- 滤波器组 The Filterbank
* 分析子带过滤器 Analysis Subband Filter
* 修饰离散傅立叶变换 MDCT (Modified Discrete Cosine Transform)
- 心理声学模型II The Psychoacoustic Model II
- 比特或噪音分配 Bit or Noise Allocation
* 非均衡量化 Non-uniform quantization
- 比特流格式器 The Bitstream Formatter
* 霍夫曼编码 Huffman coding
MDCT 含三部分:
MDCT Window 窗框,取窗类型 : Normal, Start, Short, Stop
* 正常窗 Normal : 较好的频率解析度
* 短窗 Short : 较好的时间解析度
* 动态窗口 : 动态自适应取窗动态适配输入子带信号
DCT 离散余弦变换
* 窗框的选择是依据是第二声响心理模型分析音讯特性之后所得到的资讯,
* 在一般音讯稳定的情形下,使用长窗框来提供最细的频谱解析度。
* 然而当子频带讯号变动大时,需变化窗框长度以提供较精细的时间轴(pre-echo)杂讯不被
人耳察觉。Short window, 12点;others, 36点。
Anti-alias 长窗框的假象处理
* 在使用长窗框得到较细的频谱解析度时,同时会有假象(Aliasing)的产生。
* 由于滤波器排的特性,当原始音讯被分成32个子频带时,在频谱上可见邻近的子频带间有
明显的重叠现象,而处于重叠区间的讯号将会同时影响两个子频带。
* 所以在经过MDCT转成频线讯号时,需对邻近相对应的频线讯号做特别处理,以减少因假象
所造成的杂讯,影响音讯品质。
* 假象处理的方式是将处在相对应位置的频线之能量做一定比例的增减。
4. 比特和噪声分配 BANA - Bit and Noise Allocation
对每个颗粒最终有多少比特可用于真正的音频主数据(main data)呢?
每帧可用来编码比特数(1152取样个数/frame)
以单声道为例,在位速128kbps且取样频率为44.1kHz时,每帧有3344个编码位元。 此外还要扣掉其它的资
料所用到的位元数,如头(header)需要32位元,而边信息(side info)需要136/256位元, 另外可选择是否
要加入16位元CRC。所以平均每帧可用来对音乐讯号编码的位元数为bits/frame,又因为实作上编码时的最
小单位为granule(一帧相当于两个granules),可以算出每个granule可用来编码的位元数为3040/2 = 1520
bits/granule。
位元分配的目的:
在于使得每个比例因子频带之遮罩杂讯比(MNR)达到最大,以得到最佳之音讯品质。其为一反覆的过程,每
次找出最小MNR的频带,分配位元给此频带以提高 MNR,接著重新计算各频带的 MNR,然后再不断重覆此调
整过程, 直到没有足够的位元可供调整因此在进行位元分配之前,需要知道可以用来编码之位元数,以及
各子频带的MNR。
比特噪声分配的流程
i Scalefactor band index
Delta Nonuniform quantizer parameter stepsize
SFi Scale factor of ith ScaleFactor band
max_bits_granule 576 * 2.1 = 1209
Noise Allocation: Given dt
Sum(i, Huffman Codeword in the ith band <= max_bits_granule
Bit Allocation: Given SFi
MNR(i, SF'i) >= MNR(i, SFi) > 0
BANA Process:
Start:
Select Delta
Quantization, Huffman Encoding
IF Coding bits < max_bits ? No Start
Distortion Calculation
Compare the masking threshold, Tuning scalefactors
IF Perform Quantization Agina ? Yes Start
Finish:
MP3编码在量化时,将频域划分成21个 scalefactorband 为单位来处理。
* 量化器对频谱量化后,计算需要多少位元来对做霍夫曼编码,若超过可用之位元数,就要调整 stepsize
的大小,如此可以降低所需的位元数。
* 决定好量化后的频线后,再和未量化前的频线做杂讯估计,
distortion(band) = Sum(i=low..high, (xr(i) - ix(i)^(4/3) * Sqrt(2,4)^step)/bandwidth(band))
其中 xr(i) 是经过MDCT转换后所得到的频线、ix(i)是量化后的结果、bandwidth(band)代表该频带的频
宽、low(band)与high(band)分别代表该频带的边界,而 ix(i)^(4/3) * Sqrt(2,4)^step 则是反量化的
运算。
5. DCT MDCT DFT 之间的关系
MPEG-1 的层次3保留层次2的 1152 采样窗口及反向兼容的FFT多相滤波器,此外,增加了一个改进的DCT滤波
器。DCT优于DFT(离散傅利叶变换)之处包括多个乘-累积运算的一半和生成系数的一半, 因为计算的正弦部
分缺省,而 DCT一般包括比较简单的数学。普通DCT的带通脉冲响应的有限长度可能会导致块边界效应。MDCT
覆盖了分析块,低通译码音频滤去了假频,从而消除了这些效应。MDCT还有一个比标准DCT高一些的变换编码
增益,而且它们的基本功能适应于更好的带通响应。
MPEG-1层次3的DCT副频带大小不等,适应于人的听觉系统的临界频带。在第3层次中,译码器必须支持恒定位
速(Bitrate)和可变位速的位流。(然而,许多层次的1和12译码器还要处理可变的位速)。最后,第3层次编码
器在归档或发送增加的无损耗压缩前要对量化系数进行赫夫曼编码,位流范围为32~320kbps,而128kbps速率
就能获得近CD音质效果,是一种能使双频道ISDN成为未来家庭的宽带传送管道的重要技术规格。
-- 作者:Brian Oipert http://www.ednc.com.cn/txt/001102.htm
6. New words, terms and commands
Psychoacoustic 心理声学
Chaotic system 混沌系统、无秩序系统
SNR - Signal Noise Ratio 信噪比
SMR - Signal-to-Mask Ratio (MPEG) 信掩比
MNR - Masked Noise Ratio 掩噪比
Granule 颗粒
MPEG-2 BC - MPEG-2 Back Compatibility 向后兼容
MPEG-2 LSF - Low Sample Frequency 低采样频率?低比特率?
SPL - Sound Pressure Level 声压级,是一个评测听觉刺激强度的标准
评论