基于二进制小波变换与短时自相关函数的语音基音周期检测系统
该系统实现了一种结合二进制小波变换(Dyadic Wavelet Transform)与短时自相关函数(ACF)的语音基音提取算法。通过利用小波变换的多分辨率分析特性对带噪语音进行前置增强,系统能够有效克服传统自相关法在低信噪比环境下容易出现的倍频、半频错误,显著提高基音周期检测的准确性与稳定性。
功能特性
- 抗噪能力强:通过三层二进制小波分解,有效滤除高频随机噪声,增强信号的周期性特征。
- 多分辨率分析:利用小波变换在时频域的局部化优势,提取基音信息最集中的频率分量。
- 高精度轨迹提取:结合短时自相关函数与自适应峰值搜索逻辑,能够精确跟踪基音频率(F0)的微弱动态变化。
- 后处理平滑:引入中值滤波技术,有效剔除检测过程中的孤立错误点,确保基音曲线的平滑连续。
- 直观的可视化界面:系统能够实时对比增强前后的自相关函数波形,并展示完整的小波分解过程及基音提取轨迹。
系统要求
- 软件环境:MATLAB R2016a 或更高版本。
- 核心工具箱:信号处理工具箱(Signal Processing Toolbox)。
算法实现逻辑
系统内部实现流程严格遵循从信号预处理到特征提取的科学步骤:
- 模拟信号构建与预处理:
系统预设了 8000Hz 的采样率,并生成一段带有谐波分量的合成语音信号。为了模拟真实的语音环境,系统在基音频率中加入了正弦规律的微弱波动(120Hz-130Hz),并添加高阶高斯白噪声以构建低信噪比(SNR)环境。
- 三层二进制小波分解:
采用 Mallat 算法结构的滤波器组,使用 Haar/二次样条特性的低通(h)和高通(g)滤波器。系统对输入信号进行三层递归分解,得到近似分量 $a1, a2, a3$ 和细节分量 $d1, d2, d3$。根据语音基音通常分布在低频区域的特性,系统选取第三层近似分量 $a3$ 作为增强后的待处理信号。
- 分帧与短时自相关处理:
系统采用 30ms 的帧长和 10ms 的帧移对增强信号进行截断。每一帧信号在消除均值后,计算其短时自相关函数。对比实验显示,相对于原始带噪信号,经过小波增强后的信号在自相关域具有更明显的波峰,极大地降低了噪声对基音定位的干扰。
- 基音搜索与频率计算:
系统在 50Hz 至 500Hz 的人类发音基音范围内设置滞后(Lag)搜索窗口。通过寻找搜索范围内 ACF 的最大峰值,定位出对应的延迟点,并结合采样率换算为当前的基音频率 F0。
- 轨迹后处理:
为了消除由于瞬态噪声或算法误差产生的跳变,系统对初步提取的基音序列应用 5 点中值滤波,从而获得稳定平滑的频率变化轨迹。
关键函数与细节分析
- 卷积分解逻辑:利用 conv 函数配合 'same' 参数实现信号在每一级小波分解下的精准对齐,确保了时域信息的完整性。
- xcorr 相关性评价:使用内置 xcorr 函数计算归一化自相关系数,其 'coeff' 模式使得不同帧之间的峰值具有可比性。
- findpeaks 自适应搜索:在指定的 Lag 范围内动态寻找局部极大值,避免了全局最大值可能出现在零延迟位置的问题。
- 中值平滑技术:medfilt1 函数的应用,增强了系统在非稳态语音片段中的鲁棒性。
使用方法
- 启动 MATLAB 软件。
- 将系统程序脚本放置于当前工作目录下。
- 运行核心脚本程序。
- 程序运行完成后,将自动弹出可视化分析窗口,展示以下内容:
* 原始带噪信号与小波增强信号的时域对比。
* 三层小波分解后各级细节分量 (d1, d2, d3) 的分布情况。
* 原始信号与增强信号在中间帧的自相关函数对比图。
* 提取到的基音频率轨迹与理论设定轨迹的重合评估。
- 在命令行窗口(Command Window)中可查看到检测到的平均基音频率数值。