语音信号短时分析及基音周期估算系统
项目介绍
本系统是一个基于 MATLAB 平台的语音信号处理工具,旨在实现对语音信号的短时时域特性分析与基音周期估计。通过对连续语音信号进行分帧处理,系统能够捕捉语音随时间变化的动态特征。核心任务包括语音特征参数(短时能量、过零率)的提取、基于双门限判决的端点检测(VAD),以及针对浊音段的基音频率(F0)追踪。该系统适用于语音编码、语音识别的前端处理以及语言学分析等领域。
功能特性
- 鲁棒的信号预处理:包含去直流分量、幅度归一化以及预加重滤波,有效提升高频分量并消除硬件采集带来的偏置。
- 自动端点检测 (VAD):采用双门限判决算法,结合短时能量和短时平均过零率,能够准确识别静音段、清音段和浊音段。
- 精确基音估算:利用自相关函数法(ACF)在时域内搜索信号的周期性特征,并提取基音轨迹。
- 后处理平滑:通过中值滤波算法去除基音提取过程中的野点(异常值),确保基音曲线的连续性与平顺性。
- 多维度可视化:系统自动生成包含原始波形、能量包络、过零率曲线及基音轨迹的综合图表。
系统逻辑与实现流程
系统运行遵循标准的语音处理流水线,具体步骤如下:
1. 信号加载与标准化
系统首先尝试读取本地音频文件,若文件不存在则自动加载 MATLAB 内置的示例语音数据。读取后,系统对信号进行单声道转换,减去均值以消除直流成分,并根据最大值进行归一化处理,将幅值映射到 [-1, 1] 区间。
2. 时域分帧与加窗
- 预加重:通过一阶高通滤波器(系数为 0.97)对信号进行处理,补偿由于声门激励和唇辐射造成的高频衰减。
- 分帧:设置帧长为 30ms,帧移为 15ms。这种 50% 的重叠确保了信号在帧与帧之间的平滑过渡。
- 加窗:对每一帧施加汉明窗(Hamming Window),以减少分帧产生的频谱泄露,增强帧内信号的准平稳性。
3. 短时特征计算
- 短时能量 (STE):计算每一帧内信号采样点的平方和,反映语音在不同时间位置的强度变化。
- 短时平均过零率 (ZCR):统计相邻采样点符号变化的次数。清音段通常具有较高的过零率,而浊音和静音段过零率较低。
4. 双门限端点检测算法
系统通过三个逻辑阶段实现端点检测:
- 第一级搜索:基于能量高门限锁定语音的核心段。
- 第二级搜索:基于能量低门限向核心段两端扩展,捕捉能量较低的语音边缘。
- 第三级搜索:利用过零率门限进一步修正,确保高频率、低能量的清音部分不被误判为静音段。
5. 基音周期估计 (ACF)
针对被判定为语音且具有一定能量密度的帧,系统执行以下操作:
- 频率限制:将基音搜索范围限制在 60Hz 至 400Hz 之间,符合人类发声的生理极限。
- 自相关计算:计算帧信号的自相关函数,通过寻找在指定延迟范围(Lag)内的最大峰值来确定周期。
- 浊音判定:设定相关系数阈值(0.3),若峰值超过该阈值则认为该帧为浊音并计算基音频率,否则判定为清音或噪声。
6. 结果平滑与结果展示
系统使用 5 点中值滤波器对提取的基音轨迹进行平滑,减少因计算误差产生的频率跳变。最后,打印实验分析报告(包括采样率、总帧数、平均基音频率等),并绘制完整的时域全景图。
关键算法说明
- 自相关函数法 (ACF):这是估算基音周期的经典时域方法。通过对比信号与其自身移动一定时间后的相似度,能够捕捉到浊音的准周期特性。
- 中值滤波:一种非线性平滑技术,在去除基音轨迹中的单一错误预测值(野点)时表现优异,且能很好地保留信号的阶跃特征。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 所需工具箱:Signal Processing Toolbox(辅助完成自相关计算与平滑滤波)。
- 硬件环境:支持标准的音频回放与图形显示。