基于MATLAB的语音识别系统
项目介绍
本系统是一个集成式的语音信号处理与识别平台,在MATLAB环境下实现了从原始语音采集、预处理、特征提取到模式匹配的完整流程。系统结合了经典的动态时间规整(DTW)算法与隐马尔可夫模型(HMM)框架,能够有效地对孤立词指令进行实时识别。通过可视化的方式,系统直观展示了语音波形、端点检测结果、MFCC特征分布以及匹配得分,适用于教学演示、算法研究及基础的语音控制应用。
功能特性
- 实时语音采集:利用音频输入设备进行数字化采样,支持自定义采样频率、位深及录音时长。
- 自动化端点检测(VAD):通过计算短时能量和过零率,自动识别语音信号的起始和终止位置,剔除无声段。
- MFCC特征提取:实现了标准的梅尔频率倒谱系数提取流程,包括预加重、分帧加窗、FFT、梅尔滤波及DCT变换。
- 双模型识别引擎:
- DTW匹配:支持非线性时间规整,通过计算测试模板与参考模板间的最小累积距离进行识别。
- HMM评分:基于Viterbi算法计算观测序列在特定统计模型下的对数似然概率。
- 多维可视化展示:实时生成波形图、特征热力图及识别得分对比柱图。
实现逻辑与流程细节
系统运行遵循以下核心逻辑:
- 参数初始化:系统预设采样率为16000Hz,采用16位单通道采样。设置帧长为256点,帧移为128点。
- 录音模块:启动录制任务,采集一段时长为2秒的语音数据。
- 预处理与端点检测:
- 预加重:使用高通滤波器 [1, -0.97] 提升高频分量。
- 分帧加窗:将连续信号切分为重叠帧,并应用汉明窗减少边缘效应。
- VAD逻辑:计算每一帧的短时能量(STE)和过零率(ZCR)。根据最大能量的10%设定阈值,并结合0.1的过零率阈值,定位语音的有效起始点(voiceStart)和结束点(voiceEnd)。
- 特征提取细节:
- 对有效语音段进行FFT变换获取频谱。
- 通过24个梅尔滤波器组进行频域滤波。
- 取对数后进行离散余弦变换(DCT),最终提取前12维倒谱系数作为核心特征。
- 模式匹配逻辑:
- 系统内置了模拟的指令特征模板(如“开灯”与“关灯”)。
- 运行DTW算法,构建欧氏距离矩阵,并通过动态规划计算测试特征与各个模板之间的最小累积消耗路径。
- 运行HMM Viterbi算法,模拟3状态的左-右型模型(L-R HMM),计算当前特征序列在模型下的最大路径对数似然得分。
- 决策与展示:系统根据DTW计算出的最小距离判定识别结果,并弹出包含原始波形(标注红绿端点线)、MFCC特征矩阵分布图以及模型匹配得分对比图的可视化窗口。
关键算法分析
- 动态时间规整(DTW):该算法解决了语音识别中语速不一的问题。系统通过建立一个二维代价矩阵,利用递归公式在保证时间轴单调性的前提下,寻找测试序列与参考序列之间的最优对齐路径,输出的累积距离越小,代表相似度越高。
- 隐马尔可夫模型(HMM)评分:系统实现了HMM的识别核心——Viterbi算法。在假设状态观测符合高斯分布的前提下,通过对数计算避免数值溢出,计算输入特征序列在预设状态转移矩阵(A)和观测概率分布(B)下的最大生成概率。
- 梅尔滤波器组构建:根据频率到梅尔频率的转换公式,在0到半采样频率之间等间距布置三角滤波器,模拟人耳对低频信号敏感度高于高频信号的听觉特性。
使用方法
- 环境配置:确保计算机已连接麦克风输入设备。
- 启动程序:在MATLAB命令行窗口运行主函数。
- 音频采集:程序提示“准备录音”后,在2秒内说出测试指令(如“开灯”或“关灯”)。
- 结果查看:录音结束后,系统会自动进行特征处理与匹配,并在命令行输出识别到的指令名称、DTW距离及HMM得分,同时弹出可视化分析图表。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 硬件环境:标准声卡,可用麦克风设备。
- 依赖工具箱:通常需要基础的信号处理功能,代码中已包含手写实现的汉明窗和分帧函数,提高了系统的独立性。