基于MFCC的语音情感特征提取系统
项目介绍
本系统是一个基于MATLAB平台开发的语音情感特征提取工具。它通过模拟人类听觉感知的频率特性,从原始语音信号中提取梅尔频率倒谱系数(MFCC)。该系统不仅涵盖了基础的静态特征提取,还通过计算一阶和二阶差分参数捕捉语音的动态变化,从而为后续的情感分类(如愤怒、快乐、忧伤等)提供高维度的量化特征支撑。
功能特性
- 自动化的预处理流程,包括预加重、分帧和加窗处理。
- 实现了完整的梅尔滤波器组构建算法,模拟人耳非线性频率感知。
- 提取39维复合特征向量,包含13维静态系数、13维一阶差分(Delta)和13维二阶差分(Delta-Delta)。
- 具备特征统计分析功能,自动计算所有帧特征的均值与方差。
- 强大的可视化输出,直观展示时域信号、滤波器组分布、特征图谱及统计分布图。
系统要求
- 运行环境:MATLAB R2016b 或更高版本。
- 工具箱:建议安装 Signal Processing Toolbox(信号处理工具箱)。
- 硬件要求:普通PC即可,建议内存4GB以上。
实际实现功能与逻辑说明
系统的核心逻辑遵循标准的语音处理流水线,具体步骤如下:
- 参数初始化:系统默认采用16000Hz采样率,设置帧长为25ms,帧移为10ms。通过512点FFT确保频率分辨率,并设计26个梅尔滤波器用于提取前13位倒谱系数。
- 语音信号模拟:代码中生成了一个持续2秒的模拟语音信号,该信号由不同频率的正弦波与高斯白噪声组成,并经过归一化处理,确保系统在没有外部录音文件时也能直接演示运行。
- 预处理:
- 预加重:使用高通滤波器(系数0.97)补偿语音信号在高频段的能量衰减。
- 分帧:将连续信号切割为重叠的帧,以满足短时平稳性要求。
- 加窗:对每一帧应用汉明窗(Hamming Window),有效减少FFT过程中的频谱泄露。
- 频域分析:
- 功率谱计算:对每一帧进行快速傅里叶变换(FFT),计算其功率谱能量分布。
- 梅尔滤波:构建三角滤波器组,将线性频率刻度转换为梅尔刻度。通过将功率谱映射到滤波器组,计算每个滤波器频带内的对数能量。
- 倒谱特征提取:
- 离散余弦变换(DCT):对对数能量执行DCT操作,将能量分布从频域转换到倒谱域,解耦频谱包络与细节,提取前13维作为静态MFCC特征。
- 动态特征计算:
- 调用特定的差分算法,利用前后两帧的跨度估算线性回归斜率。
- 依次计算13维静态特征的一阶差分和二阶差分,最终合并成39维的特征矩阵。
- 统计与可视化:
- 计算所有帧的特征均值和标准差,这通常作为情感识别模型的输入输入向量。
- 绘制四个面板的图形窗口:时域波形图、梅尔滤波器组频率响应图、39维特征图谱图(热图形式)以及特征分布统计柱状图。
关键算法与实现细节分析
- 预加重滤波器实现:通过一阶FIR滤波器 y(n) = x(n) - αx(n-1) 实现,旨在提升高频信噪比。
- 梅尔刻度转换算法:系统使用公式 f_mel = 2595 * log10(1 + f/700) 进行频率转换。在构建三角滤波器时,精确地将梅尔刻度下的均匀分布映射回FFT的索引位置,确保了频谱权重的准确性。
- 差分系数计算逻辑:在计算Delta参数时,系统采用了窗口长度为2的线性斜率估计。为了处理边界帧,算法使用了对称填充(Padding)技术,确保起始帧和结束帧也能获得准确的动态参数。
- 倒谱压缩:通过离散余弦变换(DCT)消除了滤波器组输出之间的相关性。由于情感信息主要集中在低阶系数中,系统特意保留了前13维,这既压缩了数据量又保留了核心的音质特征。
- 特征融合:系统通过水平拼接(Concatenation)将静态、一阶、二阶特征组合。这种39维的配置是语音识别和情感监测领域的标准做法,能够同时兼顾语音的瞬时频谱和时间演变规律。