一、实验原理

1. MPEG-1声音的主要性能
  输入为PCM信号,采样率为32,44.1或48kHz,输出为 32kbps到384kbps。

2. MPEG音频编码主要流程
三个独立的压缩层次
  Layer1:编码器最简单,384kbps(4:1, 用于小型数字盒带DCC,Compact Cassette)
  Layer2:编码器复杂程度中等,256kbps~192kbps(6: 1~8:1, 用于DAB、CD-I和VCD)
  Layer3:编码器最为复杂,64kbps,用于ISDN,网络 音频。

  MPEG音频编码为同时获得较高的时域精准度与频域精准度,对信息分两条线即时域和频域分别处理,在综合获得最终结果。通过子带分析滤波器组使信号具有高的时间 分辨率,确保在短暂冲击信号情况下,编码 的声音信号具有足够高的质量; 使信号通过FFT运算具有高的频率分辨率,因为掩蔽阈值是从功率谱密度推出来的。流程图如下:

  声音压缩算法属于感知编码,可以确立心理声学特性的模型来取消更 多的冗余数据。
3.心理声学模型 :
1.听觉系统中存在一个听觉阈值电平,低于这个电平的声 音信号就听不到 。听觉阈值的大小随声音频率的改变而改变,一个人是否听到声音取决于声音的频率,以及声音 的幅度是否高于这种频率下的听觉阈值 。
2.听觉掩蔽特性。即听觉阈值电平是自适应的,会随听到的不同频率声音而发生变化 。

4.频域掩蔽域随声压级变化曲线:

5.32个子带滤波器组:
  通过子带分析滤波器组使信号具有高的时间分辨率,确保在短暂冲击信号情况下,编码的声音信号具有足够高的质量。将PCM样本变换到32个子带的频域信号:如果输入的采样频率为48kHz ,那么子带的频率宽度为48/ (2*32 )=0.75Hz
该多相滤波器组为如下图:

6.比例因子的取值和编码:
  对各个子带每12个样点进行一次比例因子计算。先定出12个 样点中绝对值的最大值。查比例因子表中比这个最大值大的 最小值作为比例因子。用6比特表示。
  第2层的一帧对应36个子带样值,是第1层的三倍,原 则上要传三个比例因子。为了降低比例因子的传输码率, 采用了利用人耳时域掩蔽特性的编码策略:
  每帧中每个子带的三个比例因子被一起考虑,划分成 特定的几种模式。根据这些模式,1个、2个或3个比例因 子和比例因子选择信息(每子带2比特)一起被传送。如 果一个比例因子和下一个只有很小的差别,就只传送大 的一个,这种情况对于稳态信号经常出现。
  使用这一算法后,和第1层相比,第2层传输的比例因 子平均减少了2个,即传输码率由22.5Kb/s降低到了 7.5Kb/s。

7.比特分配及编码:
  在调整到固定的码率之前先确定可用于样值编码的有效比特数。这个数值取决于比例因子、比例因子选择信息、比特分配信息 以及辅助数据所需比特数 。

比特分配的过程 :
1、对每个子带计算掩蔽-噪声比MNR,MNR = SNR –SMR (dB)
2、对最低MNR的子带分配比特,使获益最大的子带的量化级别增加一级
3、重新计算分配了更多比特子带的MNR
循环,直到没有比特可用。使整帧和每个子带的总噪声—掩蔽比最小。第1层一帧用4比特给每个子带的比特分配信 息编码;而第2层只在低频段用4比特,高频 段则用2比特。

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

二、关键代码分析

实验流程一再原理部分中说明,下面直接分析关键代码。

#ifdef NEWENCODEsf_transmission_pattern (scalar, scfsi, &frame);main_bit_allocation_new (smr, scfsi, bit_alloc, &adb, &frame, &glopts);//main_bit_allocation (smr, scfsi, bit_alloc, &adb, &frame, &glopts);if (error_protection)CRC_calc (&frame, bit_alloc, scfsi, &crc);write_header (&frame, &bs);//encode_info (&frame, &bs);if (error_protection)putbits (&bs, crc, 16);write_bit_alloc (bit_alloc, &frame, &bs);//encode_bit_alloc (bit_alloc, &frame, &bs);write_scalefactors(bit_alloc, scfsi, scalar, &frame, &bs);//encode_scale (bit_alloc, scfsi, scalar, &frame, &bs);subband_quantization_new (scalar, *sb_sample, j_scale, *j_sample, bit_alloc,*subband, &frame);//subband_quantization (scalar, *sb_sample, j_scale, *j_sample, bit_alloc,//    *subband, &frame);write_samples_new(*subband, bit_alloc, &frame, &bs);//sample_encoding (*subband, bit_alloc, &frame, &bs);
#else
/*add by Alfred*/
if(frameNum==200)
{int k,t,i;fprintf(result,"采样率=%.1f khz\n",s_freq[header.version][header.sampling_frequency]);fprintf(result,"目标码率=%d kbps\n", bitrate[header.version][header.bitrate_index]);fprintf(result,"第%d帧\n",frameNum);fprintf(result,"可用比特数=%d\n",adb);fprintf(result,"比例因子:\n");for(k=0;k<nch;k++){fprintf(result,"声道[%d]\n",k);for(i=0;i<frame.sblimit;i++){fprintf(result,"子带[%d]:",i);for(t=0;t<3;t++){fprintf(result,"%d\t",scalar[k][t][i]);}fprintf(result,"\n");}}}
/*end by Alfred*/transmission_pattern (scalar, scfsi, &frame);main_bit_allocation (smr, scfsi, bit_alloc, &adb, &frame, &glopts);
/*add by Alfred*/
if(frameNum==200)
{int k,i;fprintf(result,"比特分配:\n");for(k=0;k<nch;k++){fprintf(result,"声道[%d]\n",k);for(i=0;i<frame.sblimit;i++){fprintf(result,"子带[%d]:%d\n",i,bit_alloc[k][i]);}}
}
/*end by Alfred*/if (error_protection)CRC_calc (&frame, bit_alloc, scfsi, &crc);encode_info (&frame, &bs);if (error_protection)encode_CRC (crc, &bs);encode_bit_alloc (bit_alloc, &frame, &bs);encode_scale (bit_alloc, scfsi, scalar, &frame, &bs);subband_quantization (scalar, *sb_sample, j_scale, *j_sample, bit_alloc,*subband, &frame);sample_encoding (*subband, bit_alloc, &frame, &bs);#endif

三、实验结果

输出一个“.txt”文件。

数据压缩实验六 MPEG音频压缩编码相关推荐

  1. 【数据压缩实验六--MPEG】

    数据压缩实验六--MPEG 感知音频编码设计思想 多相滤波器组 心理声学模型 临界频带 掩蔽值计算 心理声学模型I的具体过程 码率分配 LayerI LayerII 实验过程 输出音频的采样率和目标码 ...

  2. 实验六 MPEG音频编码

    一.MPEG音频编码原理 1.1 基本思想 分析信号,去掉不能被感知的部分[声音压缩算法可以确立这种特性的模型来取消更多的冗余数据] 子带分析滤波器组:使信号具有高的时间分辨率[短暂冲击信号情况下,编 ...

  3. 实验六|MPEG音频编码实验

    MPEG-1 Audio LayerII编码器原理 多相滤波器组(Polyphase Filter Bank):将PCM样本变换到32个子带的频域信号 心理声学模型(Psychoacoustic Mo ...

  4. 数据压缩实验之 MPEG音频编码

    文章目录 1.理解感知音频编码的设计思想 1.1 两条线 1.2 时-频分析的矛盾 2.理解心理声学模型的实现过程 2.1 临界频带的概念 2.2 掩蔽值计算的思路 2.2.1 什么是声音的" ...

  5. 数据压缩实验五 MPEG音频编码

    一.程序设计整体框架 二.感知音频编码的设计思想 感知编码是利用人耳听觉的心理声学特性(频谱掩蔽特性和时间掩蔽特性),人耳对信号幅度.频率.时间的有限分辨能力,凡是人耳感受不到的成分不编码,不传送.对 ...

  6. 数据压缩实验七——MEPG音频编码

    实验原理 编码器说明 输入声音信号经过一个多相滤波器组,变换到多个子带.同时经过"心理声学模型"计算以频率为自变量的噪声掩蔽阈值.量化和编码部分用信掩比SMR决定分配给子带信号的量 ...

  7. 数据压缩实验八:MPEG音频压缩编码

    一.MPEG编码概述 1.1 关于MPEG 1.1.1 整体框架 多相滤波器组:将PCM样本变换到32个子带的频域信号.如果输入的采样频率为48kHz,那么子带的频率宽度为48kHz/(2*32)=0 ...

  8. 【数据压缩】第八次作业——MPEG音频编码

    MPEG音频编码实验 文章目录 MPEG音频编码实验 MPEG介绍 MPEG-1声音的主要性能 心理声学模型 人耳听觉特性 临界频带 掩蔽值 心理声学模型Ⅰ MPEG-1 编码原理 基本思想 整体框架 ...

  9. 第八次作业——MPEG音频编码

    MPEG介绍 MPEG标准主要有以下五个,MPEG-1.MPEG-2.MPEG-4.MPEG-7及MPEG-21等.该专家组建于1988年,专门负责为CD建立视频和音频标准,而成员都是视频.音频及系统 ...

最新文章

  1. 我怎样才能参加比特币现金9月1日压力测试?
  2. Web框架之Django_04 模板层了解(过滤器、标签、自定义过滤器、标签、inclusion_tag、模板的继承与导入)
  3. c#调用.exe程序
  4. 5G 改变社会的真相在这里!
  5. 项目还有哪些优化的地方
  6. Input标签牲描述
  7. 常见的拉普拉斯变换对 - 对查表
  8. java gson解析JSON
  9. 开放电脑站点81端口
  10. 人工智能 - 电子书下载(高清版PDF格式+EPUB格式)
  11. TCP 的那些事 | SACK
  12. 懂23种语言 2019年上市 宝马的AI助理有哪些不同!
  13. 薅羊毛的最高境界,解放你的双手
  14. JAVA Bean 查询
  15. python画图没有线_python画图吐血大集合
  16. 2014年计算机初级应用考试是,2015年9月一级计算机基础及MSOffice应用真考试卷及答案(1)...
  17. 7-8 逆序输出英文语句
  18. 史上最強英語資料網站大全
  19. “内网危机”直击企业要害 北信源筑牢企业内网安全高墙
  20. springboot毕设项目农产品交易平台系统jo7b7(java+VUE+Mybatis+Maven+Mysql)

热门文章

  1. 4-3 移动字母 c语言,四线三格的26个字母书写格式
  2. (dll下载网站推荐)由于找不到msvcr120D.dll,程序无法执行的解决方案
  3. 2001年日语四级能力考试答案
  4. 龙芯平台stream编译错误问题解决
  5. 汉唐归来博客新地址,汉唐归来博客内容移入到红德智库
  6. dw重新定义html标记,扩展DW:自定义第三方标签解析
  7. 使用git管理项目(一)搭建环境
  8. weex解决scrollView嵌套webview高度问题,安卓自定义weex组件webview,
  9. JAVAJ基础学习之反射机制
  10. 了解Sun公司的历史以及现状