基于MELP的2.4kb/s低比特率语音压缩与解码程序
项目介绍
本项目是一个在MATLAB环境下实现的混合激励线性预测(MELP)语音编解码原型系统。MELP算法是专门为低比特率(2.4kb/s)语音通信设计的标准算法,它通过改进传统LPC模型,引入了混合激励、脉冲整形、增强谱处理和自适应后处理等技术,显著提升了在极低带宽下的语音合成质量和抗噪声能力。
功能特性
- 完整的编解码全流程实现:包含预处理、分析、量化模拟、合成及后处理。
- 混合激励机制:支持5个频带的独立清浊音判定。
- 增强型谱处理:实现了对前10个谐波幅度的估算,以增强浊音的细节。
- 鲁棒的音高探测:采用自相关法进行音高周期估算。
- 听感增强:内置自适应后置滤波器,用于增强共振峰并补偿频谱倾斜。
- 自动反馈评估:程序执行后自动计算输出信噪比(SNR),并生成原始与重构语音的波形及语谱图对比。
系统要求
- 运行环境:MATLAB R2016b 或更高版本。
- 依赖工具箱:Signal Processing Toolbox(信号处理工具箱)。
- 输入要求:默认支持8kHz采样率、单声道的WAV音频文件。若文件不存在,程序会自动生成模拟语音信号进行演示。
实现逻辑与处理流程
程序遵循MELP标准核心逻辑,按帧(每帧22.5ms,对应180个采样点)进行处理,主要步骤包括:
- 预处理阶段
对输入语音进行归一化,并应用1阶高通滤波器进行预加重(系数为0.9375),以提升高频分量并减小后续分析的动态范围。
- 编码分析阶段
- 线性预测分析(LPC):针对窗口化后的语音帧计算10阶LPC系数,并将其转换为稳定且易于量化的线谱对(LSF/LSP)参数。
- 基音周期估算:利用自相关函数在50Hz至400Hz范围内搜索最大相关峰值,确定音高周期及浊音强度。
- 多频带带通清浊音分析:将语音划分为5个子带(0-500Hz, 500-1000Hz, 1000-2000Hz, 2000-3000Hz, 3000-4000Hz),分别通过带通滤波器组。计算每个子带残差信号的自相关性,以此决定该频带在合成时使用脉冲激励还是噪声激励。
- 傅里叶幅度估算:在残差域分析前10个谐波的幅度,用于提升浊音片段的丰富度和自然度。
- 增益计算:以分贝(dB)为单位计算当前帧的能量,用于合成器中的幅度还原。
- 参数量化与传输模拟
模拟了2.4kb/s标准下的参数规格,主要针对LSF、增益和基音进行量化处理。虽然在代码中以浮点模拟为主,但逻辑上对准了标准定义的比特分配。
- 解码与合成阶段
- 混合激励生成:根据各频带的清浊音判定结果,将周期脉冲激励(受傅里叶幅度调制)与白噪声激励分别通过对应的带通滤波器组后求和,构造混合激励源。
- 语音合成滤波:利用量化后的LSF参数重构LPC合成滤波器,对混合激励信号进行滤波从而恢复语音共振峰特征。
- 去预加重与补偿:对合成语音进行去预加重,并应用包含共振峰增强和倾斜补偿的自适应后置滤波器,最后根据量化增益调整输出幅值。
核心子功能说明
混合激励频带滤波器设计模块
使用FIR滤波器组设计5个精确的子带滤波器。它是区分MELP与传统LPC的关键,负责处理不同频带的清浊音混合特性。
音高检测与分析模块
实现基于自相关算法的闭环基音搜索。它不仅提取基音周期(Lag),还通过自相关系数的大小反映语音的清/浊音置信度。
多频带清浊音判定模块
对五个特定频带进行时域分析,通过设定阈值(0.5)来动态决定各频带的激励混合权重,有效解决了传统LPC在过渡段的失真问题。
傅里叶幅度处理模块
在频域对激励信号的精细结构进行建模。通过计算原始频谱与LPC全极点模型谱的比例,提取前10个谐波的权重参数。
混合激励合成模块
这是解码器的核心。它将脉冲源和噪声源分别映射到对应的滤波器组中。若某频带判定为浊音,则该频带由谐波幅度调制的脉冲序列填充;反之则由噪声填充。
自适应后置滤波模块
为了进一步提升听感,该模块通过两个衰减因子(0.8和0.9)构建有理传递函数。它能拉宽谷值、压缩峰值,使共振峰更加突出,同时利用倾斜滤波器平衡整体音色。