基于GUI的说话人性别识别系统
项目介绍
本项目开发了一套基于MATLAB图形用户界面(GUI)的说话人性别识别系统。该系统通过对输入语音信号进行深入的数字化处理,提取能够反映性别特征的关键声学参数。系统核心逻辑基于人体生理结构差异导致的基音频率(Pitch)差异:男性声带较厚且长,基音频率较低;女性声带较薄且短,基音频率较高。系统集成了信号采集、预处理、特征提取及自动分类功能,为语音信号处理的研究与教学提供了一个可视化的实验平台。
功能特性
- 多渠道语音获取:支持从本地硬盘加载WAV或MP3格式的录音频文件,并具备实时麦克风录音功能(固定录制时长为3秒)。
- 标准化预处理:自动进行去直流偏移处理,并应用高通预加重滤波器,以提升高频共振峰的显现度。
- 精准特征提取:
* 利用自相关函数法(Autocorrelation Method)在时域内精确定位基音周期。
* 实现了梅尔频率倒谱系数(MFCC)的提取算法,作为语音特征的辅助描述。
- 动态可视化分析:实时生成并展示语音时域波形图、短时能量分布图以及基音频率随时间变化的轨迹分布。
- 智能自动判别:基于统计学均值逻辑,对有效语音段的基音频率进行加权计算,并与预设阈值对比,自动给出性别识别结论。
实现逻辑与算法细节
系统程序严格遵循语音识别的经典架构流程,其详细实现逻辑如下:
1. 信号采集与预处理
- 采样规范:系统采用8000Hz采样率进行数字化,确保覆盖语音识别的核心频带。
- 预处理步骤:首先通过减去均值滤除直流干扰;随后使用传递函数为 H(z) = 1 - 0.97z⁻¹ 的数字滤波器进行预加重,增强语音的高频部分,使频谱变得平坦,利于后续分析。
2. 分帧与加窗
- 短时分析:由于语音信号的非平稳性,系统将其划分为若干短时帧。帧长设定为30ms(即240个采样点),帧移设定为15ms(50%重叠率)。
- 平滑处理:每帧信号均通过汉明窗(Hamming Window)加权,以减小分帧带来的频谱泄露风险。
3. 特征提取核心算法
- 短时能量计算:通过计算每帧信号的平方和得出能量曲线,并设定能量阈值(最大能量的10%),用于区分语音段与静音/噪声段。
- 基音频率(Pitch)提取:
* 算法采用自相关函数法。在限定的搜索范围(80Hz至300Hz)内寻找自相关函数的最大峰值。
* 通过峰值对应的延迟位置估算基音周期,进而计算得出当前帧的基音频率(Hz)。
* 将信号转化至频域获取功率谱。
* 使用24个梅尔滤波器组对频谱进行三角滤波。
* 取对数后执行离散余弦变换(DCT),提取前12维系数作为描述语音包络的关键特征。
4. 性别判定原则
- 系统过滤掉所有非语音段的无效基音数据。
- 判定逻辑:计算所有有效语音帧的平均基音值。
- 阈值设置:若平均基音频率小于160Hz,系统判定为“男”;若平均基音频率大于等于160Hz,系统判定为“女”。
使用方法
- 启动程序:在MATLAB环境中运行主程序脚本,弹出系统主界面。
- 输入语音:
* 点击“读取音频文件”选择本地存储的WAV/MP3语音。
* 或者点击“开始实时录音”,根据弹出提示通过麦克风录制3秒语音。
- 结果转换:点击“提取特征与识别”按钮,系统将自动执行流水线处理。
- 查看分析:观察界面下方的三个图表(时域图、能量图、基音轨迹图),点击识别后界面右上角将直接显示“男”或“女”的识别结果以及具体的平均基音数值。
系统要求
- 软件环境:MATLAB R2016b 及以上版本。
- 硬件要求:具备正常工作的声卡、麦克风(若需实时录音)及音频输出设备。
- 依赖组件:程序内含完整的信号处理逻辑,无需额外安装特定的第三方语音工具箱。