基于隐马尔可夫模型(HMM)的数字语音识别系统
项目介绍
本项目是一套基于隐马尔可夫模型(HMM)开发的数字语音识别系统,专门用于识别 0 到 9 的中文或英文数字语音指令。系统集成了从语音采集、信号预处理、特征提取到统计模型训练与识别的完整流程。通过 MATLAB 构建的图形用户界面(GUI),用户可以便捷地进行实时语音录制、样本训练以及在线识别,适用于语音信号处理的学习研究及算法验证。
功能特性
- 支持 0-9 共十个数字的语音样本采集与训练。
- 提供直观的 GUI 界面,包含实时时域波形转换显示与 MFCC 特征倒谱图可视化。
- 内置实时录音功能,支持对录制的有效音频进行即时回放。
- 集成了端点检测(VAD)技术,自动剔除静音段和背景噪声。
- 采用 24 维 MFCC 特征(12 维静态 + 12 维一阶差分)以精确刻画语音特性。
- 包含完整的隐马尔可夫模型训练架构,支持 LBG 矢量量化聚类。
- 具备数据清空与重置功能,方便重新进行模型迭代测试。
使用方法
- 样本录制:在界面左侧的训练样本录制区,依次点击“录制数字 0”到“录制数字 9”。点击后系统将开启 1.5 秒的实时录音,请在提示“请说话”时对准麦克风读出相应数字。录制完成后,界面将显示该语音的波形和 MFCC 特征。
- 系统训练:确保 0-9 每个数字都至少拥有一个录音样本后,点击“保存并开始训练”按钮。系统将自动进行全局特征聚类生成码本,并为每个数字训练对应的 HMM 模型。
- 实时识别:训练完成后,点击“实时录音识别”按钮并说出一个数字语音。系统将自动处理音频并输出可能性最大的识别结果,结果将以红色大字显示在界面中央。
- 辅助功能:
- 点击“播放录音”可以听取当前最后一次采集的有效语音片段。
- 点击“清除数据”可重置所有已录制的特征和训练好的模型。
实现逻辑与系统架构
该系统在 GUI 主程序下实现了一套严谨的语音处理流水线:
1. 语音预处理与端点检测 (VAD)
系统采用 8000Hz 采样率。音频输入后首先进行归一化处理,随后通过预加重滤波器(系数 0.97)提升高频分量。端点检测算法通过计算短时能量,配合双门限逻辑识别语音的起始点和终点,精确截取有效语音片段,忽略前后的静音环境。
2. MFCC 特征提取
系统提取 24 维特征参数:
- 将语音分为 256 点长度的帧,帧移为 128 点,并加汉明窗处理。
- 利用 24 个美尔滤波器组(Mel Filter Bank)对频谱进行映射,模拟人耳听觉特性。
- 对滤波器组输出取对数后执行离散余弦变换(DCT),提取第 2 至 13 维系数。
- 计算上述 12 维系数的一阶差分(Delta),最终合并为 24 维特征向量,以兼顾语音的静态与动态特性。
3. 矢量量化 (VQ)
为了降低 HMM 观测序列的复杂度,系统采用 LBG 聚类算法。它将所有训练样本提取的 24 维特征向量进行迭代分裂和 K-means 调整,最终生成一个大小为 64 的码本。所有的连续 MFCC 特征都会根据该码本被量化成离散的观测索引序列。
4. HMM 模型训练
每个数字(0-9)对应一个独立的隐马尔可夫模型:
- 状态设计:采用含有 6 个状态的从左至右型(Left-to-Right)HMM 模型。
- 参数估计:使用鲍姆-韦尔奇(Baum-Welch)算法的简化实现,通过 20 次迭代更新状态转移概率矩阵 A 和观测概率矩阵 B。模型初始状态固定从状态 1 开始。
5. 维特比识别解码
在识别阶段,待测语音经过同样的 VAD、MFCC 提取和 VQ 量化后,得到一个观测序列。系统使用维特比(Viterbi)算法计算该序列在 10 个已训练模型下的最大似然概率(取对数似然)。系统将决策判定为 log 概率值最大的模型所对应的数字。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 硬件要求:具备正常的音频输入设备(麦克风)和输出设备(扬声器)。
- 环境要求:建议在噪声较小的环境下进行录音,以保证端点检测和特征识别的准确性。