说话人识别系统
Speaker Identification with MFCC + GMM
录四秒话,系统判断你是谁 —— 或者判断你不在名单里。MATLAB 从零实现,端到端准确率 93.1%。
- 角色
- 课程项目 · 四人小组(我占 25%)
- 时间
- 2025.09 – 2026.01
- 机构
- 南方科技大学 指导 Dr. Fei Chen
为什么做这件事
说话人识别难的不是分类,是拒识。只做分类的话,任何陌生人开口都会被硬塞给最像的那个已注册用户 —— 在门禁或身份核验场景里这是最要命的错法。所以判决不能只看「谁分最高」,还得看「最高分够不够高」和「第一名跟第二名差得够不够开」。
我做了什么
- 我负责整体代码框架设计、语音文件管理和演示准备;MFCC 提取、预处理和 GMM 训练分别由另外三名组员完成。
- 把训练和识别统一到同一个特征提取入口,保证训练集、测试集、现场录音走完全一样的预处理链路 —— 两边不一致是这类系统最隐蔽的失分点。
- 预处理链路:单声道、去直流、幅值归一化、重采样到 8 kHz、80–3400 Hz 带通、基于短时能量与过零率的端点检测。
- 特征侧用 MFCC 配 CMVN 归一化,压掉不同麦克风和音量带来的信道差异。
- 建模用 16 分量 GMM,EM 迭代训练,每个说话人一个模型。
- 判决设了两道阈值:陌生人阈值(最高分低于它就判陌生人)和分数差阈值(前两名太接近就判「不确定」),输出确定 / 不确定 / 陌生人三种状态。
《语音信号处理》课程项目,四人小组。下面两张出自小组报告。


结果
- 整体准确率 93.1%(58 条测试语音正确 54 条)。
- 陌生人拒识 16 条中正确拒掉 15 条 —— 这一项比分类准确率更能说明系统能不能真用。
- 做出可交互的 MATLAB GUI:录音、播放、识别、存训练样本、重建声纹库、选 WAV 文件,并同屏显示波形、频谱声纹和 MFCC 声纹。
用到的技术
- MATLAB
- MFCC
- GMM / EM
- CMVN
- 端点检测 VAD
- 语音信号处理