基于MFCC与向量量化(VQ)的语音识别仿真系统
项目介绍
本系统是一个基于MATLAB开发的语音识别与训练仿真平台。它利用梅尔频率倒谱系数(MFCC)作为核心特征提取特征,并结合向量量化(VQ)技术通过LBG算法实现语音模式的建模与识别。系统模拟了完整的数字语音处理链路,包括信号预处理、特征分析、模型训练以及匹配识别,能够对不同特性的语音信号进行分类。该系统不仅可以用于模拟特定指令的识别,也为说话人识别研究提供了一个基础的算法验证框架。
功能特性
- 完整的MFCC特征提取:实现了从原始波形到倒谱域特征的标准化转换,包括预加重、分帧、加窗、梅尔滤波器组加权及DCT变换。
- 自动化VQ模型训练:内置LBG聚类算法,能够自动根据训练数据生成指定大小的特征码本(Codebook)。
- 动态模拟数据集:系统内置了模拟语音信号发生器,通过改变基频和谐波成分生成多类测试样本,无需外部音频文件即可启动仿真。
- 鲁棒性验证:在测试阶段自动加入高斯噪声,验证识别算法在非理想环境下的表现。
- 多维结果可视化:实时生成时域波形图、MFCC热力图、梅尔滤波器组频率响应图以及识别准确率分析图。
系统要求
- 软件环境:MATLAB R2016a 或更高版本。
- 硬件要求:基本的运算能力,支持图形化输出。
- 依赖项:无需特殊工具箱,核心功能均由基础数学和信号处理函数实现。
详细功能逻辑
系统的执行流程严格遵循以下步骤:
- 参数初始化:配置采样率为8000Hz,帧长256点,帧移128点,提取13维MFCC系数。设定VQ码本大小为16,通过训练生成4类不同的目标模型。
- 数据准备与预处理:
生成具有不同基波频率(150Hz至300Hz不等)及其谐波的模拟信号,并叠加随机噪声。
对信号执行预加重处理(系数为0.97),以平衡频谱并提升高频共振峰。
- 特征提取流程:
利用汉明窗(Hamming Window)对分帧后的信号进行加窗,减少边缘干扰。
通过快速傅里叶变换(FFT)计算功率谱。
应用24个梅尔滤波器组成的滤波器组,将线性频率映射到人类听觉感知的梅尔刻度。
对滤波器组输出取对数后进行离散余弦变换(DCT),获取前13维倒谱系数。
- 码本训练:
针对每一类语音特征,从单个初始质心开始,通过LBG裂变算法逐步增加质心数量(1->2->4->8->16)。
在每一级裂变中,利用最近邻原则和欧式距离进行反复迭代更新,直至平均畸变满足停止阈值(0.01)。
- 匹配与分类:
对待测样本提取相同的MFCC特征。
计算待测特征序列与每一个已知类别码本之间的最小平均量化畸变(Distortion)。
系统自动判定畸变评分最低的码本所属类别为识别出的结果。
- 性能评估:
循环运行20次测试任务,对比识别结果与地面真实标签,统计并输出总识别率。
关键算法实现细节
通过以下核心子功能支撑整个系统的运行:
- 梅尔滤波器组生成:根据采样率和FFT点数,在线性频率和梅尔频率之间进行转换,生成一组重叠的三角形滤波器阵列。
- 分帧操作:将连续的一维时间序列按照指定的帧长和跳叠步长,重组为二维帧矩阵。
- 向量量化训练(LBG):实现了基于分裂机制的聚类过程,通过对现有质心施加微小偏移(0.01)产生新质心,并不断优化特征空间的覆盖。
- 畸变评分计算:采用欧式距离平方和来衡量测试帧向码本中心收敛的程度,以平均距离作为相似度判别指标。
使用方法
- 打开MATLAB软件,将当前工作目录切换至本项目代码所在路径。
- 调用系统的主接口函数。
- 系统将自动开始由于模拟数据驱动的训练过程,并在命令行界面显示当前的训练进度。
- 训练完成后,系统会自动执行测试环节并实时打印出识别准确率。
- 最终会弹出一个包含四个子图的分析窗口,展示测试信号的物理特征和系统的分类准确度对比。