语音信号基音频率自动提取系统
项目介绍
本系统是一个基于MATLAB开发的自动化语音处理工具,专注于从语音信号中精确检测和提取基音频率(Pitch Frequency)。系统集成了数字信号处理的完整流程,包括信号仿真、预处理、端点检测(VAD)、基于自相关函数的基音搜索以及结果平滑处理。该系统不仅能够处理实时模拟生成的语音数据,也能通过调整参数适应实际录制的语音文件分析,广泛应用于语音合成、语音识别及旋律分析等领域。
功能特性
- 动态仿真与波形合成:系统内置模拟语音生成模块,能够合成具有随时间变化的基音频率(100Hz至200Hz动态变化)特征的谐波信号,并加入高斯白噪声和静音段,模拟真实环境下的语音采集。
- 自适应预处理:包含预加重滤波模块,用于提升语音信号的高频分量。采用分帧加窗技术,将连续信号切分为短时平稳帧,并施加汉明窗以减少频谱泄露。
- 双指标端点检测(VAD):综合利用短时能量和平均过零率(ZCR)两个核心指标,通过设定的逻辑限制自动判定语音段、清音段与静音区,有效过滤背景噪声对频率检测的影响。
- 鲁棒性基音提取:核心算法基于短时自相关函数(ACF)。系统通过在特定的时滞范围内(对应60Hz至500Hz人声范围)搜索相关函数的极大值,并结合峰值显著性校验,准确获取发音周期。
- 后处理优化:引入中值滤波技术对原始基音轨迹进行平滑,自动剔除由于干扰或算法误判产生的孤立异常点,确保生成的音调曲线连续且平滑。
- 多维度可视化:提供直观的图形化输出,同步展示时域波形、端点检测状态、短时能量变化曲线以及基音提取的原始轨迹与平滑轨迹。
使用方法
- 启动硬件与软件:启动MATLAB软件环境。
- 运行分析:在MATLAB命令行窗口中调用主函数或直接运行脚本。程序将自动执行从信号生成到结果可视化的所有工作流。
- 结果观察:程序将自动弹出图形窗口。用户可以观察第一个子图中红色实线标出的语音活跃区域,在第三个子图中查看红线绘制的平滑基音频率走势。
- 命令行反馈:MATLAB控制台将实时输出分析的总帧数、有效语音帧数以及检测结果的数值矩阵。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 依赖工具箱:Signal Processing Toolbox(信号处理工具箱),用于调用自相关、中值滤波及窗函数。
- 硬件要求:标准PC环境,建议内存4GB以上。
实现逻辑与详细功能说明
1. 信号输入与构造逻辑
系统以8kHz采样率生成2秒的测试信号。通过正弦波合成模型模拟语音的基音及其谐波。基音目标值设为100Hz基础上的正弦波动,模拟真实口语中的语调起伏。信号前后各填充了一定比例的随机噪声静音段,用以测试系统的端点检测能力。
2. 预处理关键环节
- 预加重:使用高通滤波器(系数为0.97)平衡信号频谱,补偿语音信号高频部分的跌落。
- 分帧加窗:将信号切分为30ms的帧(240个采样点),帧移设为10ms。每帧信号乘以汉明窗,以保证短时分析的准确性。
- 参数界定:预设基音搜索范围为60Hz至500Hz,换算为采样点延迟范围,从而缩小自相关搜索的计算量。
3. 端点检测(VAD)算法分析
系统对每一帧计算两个参数:
- 短时能量:反映信号强度的平方和。
- 过零率:反映信号过零点的频繁程度,通常浊音(有声)过零率低,清音或噪声过零率高。
- 逻辑判定:当能量超过0.05且过零率低于0.3时,判定该帧为有效语音段。
4. 基音频率提取细节
在VAD判定的有效帧内,利用xcorr函数计算归一化的自相关系数。算法在定义的延迟最小值到最大值范围内寻找最大峰值。
- 有效性验证:提取出的最大峰值需大于0.3,否则视为该帧不具备明显的周期性,重新标定为非法帧。
- 频率计算:根据最大峰值所在的延迟点数(Lag),通过采样率与延迟点数的比值计算出当前的物理频率。
5. 轨迹平滑与输出
通过5点中值滤波器处理提取出的频率序列。该步操作能有效消除由于倍频或半频错误带来的阶跃式干扰。最终,系统将时间序列、原始频率点和过滤后的平稳曲线绘制在一个包含三个子图的窗口内,并打印核心统计数据。