本项目实现了一个基于深度学习的打鼾声音与呼吸骤停关联检测系统,能够通过分析音频数据识别可能伴有呼吸暂停的打鼾模式。
- 音频加载与重采样
- 噪声消除(维纳滤波)
- 音频标准化
- 音频分段
- MFCC(梅尔频率倒谱系数)
- 梅尔频谱图
- 普通频谱图
- Chroma特征
- 能量特征
- 过零率
- CNN+LSTM模型
- Transformer模型
- 纯CNN模型(基线)
- 数据加载与预处理
- 数据集划分
- 模型训练
- 训练历史可视化
- 模型评估
- 实时音频流检测
- 音频文件检测
- 检测结果实时显示
- 对txt文件中的链接进行分类
- 支持多种分类规则
- 结果可视化与保存
python -m venv venv# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activatepip install numpy tensorflow keras librosa scikit-learn matplotlib soundfile sounddevice seaborn将音频数据按照以下目录结构组织:
data/
normal/ # 正常打鼾音频
file1.wav
file2.wav
...
apnea/ # 伴有呼吸暂停的打鼾音频
file1.wav
file2.wav
...
- .wav
- .mp3
python train.py参数说明:
- 可通过修改脚本中的
run()函数参数调整训练配置 model_type: 模型类型,可选cnn_lstm、transformer或cnnepochs: 训练轮数batch_size: 批次大小
训练结果:
- 模型文件保存到
models/目录 - 训练历史图保存到
models/目录 - 混淆矩阵保存到
models/目录
python real_time_detection.py --model models/cnn_lstm_best.h5python real_time_detection.py --model models/cnn_lstm_best.h5 --file path/to/audio.wav参数说明:
--model: 训练好的模型路径--file: 要检测的音频文件路径(可选,不指定则进行实时检测)--duration: 实时检测时长(秒)--threshold: 呼吸暂停检测阈值(默认0.5)
python classify_links.py功能说明:
- 对
778740145531650048.txt文件中的链接进行分类 - 分类结果保存到
classified_links/目录 - 分类类别:
raw_data: 原始APNEA_RML数据cleaned_data: 清洗后的APNEA_RML数据other: 其他类型数据
- 3层CNN提取频谱图特征
- 2层LSTM捕获时序信息
- 全连接层进行分类
- 多头自注意力机制
- 位置编码
- 前馈网络
- 全局平均池化
- 3层CNN提取特征
- 全连接层进行分类
原始音频 → 预处理 → 特征提取 → 模型输入
- 预处理:降噪、标准化、分段
- 特征提取:提取梅尔频谱图等特征
- 模型输入:将特征输入深度学习模型
- 音频获取:通过麦克风实时获取或从文件读取
- 预处理:降噪、标准化
- 特征提取:提取梅尔频谱图
- 模型预测:使用训练好的模型进行预测
- 结果输出:显示检测结果
.
├── audio_preprocessing.py # 音频预处理模块
├── feature_extraction.py # 特征提取模块
├── model.py # 深度学习模型模块
├── train.py # 模型训练与验证模块
├── real_time_detection.py # 实时检测演示模块
├── classify_links.py # 链接分类模块
├── README.md # 使用说明文档
├── models/ # 模型保存目录
├── data/ # 数据目录
└── venv/ # 虚拟环境
- 数据质量:高质量的音频数据对模型性能至关重要
- 模型选择:根据实际需求选择合适的模型
- 实时检测:实时检测需要足够的计算资源
- 阈值调整:根据实际情况调整呼吸暂停检测阈值
- 增加更多音频特征类型
- 尝试更复杂的模型架构
- 增加数据增强技术
- 实现更精确的呼吸暂停事件定位
- 开发用户友好的GUI界面
本项目采用MIT许可证。
如有问题或建议,请联系项目维护者。