语音信号短时分析与基音周期估计算法实现
项目介绍
本项目实现了一套完整的语音信号短时时域分析系统。通过对模拟生成的复合语音信号进行预处理、分帧、加窗处理,提取反映语音特征的短时能量(STE)和短时平均过零率(ZCR),并在此基础上实现清/浊音的自动判决。系统核心逻辑在于利用自相关函数法(ACF)准确提取浊音段的基音频率轨迹,并利用中值滤波技术优化估计结果。该项目为语音识别、合成及分析提供了稳健的基础算法框架。
功能特性
- 合成信号仿真:系统能够自主生成包含浊音(100Hz基频及其谐波)、清音(随机噪声)及环境背景底噪的多段复合信号,确保算法在无外部音频文件时仍能独立运行。
- 高保真预处理:应用预加重技术补偿高频损耗,提升信号质量。
- 时域特征提取:同步计算短时能量和过零率,为端点检测和音素分类提供依据。
- 智能化清浊音判决:基于动态阈值逻辑,自动识别语音序列中的发音段落属性。
- 精准基音追踪:采用自相关法在50Hz至500Hz的生理特征范围内搜索峰值,获取发音人的基音周期。
- 多维度可视化:提供波形、能量、过零率及基音轨迹的同步对比图表,直观呈现语音特性的动态演变。
实现逻辑与功能说明
本系统的核心逻辑严格遵循语音信号处理的标准流程,具体实现如下:
1. 信号初始化与预处理
系统首先定义采样率为16000Hz,并通过数学建模合成一段时长2秒的语音。浊音段由基频与多阶谐波组成,清音段由高频随机信号构成。合成后对信号进行幅度归一化,并使用传递函数为 $H(z) = 1 - 0.97z^{-1}$ 的滤波器进行预加重,以提升高频分辨率。
2. 灵活分帧与加窗
系统采用30ms的帧长和20ms的重叠区进行滑动分帧,通过计算得出具体的采样点数。每一帧信号均乘以Hamming窗,以减少分帧产生的频谱能量泄露,保证信号在每帧内的短时平稳性。
3. 短时时域特征计算
- 短时能量 (STE):通过对每一帧内所有采样点的平方求和获得,反映语音信号的强度变化。
- 短时过零率 (ZCR):通过计算信号穿过零电平的次数来衡量频率特性。清音段通常具有高过零率,而浊音段过零率较低。
4. 清、浊音自动判决 (V/U Detection)
系统基于能量和过零率设定动态阈值:
- 浊音 (Voiced):定义为能量高于设定阈值且过零率低于均值逻辑阈值的段落。
- 清音 (Unvoiced):定义为过零率显著较高且具备一定能量强度的段落。
5. 基音周期估计 (ACF算法)
在判别为浊音的帧中,系统计算信号的自相关函数(ACF)。算法在对应50Hz到500Hz频率范围的延迟点(Lags)之间搜索除原点外的最大值位置。该位置即对应基音周期,进而换算为基音频率。
6. 基音轨迹平滑处理
为消除自相关法中可能产生的倍频或半频错误,系统对估计出的基音频率序列应用了5阶中值滤波(Median Filter),有效剔除了异常跳变点,使频率曲线更加平滑自然。
核心算法与实现细节分析
- 自相关函数法 (ACF):这是估计基音最经典的时域方法。系统利用其在浊音段具有显著周期性峰值的特性,在正延迟部分锁定最大相关点。
- 动态阈值技术:系统并未采用固定数值,而是基于全信号的最大能量分段和平均过零率设定相对阈值。这种方法在信噪比发生变化时比固定阈值具有更强的适应性。
- 绘图优化技巧:在可视化阶段,为了避免非浊音段(基频为0)在图表中产生垂直掉落的连线,系统将0值替换为NaN(非数字值),从而实现频率轨迹的离散化准确呈现。
- 背景标注:系统在可视化窗口中利用浅绿色半透明矩形框(Patch)自动标记出算法判定的浊音区域,极大地方便了特征参数与发音属性的对应分析。
使用方法
- 确保安装了MATLAB环境以及相关的信号处理工具箱。
- 直接运行脚本程序。
- 系统将自动生成一段模拟语音信号。
- 程序运行结束后,会自动弹出可视化分析窗口,展示从原始波形到基音轨迹的完整分析结果。
- 如需分析实际语音文件,可将信号生成部分替换为读取本地音频文件的函数。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 必备工具箱:Signal Processing Toolbox(用于执行自相关计算和中值滤波)。
- 硬件配置:主流个人电脑即可平滑运行。