基于集成学习的心肺听诊音自动分类系统设计与实现
摘要心肺听诊是临床诊断心肺疾病的重要手段但传统听诊依赖医生主观经验诊断结果易受个体差异影响。为提高心肺音分类的客观性准确性本文设计并实现了一套基于集成学习的心肺听诊音自动分类系统。项目简介DeepCure 是一套基于集成学习的心肺听诊音自动分类系统旨在辅助临床医生快速筛查心肺异常。系统涵盖从音频预处理、特征提取 、模型训练到可视化诊断的完整流程。系统概述本系统采用 51 例心音、51 例肺音及 146 例心肺混合录音作为实验数据。在预处理阶段对原始音频进行降噪、归一化及高通滤波处理并利用 Butterworth 带通滤波器将混合录音分离为心音分量20–150 Hz和肺音分量150–2000 Hz。在特征提取阶段提取了 13 维 MFCC 系数及其统计量、频谱质心、频谱带宽、频谱滚降、频谱平坦度、频谱对比度、过零率、短时能量、起始强度、峰态系数等共计 40 余维声学特征。针对肺音中爆裂音与喘鸣音难以区分的问题引入频谱平坦度、频谱对比度及起始检测等判别性特征以增强分类能力 同时采用类别感知的数据增强策略包括噪声注入、时间平移、时间拉伸、音调偏移等缓解样本不均衡问题。在分类模型方面构建了基于随机森林、XGBoost和支持向量机的软投票集成分类器分别针对心音四分类正常、杂音、心律不齐、额外心音和肺音三分类正常、爆裂音、喘鸣/鼾音任务进行训练与优化。通过类别加权采样、正则化参数调优及五折交叉验证等策略提升模型的泛化性能。最终基于 PySide6 框架开发了桌面端可视化应用实现了音频上传、心肺音分离、波形与频谱可视化、自动分类诊断及置信度展示 等功能为临床辅助诊断提供了一套完整的解决方案。系统架构系统采用”音频预处理→Butterworth带通滤波心肺分离→多维声学特征提取→RFXGBoostSVM软投票集成分类→PySide6桌面端可视化诊断”的五阶段流水线架构。项目结构项目采用四层模块化架构preprocess.py 负责音频降噪、心肺分离与特征提取train.py 构建RFXGBoostSVM集成模型并训练评估predict.py 加载模型进行推理预测ui/ 包提供PySide6桌面端可视化界面。训练产物保存在 models/ 目录下。目录结构核心模块系统由四个核心模块组成。音频预处理模块负责原始音频的降噪、归一化与高通滤波通过Butterworth带通滤波器将混合录音分离为 心音20–150 Hz和肺音150–2000 Hz分量并提取MFCC、频谱质心、频谱平坦度、频谱对比度、过零率、短时能量、起始强度 峰态系数等40余维声学特征同时支持类别感知的数据增强策略。模型训练模块从HS、LS、MIX三个数据源加载音频映射为心音四分类和肺音三分类标签构建随机森林、XGBoost和SVM软投票集成分类器通过类别加权采样和五折交叉验证优化模型泛化性能。推理 测模块加载已训练的集成模型、缩放器和标签编码器对新音频完成预处理、分离、特征提取到分类推理的全流程分析。桌面界面模 基于PySide6构建暗色医疗主题应用提供音频上传、波形与频谱可视化、心肺分离波形对比、诊断结果与置信度展示等交互功能。快速开始安装依赖 pip install -r requirements.txt然后执行 python app.py 启动桌面应用。上传WAV音频文件后点击”开始分析”系统自动完成心肺音分离、特征提取与分类诊断。执行 python train.py 启动训练流程。系统自动加载 data/HS/、data/LS/ 和 data/MIX/ 中的音频数据经预处理和特征提取后分别训练心音四分类正常/杂音/心律不齐/额外心音和肺音三分类正常/爆裂音/喘鸣鼾音集成模型结果保存至 models/ 目录。环境要求系统运行环境要求Python 3.8及以上版本核心依赖包括PySide6桌面GUI框架、scikit-learn机器学习库、XGBoost梯度提升库、libro sa音频处理库、scipy信号处理库、noisereduce音频降噪库、matplotlib数据可视化库、pandas数据处理库、numpy数值计算库及sound file音频读写库。所有依赖均可通过pip install -r requirements.txt一键安装。运行实验系统提供训练和推理两种运行模式。训练模式下执行python train.py系统自动加载data/HS、data/LS和data/MIX目录下的音频数据 及labels目录下的标签文件依次完成音频降噪、心肺分离、特征提取和类别感知数据增强分别训练心音四分类和肺音三分类集成 型通过五折交叉验证评估模型性能最终将模型、缩放器和标签编码器保存至models目录。推理模式下执行python app.py启动桌面 应用在界面左侧点击”上传音频文件”选择WAV格式录音点击”开始分析”后系统自动完成音频预处理、心肺音分离、特征提取与集成 模型推理右侧内容区同步展示完整音频波形图、梅尔频谱图、心肺分离波形对比以及心音和肺音的诊断结果与各类别置信度查看结果分析完成后界面顶部文件信息栏显示当前音频的文件名、时长、采样率和文件大小。可视化区域提供三个标签页波形图展示完整── 频的时域波形频谱图展示梅尔频谱的时频分布心肺分离页展示经带通滤波分离后的心音20–150 Hz和肺音150–2000 Hz波形对比。下方两张诊断卡片分别显示心音和肺音的分类结果包括诊断标签、最高置信度百分比以及各类别的概率分布进度条── 左侧边栏同步显示估算的心率和呼吸频率。正常结果以绿色标识异常结果以橙色警示标识。实验结果系统在心音四分类和肺音三分类任务上均取得了较好的分类效果通过五折交叉验证和独立测试集评估验证了集成学习模型的泛化能力。识别效果图1 系统界面图2 文件就绪图3 心音诊断心率不齐 肺音诊断爆裂音 波形图图4 心音诊断心率不齐 肺音诊断爆裂音 频谱图图5 心音诊断心率不齐 肺音诊断爆裂音 心肺分离图6 心音诊断额外心音 肺音诊断爆裂音 波形图图7 心音诊断额外心音 肺音诊断爆裂音 频谱图图8 心音诊断额外心音 肺音诊断爆裂音 心肺分离图9 心音诊断额外心音 肺音诊断喘鸣/鼾音 波形图图10 心音诊断额外心音 肺音诊断喘鸣/鼾音 频谱图图11 心音诊断额外心音 肺音诊断喘鸣/鼾音 心肺分离图12 心音诊断杂音 肺音诊断爆裂音 波形图图13 心音诊断杂音 肺音诊断爆裂音 频谱图图14 心音诊断杂音 肺音诊断爆裂音 心肺分离图15 心音诊断正常 肺音诊断喘鸣/鼾音 波形图图16 心音诊断正常 肺音诊断喘鸣/鼾音 频谱图图17 心音诊断正常 肺音诊断喘鸣/鼾音 心肺分离结果点评系统整体分类效果良好但受限于数据集规模较小心音51例、肺音51例、混合录音146例模型在测试集上可能出现过拟合倾向尤其当测试准确率接近100%时需谨慎解读。肺音分类中爆裂音与喘鸣/鼾音的区分难度较高置信度差距较小说明两类异常肺音在频谱特征上存在一定重叠。后续可通过扩充数据集规模、引入更多临床录音来源以及采用更深层的特征表示方法进一步提升模型的鲁棒──和临床适用性。项目资源包括完整的项目源代码、演示视频、运行截图开箱即用。关于项目本项目是一套面向临床辅助诊断的心肺听诊音自动分类系统通过分析听诊录音自动识别心音异常杂音、心律不齐、额外心音和肺音异常爆裂音、喘鸣/鼾音旨在降低传统听诊对医生主观经验的依赖为基层医疗机构提供快速、客观的心肺疾病初筛工具。项目背景心肺听诊是临床诊断心血管及呼吸系统疾病中最基础、最常用的检查手段之一但传统的人工听诊高度依赖医生的临床经验和主观判断不同医生对同一段听诊音的解读往往存在差异且在基层医疗机构中经验丰富的专科医生相对匮乏。随着数字听诊器的普及以及机器学习技术的发展利用计算机对心肺听诊音进行自动分析与分类成为可能。基于此本项目采用集成学习方法构建了一套心肺听诊音自动分类系统旨在为心肺疾病的计算机辅助诊断提供技术支持从而辅助医生提高诊断效率与诊断结果的一致性。作者信息作者Bob (张家梁)原创声明本项目为原创作品