【实验七】MPEG音频编码实验

实验七、MPEG音频编码实验

一、概述

    1.实验目的:

    在理解了感知音频编码的设计思想后,理解程序设计的整体框架,并在此基础之上成功调试编码器,要求能够选择某一帧,并输出该帧所分配的比特数以及该帧的比例因子和比特分配结果。

    2.文章概述:

    本文先简单介绍一下感知音频编码系统的框架,并在此基础之上简单介绍MPEG音频编码器的程序框架,并从帧的比例因子与比特分配结果来简单分析感知音频是如何实现数据压缩的。

二、感知音频编码系统的框架

    1.感知音频编码的框图

    2.感知音频编码系统的介绍

    简单观察框图我们很容易就发现感知音频编码系统的一个非常值得注意的特点,那就是未编码的音频信号进入系统后马上就分道扬镳了。在那之后音频信号既在滤波器组中被分为32个子带,又经过1024点的FFT。这让对视频编码系统更为熟悉的我们大惑不解。以往我们接触的视频编码系统视频信号都仅经过DCT或FFT变换,那么为什么在音频编码系统中要同时进行这两条线呢?

    很重要的一点是因为音频信号是一维的信号,我们在对音频信号进行压缩的时候往往不仅仅要考虑到频率分辨率的问题,更重要的是要考虑到信号的时间分辨率。在视频编码系统中往往就没有很明确的时间分辨率的概念。然而,众所周知的是,信号的时间分辨率与频率分辨率从来都是一对矛盾。当你选择了更高的频率分辨率而增加采样点(亦即增加采样点数)时,短暂冲击信号的质量就不能被确保;而为了确保短暂冲击信号而降低采样点数,则会很大程度上降低频率的分辨率使编码后的音频信号整体上的表现变差。

    因此感知音频编码系统的选择就是一个折衷,主线是一个子带滤波器,将音频信号分解为多个与人耳临界频带相仿的子带进行处理,每帧的采样点数都不大,以保证短暂冲击信号的质量;而支线则是FFT系统+心理声学模型,以牺牲统计上的同一性的条件换取人类感知上的同一性,在保证音频整体质量的条件下获得最大的压缩比。

    而其消除音频信号感知冗余的重要手段则是通过心理声学模型获得这一帧音频信号的掩蔽阈,进而通过信号的掩噪比来决定每一个子带所能分配到的比特数,实现对人耳感知不到的“不相干内容“不编码这一功能。一般人耳对低频的音频信号更为敏感,而对高频的音频信号敏感程度则一般,因此一帧中往往低频的子带会分配到更多的比特数,比特数更多也就意味着量化级数更高,量化信噪比更高,该子带的表现也会更好。

三、MPEG编码器程序的简单解读

    本次实验所调试的编码器由非常详尽的英文注释,从注释中我们不仅能很清晰地了解到本程序的架构,除此之外注释中还给出了每一个功能模块涉及的相关函数。

    本程序分为了八个功能模块:

    (1)首先对滑动窗口内的音频信号进行32子带滤波;

    (2)如果有立体声,则加入左右声道

    (3)对这一帧音频信号进行幅度上的归一化,计算这一帧的比例因子以及比例因子选择信息

    (4)使用心理声学模型对进行FFT后的音频信号进行处理,计算掩蔽电平

    (5)采用第四步获得的掩蔽电平计算掩噪比,并迭代的为这一帧中的子带分配比特,每一次为掩噪比最低的子带分配一个比特(会使该子带量化级数变高,从而影响该子带的量化信噪比),重新计算掩噪比,再分配,直到所有可用比特都被分配完)

    (6)如果需要,计算循环冗余检测CRC并加入比特流

    (7)将上述(3)(5)步中的比特分配信息,比例因子与比例因子选择信息打包并加入比特流

    (8)对子带根据比特分配信息进行量化并将他们打包加入比特流

/************************************************************************
*
* main
*
* PURPOSE:  MPEG II Encoder with
* psychoacoustic models 1 (MUSICAM) and 2 (AT&T)
*
* SEMANTICS:  One overlapping frame of audio of up to 2 channels are
* processed at a time in the following order:
* (associated routines are in parentheses)
*
* 1.  Filter sliding window of data to get 32 subband
* samples per channel.
* (window_subband,filter_subband)
*
*对滑动窗口进行滤波,每声道获得32个子带
*
* 2.  If joint stereo mode, combine left and right channels
* for subbands above #jsbound#.
* (combine_LR)
*
*如果加入立体声,以上子带需要结合左右声道
*
* 3.  Calculate scalefactors for the frame, and 
* also calculate scalefactor select information.
* (*_scale_factor_calc)
*
*为每一帧计算比例因子以及比例因子选择信息
*
* 4.  Calculate psychoacoustic masking levels using selected
* psychoacoustic model.
* (psycho_i, psycho_ii)
*
*使用选中的心理声学模型计算掩蔽电平
*
* 5.  Perform iterative bit allocation for subbands with low
* mask_to_noise ratios using masking levels from step 4.
* (*_main_bit_allocation)
*
*使用第四步获得的掩蔽电平得到掩噪比,并迭代的为掩噪比最低的子带分配比特
*
* 6.  If error protection flag is active, add redundancy for
* error protection.
* (*_CRC_calc)
*
*如果差错控制标识位是工作的,那么加入CRC循环冗余校验
*
* 7.  Pack bit allocation, scalefactors, and scalefactor select
*headerrmation onto bitstream.
* (*_encode_bit_alloc,*_encode_scale,transmission_pattern)
*
*将比特分配信息,比例因子,比例因子选择信息打包加入比特流中(边信息编码)
*
* 8.  Quantize subbands and pack them into bitstream
* (*_subband_quantization, *_sample_encoding)
*
*对子带进行量化并将它们打包加入比特流中
*
************************************************************************/

四、实验结果分析

    调试的结果是:

    音频的采样率是44.1kHz

    目标码率则是192kbps

    调试该程序的日期为7月2日,故选择了第72帧作为样本,第72帧的可用比特数为5016

    我们能很清晰的发现对于低频的子带他们的比例因子往往是较小的,然而他们所分配得的比特数比高频的多不少。这是因为低频子带的音频信号的幅度普遍上是高于高频子带的,因此在归一化的过程中他们的比例因子会更小;而根据人的主观感受,人们对音频低频的感受更为敏感,因此低频子带所分配到的比特数往往是多于更高频的子带的,然而这并不是绝对的,因为每一个子带最终能分配到的比特数还是取决于心理声学模型计算得出的掩噪比,因此像子带12比前面的子带分配到更多的比特数也是不足为奇的。

    我们结合该帧的采样点数于比特分配情况也可以计算得到大致分配了约5000bit,这与该帧的可用比特数也是大致符合的。




发布了19 篇原创文章 · 获赞 9 · 访问量 4261
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览