基于多特征融合的语音信号基频提取系统
项目介绍
本系统是一款基于MATLAB平台开发的语音信号处理工具,专门用于稳健地提取语音信号的基频(F0)。基频作为表征发音时声带振动频率的核心参数,在语音识别、说话人识别、语音合成及言语康复监测中具有重要意义。本程序通过集成多种经典算法并利用多特征融合策略,有效克服了噪声、共振峰以及清浊音切换带来的检测干扰,实现了高精度的基频轨迹追踪。
功能特性
- 信号自动化合成与模拟:系统内置了包含清音、浊音和静音段的复杂仿真信号生成逻辑,模拟了真实的基频波动和噪声环境,便于算法验证。
- 稳健的预处理机制:包含预加重处理(高通滤波)以补偿高频衰减,以及自动分帧与汉明窗加窗处理,确保短时平稳性。
- 双模态清浊音(V/UV)判定:结合短时能量(STE)与过零率(ZCR)双重指标,精准定位语音活动区域。
- 中心削波自相关技术:在计算自相关函数前引入中心削波逻辑,有效消除共振峰对周期性检测的干扰。
- 多算法特征融合:融合了时域自相关法(ACF)与频域倒谱法(Cepstrum),通过逻辑判别和加权计算提升提取精度。
- 基频轨迹平滑:内置中值滤波器,自动消除提取过程中的频率跳变和野点。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 硬件要求:标准PC,建议配备至少8GB运行内存。
- 工具箱依赖:基本功能不依赖特殊工具箱(代码已内置汉明窗等基础函数实现)。
实现逻辑与算法分析
#### 1. 信号预处理
程序首先对原始信号进行预加重操作,使用滤波器系数 [1, -0.97],目的是提升高频分量并消除声道模型的影响。随后将信号划分为30ms的帧,帧移为10ms。每帧信号通过汉明窗处理,以减少由于截断造成的频谱泄露。
#### 2. 清浊音判别 (V/UV Decision)
程序通过两个关键特征来判定当前帧的状态:
- 短时能量:计算帧内信号幅度的平方和。浊音通常具有显著更高的能量。
- 过零率:统计信号跨越零点的次数。清音段由于具有噪声特性,其过零率通常远高于浊音段。
只有当短时能量大于预设阈值(0.05)且过零率低于预设阈值(50)时,程序才将该帧标记为浊音并启动基频计算逻辑。
#### 3. 基频提取算法
系统并行执行两种基频提取方法以增强鲁棒性:
- 时域自相关法 (ACF):引入中心削波技术。将幅值小于最大值70%的部分置零,保留超出部分。此举去除了共振峰产生的次峰干扰。在60Hz至400Hz的生理范围内搜索自相关函数的最大峰值,从而确定基频周期。
- 倒谱法 (Cepstrum):通过对信号进行快速傅里叶变换(FFT),计算对数功率谱的逆傅里叶变换,提取对数谱中的周期性成分。在对应的基频延迟范围内捕捉倒谱峰值,获取频域视角的基频估计。
#### 4. 特征融合策略
为了兼顾不同算法的优势,程序实施了融合逻辑:如果ACF所得频率与倒谱法所得频率的偏差在20Hz以内,则取两者的平均值作为最终估计;若偏差较大,则优先信任时域自相关法(ACF)的结果,以防止个别算法在特定信噪比下的失效。
#### 5. 后处理与平滑
提取出的原始基频轨迹往往存在离散的噪点。程序采用了窗口长度为5的中值滤波算法对基频序列进行平滑。该操作仅在连续的浊音段内执行,通过非线性滤波有效去除了频率突跳,使轨迹更加符合人类发音的生理特性。
#### 6. 可视化输出
程序提供多维度的图形化展示:
- 语音波形图:同步显示原始时域波形及对应的清浊音判定标志。
- 相关函数分析:实时展示指定帧在中心削波后的自相关系数曲线,直观展示峰值点位置。
- 基频轨迹图:对比显示原始提取的离散频率点与经过平滑处理后的连续基频轨迹(Pitch Contour)。
使用方法
- 启动MATLAB。
- 将程序文件所在的文件夹设置为当前工作路径。
- 在命令行窗口直接调用主函数(通常为 main)。
- 程序将自动运行仿真并弹出可视化界面,同时在命令行输出语音采样率、总帧数以及浊音段的平均基频等数据。
- 若需处理外部语音文件,可修改代码开头的信号输入部分,使用 audioread 读取外部 .wav 文件替代仿真信号生成代码。