一、实验要求
1、理解程序设计的整体框架
2、理解感知音频编码的设计思想
两条线和时-频分析的矛盾!
3、理解心理声学模型的实现过程
临界频带的概念
掩蔽值计算的思路
4、理解码率分配的实现思路
5、输出音频的采样率和目标码率
6、选择三个不同特性的音频文件
噪声(持续噪声、突发噪声)
音乐
混合
7、某个数据帧,输出
该帧所分配的比特数
该帧的比例因子
该帧的比特分配结果
二、实验原理
1、听觉阈值曲线
两个声音响度级相同,但强度不一定相同, 还与频率有关;声压级越高, 等响度曲线趋于平坦;人耳对3~4KHz 的声音感觉最灵敏
3、频域掩蔽域随声压级变化曲线
3、临界频带
临界频带是指当某个纯音被以它为中心频率、且具有一定带 宽的连续噪声所掩蔽时,如果该纯音刚好被听到时的功率等 于这一频带内的噪声功率,这个带宽为临界频带宽度
研究窄带噪声对纯音掩蔽量的规律时被发现的 ,使噪声的中心频率等于信号频率,只改变噪声的带宽同时保持噪声 的功率谱密度不变,测试纯音听阈随掩蔽噪声带宽变化的特性 。纯音的听阈随掩蔽噪声带宽的增大而增大,在带宽增大到某一特定 值之后听阈保持恒定不变。
通常认为从20Hz到16kHz有25个临界频带,单位为bark,1 Bark = 一个临界频带的宽度
4、掩蔽值计算
音乐与语音信号大都由一系列复杂的频谱分量构成 ,相应 的这些多个掩蔽分量也会相互影响并最终获得一个整体的掩 蔽阈值。对于多个掩蔽分量的综合掩蔽效果,目前有多种模 型给出了描述方案 。Lutfi 对多个掩蔽音同时存在时的综合掩蔽效果进行了研究: 每个掩蔽音的掩蔽效果先独立变换然后再线性相加。
三、实验代码
1、整体框架
2、代码调试
1、添加宏定义
common.h中添加代码
#define FRAME_TRACE 1
2、print_config()
函数
打印输入文件、输出文件、输出音频的采样率和目标码率。
#if FRAME_TRACE
FILE* need;
need = fopen("need.txt", "a");
fprintf(need, "========== 基本信息 ==========\n");
fprintf(need, "输入文件:%s\n", inPath);
fprintf(need, "输