【数据压缩作业】MEPG音频编码

本文介绍了MPEG音频编码的实验原理,包括感知音频编码设计思想、心理声学模型实现过程、码率分配的实现思路。通过实验,观察到在MPEG编码中,高频子带分配的比特数相对较少,主要关注低频子带的音调和共振峰结构保护。
摘要由CSDN通过智能技术生成

一、实验原理

  1. 程序设计的整体框架
    MPEG-1 Audio Layer II编码器原理框图如下图所示:在这里插入图片描述
  2. 感知音频编码的设计思想
    (1) 两条线
    第一条线:时域越短提取到的样本点数越多,越能反映瞬时变化情况
    第二条线:把人耳的听觉特性转变成可计算的模型——心理声学模型,其输出类似听力曲线,以频率为横坐标,以能量为纵坐标。谱线间隔越小、频域的分解力越细越好。
    时频分析的矛盾
    频域的频谱分辨率和时域的变化率之间存在矛盾,时域信号取得越短,频域谱线间隔越大。
    3.心理声学模型的实现过程
    (1)临界频带的概念
    临界频带是指当某个纯音被以它为中心频率,且具有一定带宽的连续噪声所掩蔽时,如果该纯音刚好被听到时的功率等于这一频带内的噪声功率,这个带宽为临界频带的宽度。
    (2)掩蔽值计算的思路
    ①将样本变换到频域:32个等分的子带信号并不能精确地反映人耳的听觉特性,引入FFT补偿频率分辨率不足的问题。
    ②确定声压级别:在这里插入图片描述
    ③考虑安静时阈值
    ④将音频信号分解成“乐音”和“非乐音/噪声”部分:因为两种信号的掩蔽能力不同。
    ⑤音调和非音调掩蔽成分的消除:利用标准中给出的绝对阈值消除被掩蔽成分; 考虑在每个临界频带内,小于0.5Bark的距离中只保留最高功率的成分 。
    ⑥单个掩蔽阈值的计算:音调成分和非音调成分单个掩蔽阈值根据标准中给出的算法求出。
    ⑦全局掩蔽阈值的计算:
    在这里插入图片描述
    ⑧每个子带的掩蔽阈值:选择出本子带中最小的阈值作为子带阈值。
    ⑨计算每个子带信号掩蔽比SMR并将SMR传递给编码单元。
    SMR = 信号能量 / 掩蔽阈值
    4.码率分配的实现思路
    (1)在调整到固定的码率之前,先确定可用于样值编码的有效比特数,这个数值取决于比例因子、比例因子选择信息、比特分配信息以及辅助数据所需比特数;
    (2)比特分配的过程:对每个子带计算掩蔽-噪声比MNR,是信噪比SNR – 信掩比SMR,即:MNR = SNR – SMR。使整帧和每个子带的总噪声-掩蔽比最小。这是一个循环过程,每一次循环对最低MNR的子带分配比特,使获益最大的子带的量化级别增加一级。

二、代码及分析

#ifdef NEWENCODE
    // 计算比例因子
    scalefactor_calc_new(*sb_sample, scalar, nch, frame.sblimit);
    find_sf_max (scalar, &frame, max_sc);
    if (frame.actual_mode == MPG_MD_JOINT_STEREO) {
   
      /* this way we calculate more mono than we need */
      /* but it is cheap */
      combine_LR_new (*sb_sample, *j_sample, frame.sblimit);
      scalefactor_calc_new (j_sample, &j_scale, 1, frame.sblimit);
    }
#else
    scale_factor_calc (*sb_sample, scalar, nch, frame.sblimit)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值