PhysioNet/CinC Challenge 2016 心音数据集 — 听诊音正常/异常分类基准 AI-Ready Wikipedia

公开最大心音(PCG)分类基准 · 3,240 条录音 / 764 人 · 2,000 Hz .wav

来源 PhysioNet(MIT Laboratory for Computational Physiology 等) url: https://physionet.org/content/challenge-2016/1.0.0/发布时间: 2026-09-13最后更新: 2026-09-25 阅读 40
PhysioNet/CinC Challenge 2016 心音数据集 — 听诊音正常/异常分类基准 AI-Ready Wikipedia

信息速览

数据集名称PhysioNet/CinC Challenge 2016 心音数据集 — 听诊音正常/异常分类基准 AI-Ready Wikipedia
数据类型3,240 条训练录音 / 764 人,隐藏测试 1,277 条 / 308 人,2,000 Hz .wav 单导联,解压约 1.1 GB,ODC-By 开放下载
规模训练集 764 名受试者(隐藏测试集另有 308 名)
接入方式PhysioNet(MIT Laboratory for Computational Physiology 等) url: https://physionet.org/content/challenge-2016/1.0.0/
AI 就绪度

数据集封面

PhysioNet/CinC Challenge 2016 心音数据集 — 听诊音正常/异常分类基准 AI-Ready Wikipedia

INFOBOX

数据集名称 PhysioNet/CinC Challenge 2016 Heart Sound Database
英文全称 Classification of Normal/Abnormal Heart Sound Recordings: The PhysioNet/Computing in Cardiology Challenge 2016
别名/简称 PhysioNet Challenge 2016、CinC Challenge 2016、challenge-2016、PhysioNet 2016 心音数据集
疾病分类(ICD-11) 分类目标表现为 MC83.Z 心脏杂音(症状章);异常病例主因为 BB61 二尖瓣关闭不全、BB70 主动脉瓣狭窄等瓣膜病(详见 §2.1)
SNOMED CT 数据集标签不携带诊断编码;相关概念:11851006 / 155278007 / 83898004(二尖瓣疾病,MalaCards 收录,详见 §2.1b)
数据模态 单导联心音图 PCG(.wav 音频);training-a 各录音另含同步记录 ECG
AI 任务类型 心音正常/异常二分类(含 unsure 弃权类)、心音分割(S1/收缩期/S2/舒张期)、信号质量评估(SQI)、标签噪声学习
样本总数 训练集 3,240 条录音 / 764 名受试者(a-f 六库);验证集 300 条(训练集副本);隐藏测试集 1,277 条 / 308 名受试者
数据大小 解压约 1.1 GB;整包 zip 1,011.4 MB(training.zip 181.3 MB、validation.zip 17.5 MB、annotations.zip 10.1 MB)
数据格式 .wav(16-bit little-endian PCM,统一 2,000 Hz 重采样)+ .hea 头文件 + CSV 标注(REFERENCE.csv / REFERENCE-SQI.csv / RECORDS)
许可证 Open Data Commons Attribution License v1.0(ODC-By)
访问级别 开放下载(无需注册或申请,遵守许可条款即可;含 AWS 开放数据桶)
DUO 标签 NRES(开放使用,义务为署名引用)
语言 英文(文档、头文件与标注 CSV)
首发日期 2016-03(挑战启动,validation.zip 于 2016-03-18 存档)
最后更新 2022-07-28(annotations.zip 更新;版本保持 1.0.0 单版本)
发布机构 PhysioNet / Computing in Cardiology Challenge 2016 组织者(Clifford、Liu、Moody、Springer、Silva、Li、Mark 等)
官方主页 https://physionet.org/challenge/2016/
下载地址 https://physionet.org/content/challenge-2016/1.0.0/
DOI 10.1088/0967-3334/37/12/2181(数据集描述论文)
AI 就绪度评分 ⭐⭐⭐⭐(4/5)— 三类标签、SQI 与两套分割标注齐全,官方评分机制完全公开;扣分项:无官方 Python 预处理(仅 MATLAB 样例)、unsure 处理无统一约定、需自行实现患者级划分与心音分割
页面状态 published

§0 E-E-A-T 信任声明与免责声明

医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(心音生理学、心脏杂音与瓣膜病映射、金标准定位)、§7 偏倚分析。

数据工程审核者:千方病案医学编辑部交叉审核:医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典(PCG 音频与多套标注的字段字典)、§5 数据划分策略、§6 预处理 Pipeline 和坑点。

审核日期:2026-09-05

审核方式:交叉审核

利益冲突声明:千方病案医数集与 PhysioNet、MIT、Computing in Cardiology 会议及各源数据库研究组无任何商业利益关联。本页面不销售 PhysioNet/CinC Challenge 2016 数据集本身,仅提供 AI 就绪指南与学术信息服务。

医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。

技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。

数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。PhysioNet/CinC Challenge 2016 以 ODC-By 开放分发、无需申请,但使用时须署名引用 Liu et al. 2016 论文与 PhysioNet 平台;心音音频属敏感健康数据,再分发与二次利用前请自行完成合规评估。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。


§1 数据集概览

§1.0 30 秒速览

这是什么? PhysioNet/CinC Challenge 2016 心音数据集是人类历史上第一个大规模国际心音分类竞赛留下的公开数据。医生用听诊器听到的"咚-哒"声被麦克风录下来,就是心音图(PCG)。这份合集把来自全球 9 个研究团队的心音录音统一整理成 2,000 Hz 的 .wav 文件:训练部分有 3,240 条录音、来自 764 位受试者(含儿童与成人),每条录音被专家标注为"正常""异常"或"太吵无法判断"三类。

为什么重要? 心脏瓣膜病影响全球数以千万计的人,而听诊是最便宜的一线筛查手段——但很依赖医生经验。在 2016 年之前,心音算法研究各自为战:数据不公开、方法不透明、结果没法比。这个挑战赛第一次把"真实世界(含大量噪声)录音 + 统一隐藏测试集 + 公开评分公式"凑齐,这套"盲测 + 公式透明"设计吸引全球多国团队参与角逐,冠军算法在盲测集上拿到 0.8602 分,此后的心音 AI 论文几乎都拿它当基准。

我能用它做什么? 你可以训练一个 AI 模型:输入一段几秒到两分钟的心音录音,输出"正常/异常"判断,用来做心脏瓣膜病初筛;也可以做更底层的心音分割(把 S1、S2 心音和收缩期、舒张期切出来)或信号质量评估。数据开放下载、只需署名引用,CPU 就能跑通基线,非常适合入门医疗音频 AI。

§1.1 摘要

PhysioNet/CinC Challenge 2016 由 Gari Clifford、Chengyu Liu 等组织,挑战任务为"心音录音的正常/异常分类",配套数据描述论文发表于 Physiological Measurement(Liu et al., 37(12):2181-2213, DOI 10.1088/0967-3334/37/12/2181)。数据集汇集全球 9 个心音数据库(由 7 个研究组采集,胎音库 SUFHSDB 未参赛),统一抗混叠重采样至 2,000 Hz 后以 16-bit .wav 单导联 PCG 分发。挑战训练集含 a-f 六库 3,240 条录音 / 764 名受试者(初始公布 A-E 五库 3,126 条,后增 training-f),录音时长 5 秒至 120 余秒,标注为 normal / abnormal / unsure 三类,训练集共 84,467 个心拍;4 个源库按 70:30 拆分,training-a 与 training-f 专属训练、TUTHSDB 与 SSHHSDB 专属测试,构成与训练人群互斥的隐藏测试集(308 人 / 1,277 条,永不公开)。评分采用按信号质量加权的敏感度/特异度均值 Score=(Se+Sp)/2,参赛者两阶段合计最多 15 次提交,官方冠军(Potes 与 Parvaneh)得分 0.8602。数据以 ODC-By 许可在 PhysioNet 永久托管(版本 1.0.0,含 AWS 开放数据桶),并提供 Springer HSMM 分割算法的 MATLAB 基线、算法/人工校正两套心拍分割标注与受试者级诊断附录。

§1.2 战略价值

真实噪声与"弃权"机制(算法鲁棒性维度):与同期录音数据集把干净样本挑出来发表不同,本数据集刻意保留真实世界的"脏"——说话、听诊器摩擦、呼吸、肠音全部在场,并为此设计第三类标签 unsure(too noisy to know)与按信号质量加权的评分公式:对干净参考答 unsure 得 0 分,对嘈杂参考答 unsure 等效答对。这迫使算法学会"知道自己不知道",是医疗音频里最早的带弃权评测范式之一,对今天构建可部署的听诊筛查系统仍有直接参考价值(来源:官方挑战页)。

多中心异质性(域泛化维度):训练集 66.1% 的录音来自单一数据库 training-e,且各库的采集设备、环境、患者谱与录音质量差异显著——这既是麻烦也是资产:它天然构成"多域"设定,leave-one-database-out 协议可以直接量化跨设备、跨人群泛化损失,是检验心音模型是否"记住某台听诊器"的试金石(来源:Liu et al. 2016)。

评测生态的统一锚点(可复现性维度):官方公开了完整评分公式、提交规范、两阶段时限与全部参赛论文(CC BY 3.0),训练/测试人群互斥且测试集永不公开——这套"盲测 + 公式透明"设计让挑战赛成绩(MAcc 0.8602)成为十年间心音分类论文公认的历史锚点;尽管后续论文因自定划分而数字普遍更高(84%-99%),官方口径仍是唯一可对齐的参照系(来源:官方挑战页、DTF-STCANet 论文对比表)。

§1.3 同类数据集横向对比表

数据集 规模 设备/模态 采样率 环境 标注 差异化定位
PhysioNet/CinC 2016(本库) 训练 3,240 条 / 764 人 + 隐藏测试 1,277 条 / 308 人 多种数字听诊器,单导联 PCG(training-a 含同步 ECG) 统一 2,000 Hz 临床 + 非临床(家访) normal / abnormal / unsure 三类 + 两套分割标注 规模最大、噪声最真实、评分协议最完整的公开心音分类基准
PASCAL Classifying Heart Sounds Challenge 2011 约 1,000 条量级(A/B 两库) iPhone 自录(A 组)+ 医院采集(B 组) 44,100 Hz 混合 4 类(A)/ 3 类(B),含 artifact 与 unlabeled 更早的先驱赛,但规模小、类别含大量 artifact/unlabeled
Kaggle 镜像(A-E 旧口径) 3,126 条 同官方 2,000 Hz 同官方 同官方(未含 training-f 与 updated 标注) 官方数据的旧快照,适合快速下载但规模与标注均落后
MIMIC-III 波形库(参考) 约 3 万 ICU 记录 床旁监护波形(ECG/PPG/ABP 等) 125 Hz 重症 ICU 临床监护数据 非听诊音、无杂音信息;用于心功能相关任务时与本库互补

§1.4 版本时间轴表

时间 事件 说明
2016-03 挑战公布并开放第一阶段 validation.zip 于 2016-03-18 存档;验证集为训练集 300 条副本
2016-05-01 非官方阶段(Phase I)截止 参赛者须提交至少 1 个可评分的开源 entry(noon GMT)
2016-05-18 training.zip 存档 A-E 五库 3,126 条口径;随后官方增补 training-f 至 3,240 条
2016-08-26 官方阶段最终截止 以完整隐藏测试集评分排名(noon GMT,逾期不评分)
2016-09-02 SQI 标注补充 各训练库 REFERENCE-SQI.csv 更新(信号质量参考标注)
2016-09-11~14 CinC 2016 会议与颁奖 12+ 篇参赛论文发布;冠军 Potes & Parvaneh 得分 0.8602
2016-12 数据集论文正式发表 Liu et al., Physiol Meas 37(12):2181-2213,DOI 10.1088/0967-3334/37/12/2181
2022-07-28 标注包更新 annotations.zip 重新打包;版本保持 1.0.0
至今 永久开放托管 PhysioNet 内容页 + AWS 开放数据桶(s3://physionet-open/challenge-2016/1.0.0/)

§1.5 典型应用场景

  1. 心脏瓣膜病初筛分诊:输入单条心音录音,输出 normal / abnormal 二分类(可带 unsure 弃权),用于社区筛查或家用听诊设备的算法原型——任务设计(转诊语义)即源于此场景。
  2. 心音分割:利用官方两套标注(算法生成 + 人工校正)训练 S1/收缩期/S2/舒张期四状态分割器,是所有心拍级特征工程的前置模块(Springer HSMM 即官方基线)。
  3. 信号质量评估(SQI)与标签噪声学习:用 REFERENCE-SQI.csv 与 unsure 标签研究"噪声录音识别"“质量加权损失”“弃权分类”,直接对接真实部署中"录到太吵就提示重录"的需求。
  4. 跨库/跨设备域泛化研究:六库异质设备与人群构成天然多域设定,可做 leave-one-database-out、域自适应与联邦学习评测。
  5. 医疗音频教学与基准复现:数据小(解压约 1.1 GB)、格式标准(.wav + CSV)、CPU 可跑基线,是从音频信号处理跨入医疗 AI 的理想入门数据集。

§1.6 何时选择本数据集(决策速览)

你的需求 是否选本数据集 建议替代
心音正常/异常二分类基准(真实噪声、协议完整) ✅ 首选 —
心音分割 / SQI / 带弃权分类研究 ✅ 首选(两套分割标注 + unsure 机制) —
多数据库域泛化 / 跨设备鲁棒性 ✅ 首选(六库异质) —
需要瓣膜病变细分型(如区分 MR 与 AS) ❌(录音级标签不区分病因) 需要诊断级标注的专病队列
需要逐心拍病理金标准 ❌(分割标注≠病理标注) 专病心内电生理/超声队列
需要正式"测试集"跑分并公开比较 ❌(官方测试集永不公开) 自行按 §5 协议做患者级划分

一句话:只要研究目标落在"真实录音条件下的心音听诊智能化",本数据集就是公开数据中的第一候选;一旦需要病因细分、逐心拍病理标签或可公开盲测的官方测试集,就必须在它之外另行设计。


§2 医学背景

§2.1 ICD-11 编码映射表

本数据集的录音级标签只有 normal / abnormal / unsure 三类,不含逐例疾病编码;异常录音的病因以心脏瓣膜缺陷(二尖瓣脱垂、二尖瓣反流、主动脉瓣狭窄、瓣膜术后)与冠心病为主(来源:官方挑战页)。下表给出标签及其背后的临床实体与 ICD-11 的对齐,便于检索与术语互操作。

数据集标签/临床实体 ICD-11 编码 术语 说明
异常录音的典型听诊表现 MC83.Z Cardiac murmur(心脏杂音,症状章) 分类任务的直接目标量;ICD-10 对照 R01.1
二尖瓣关闭不全(异常主因之一) BB61 Mitral valve insufficiency(非风湿性) ICD-10 对照 I34.0;二尖瓣脱垂(I34.1)常伴反流
主动脉瓣狭窄(异常主因之一) BB70 Aortic valve stenosis(非风湿性) ICD-10 对照 I35.0;老年钙化性狭窄最常见
冠心病(异常主因之一) 缺血性心脏病章节(未逐例编码) Ischaemic heart disease 数据集不提供逐例诊断,仅说明病谱
二尖瓣疾病(总括) BB6Y / BB6Z Mitral valve disease, other specified / unspecified MalaCards 收录口径

§2.1b SNOMED CT 映射表

标签/概念 ICD-11 SNOMED CT 码 术语
心脏杂音 MC83.Z —(本条目不列未核实编码) Cardiac murmur
二尖瓣疾病 BB6Y / BB6Z 11851006 / 155278007 / 83898004 Mitral valve disease(MalaCards 收录的 3 个相关概念)
主动脉瓣狭窄 BB70 —(本条目不列未核实编码) Aortic valve stenosis

说明:数据集本身以"录音→三类标签"为粒度,SNOMED CT 映射仅服务于术语检索与临床语义对齐;逐例诊断信息仅存在于受试者级附录 CSV(Online_Appendix_training_set.csv,见 §4.6)。

§2.2 生理学背景与流行病学语境

心音的生理来源:正常心动周期有两个标志性听诊音——S1(二尖瓣、三尖瓣关闭,标志收缩期开始)与 S2(主动脉瓣、肺动脉瓣关闭,标志舒张期开始)。心音图(PCG)通过置于胸壁的听诊器/传感器把这些机械振动转为电信号,是心脏机械活动(而非电活动)的直接记录——这也是本数据集 training-a 同步提供 ECG 的原因:一个记录电活动、一个记录机械活动。

杂音与病变:当瓣膜狭窄或关闭不全、血流通道异常时,血流经过病变部位产生湍流,在收缩期或舒张期出现额外的心脏杂音。本数据集异常录音的主要病因即心脏瓣膜缺陷(二尖瓣脱垂、二尖瓣反流、主动脉瓣狭窄、瓣膜术后)与冠心病(来源:官方挑战页)。值得强调的是,杂音还分生理性(无害)与病理性,仅凭杂音存在与否推断疾病正是这个任务难度的来源之一。

流行病学语境:在老龄化社会,退行性钙化性主动脉瓣狭窄与二尖瓣反流是瓣膜病的主流;先天性二叶式主动脉瓣在人群中的比例约 0.7-1.4%,会使狭窄发生提前 10-20 年;在低收入地区,风湿性心脏病仍是年轻人瓣膜病的重要病因(来源:瓣膜病综述)。心脏听诊是成本最低的一线筛查手段,但高度依赖医生经验——这正是自动化心音分析的公共价值所在。

§2.3 临床任务定义(针对 AI 就绪)

  1. 录音级筛查分诊(核心任务,官方定义):对每条录音输出三类决策——normal(无需转诊)、abnormal(需专家进一步评估或治疗)、unsure(噪声太大无法判断,应重录)。这是一个带"弃权"的三分决策问题,而非纯二分类;官方评分对两类参考分别处理 unsure(见 §8.3)。
  2. 心音分割(前置任务):把录音切分为 S1、收缩期、S2、舒张期四状态序列。官方基线采用 Springer 的 HSMM + 逻辑回归方案,标注分算法生成(springer_alg)与人工校正(hand_corrected)两套。
  3. 信号质量评估(SQI):判断录音质量是否足以判读,对应 REFERENCE-SQI.csv 与 unsure 标签,是"先筛质量再分类"流水线的第一环。
  4. 标签噪声与不确定性学习:unsure 与两类参考下的差异化计分,为代价敏感学习、选择性预测(selective prediction)研究提供天然测试床。

§2.4 患者人群表

维度 内容
来源 全球 9 个心音数据库(8 库参与挑战;4 库 70:30 拆分入训练/测试,2 库专属训练,2 库专属测试)
采集时间 各源库于 2016 年挑战前陆续采集,精确起止未逐库公开(论文提供逐库明细)
年龄 儿童与成人兼有(健康志愿者与确诊患者均含)
性别/其他人口学 受试者级人口学(年龄、性别等)与诊断见在线附录 CSV(79 列),本条目未逐列核实
就医类型 临床环境(门诊/病房)与非临床环境(如家访)并存
设备 多种型号数字/电子听诊器,各库不一(论文逐库提供传感器类型与原始采样率)
采集量 每位受试者 1-6 条录音;听诊位置覆盖 9 处(典型 4 区:主动脉瓣、肺动脉瓣、三尖瓣、二尖瓣区)

§2.5 临床价值

  • 初筛分诊:在基层与家庭场景,录音级 normal/abnormal 判断可支撑"要不要转诊做超声心动图"的初筛逻辑——官方任务定义(含 unsure 重录建议)就是按这个流程设计的。
  • 听诊教学与质控:带专家标签的真实噪声录音可用于医学生听诊训练、以及"AI 与医生判读一致性"研究素材。
  • 可穿戴/家用听诊产品原型:2,000 Hz 单导联 .wav 与真实噪声分布,使其成为数字听诊器算法(降噪、SQI、分类)最贴近部署条件的公开测试床。
  • 公共卫生语境:在风湿性心脏病高发地区,廉价听诊筛查 + AI 辅助具有重要公共卫生潜力——但任何此类应用都必须先通过本数据集之外的前瞻性临床验证(见 §7.8)。

§2.6 金标准表

维度 内容
官方划分 训练集 3,240 条 / 764 人(公开);验证集 300 条(训练集副本,仅验证代码可运行);隐藏测试集 1,277 条 / 308 人(不公开,与训练人群互斥)
标签体系 录音级三类:normal(-1)/ abnormal(+1)/ unsure(0),写入各库 REFERENCE.csv
标注方式 normal 来自健康受试者、abnormal 来自确诊心脏病患者(专家判读 + 临床诊断背景);不提供更细的异常分型
标注者 Challenge 组织者团队与各源数据库临床研究组;分割标注中 20.7% 的训练录音经人工校正
金标准性质 录音级弱标签:一条录音一个标签,不标注逐心拍病理;SQI 参考标注经 2016-09 更新补充

§3 数据集规格

§3.0 版本抉择矩阵

PhysioNet 上仅有一个正式版本(1.0.0,2022-07-28 最后更新标注包),不存在多版本共存问题;真正需要"抉择"的是取数渠道与数据口径——尤其是要避开 Kaggle 镜像的 A-E 旧口径快照。

你的需求 推荐渠道/形态 大小 理由
官方权威、六库完整口径(3,240 条) PhysioNet content 页 training.zip / validation.zip / annotations.zip 合计约 209 MB 官方 1.0.0 口径,含 training-f 与 updated 标注,附 MD5/SHA1/SHA256 校验文件
云端/脚本化批量拉取 AWS 开放数据桶 s3://physionet-open/challenge-2016/1.0.0/ 整包 1,011.4 MB –no-sign-request 免注册,支持按子目录拉取
溯源研究(9 库原始存档 + 参赛论文) PhysioNet content 页整包(含 sources/、papers/) 1,011.4 MB sources/ 收录 9 个源数据库原始存档、papers/ 收录 12+ 篇参赛论文(CC BY 3.0)
Kaggle Notebook 快速体验 Kaggle 镜像 bjoernjostein/physionet-challenge-2016(v1) 378.77 MB ⚠️ A-E 旧口径 3,126 条、无 training-f 与 updated 标注,规模与官方 1.0.0 对不上(见坑点 7)

§3.1 模态详情

模态 设备 通道 采样率(分发版) 说明 任务用途
心音图 PCG 多种型号数字/电子听诊器(逐库不一,源库原始采样率各异) 1(单导联) 统一 2,000 Hz(抗混叠重采样后) 听诊位置可取 9 种不同部位,典型为 4 个瓣膜听诊区;16-bit little-endian .wav 分类/分割/SQI 的主输入
ECG(仅 training-a) 与 PCG 同步记录 1 未在挑战页逐项列出(随 training-a 录音配套分发) 记录心电活动,与心音的机械活动互为参照 心拍对齐、R 峰辅助特征(仅 a 库可用)

两个工程要点:其一,原始录音的采样率各库不一(论文 Table 1 逐库给出传感器与采样率明细),分发版已统一到 2,000 Hz,因此无需自行重采样对齐;其二,2,000 Hz 对心音而言是明显过采样的(心音能量主要集中在中低频段),如需省内存可自行降采样到 1,000 Hz 甚至 500 Hz,但降采样必须保留抗混叠滤波(见 §6.3)。

§3.2 按子集样本数表

训练集(六库,行和 764 名受试者 / 3,240 条录音,双源核验一致):

子集 源数据库(官方缩写) 受试者数 录音数 占训练录音 备注
training-a MITHSDB 121 409 12.6% 各录音含同步 ECG;专属训练
training-b AADHSDB 106 490 15.1% 70:30 拆分库
training-c AUTHHSDB 31 31 1.0% 最小库;70:30 拆分库
training-d UHAHSDB 38 55 1.7% 70:30 拆分库
training-e DLUTHSDB 356 2,141 66.1% 单库占训练集三分之二(见坑点 4)
training-f SUAHSDB 112 114 3.5% 后增补库(2016-05 后);专属训练
合计 — 764 3,240 100% 初始公布口径 A-E 为 3,126 条

隐藏测试集(不公开,与训练人群互斥;仅官方评估使用):

测试子集 录音数 来源说明
test-b / test-c / test-d / test-e 205 / 14 / 24 / 883 对应四库 70:30 拆分的测试份额
test-g(TUTHSDB) 116 专属测试库
test-i(SSHHSDB) 35 专属测试库
合计 1,277 308 名受试者;测试集将保持私有

§3.3 格式表

文件 格式 说明
库名/编号.wav .wav(16-bit little-endian mono PCM) 心音波形本体,统一 2,000 Hz
库名/编号.hea WFDB 风格文本头文件 记录采样率、采样点数等元信息,与 .wav 成对出现
REFERENCE.csv CSV 录音级三类标签:-1 normal / 0 unsure / 1 abnormal(官方评分矩阵编码)
REFERENCE-SQI.csv CSV 信号质量参考标注(2016-09-02 补充更新)
RECORDS / RECORDS-normal / RECORDS-abnormal 纯文本列表 录音编号清单(全部 / 按标签分组)
MD5SUMS / SHA1SUMS / SHA256SUMS 校验清单 下载完整性校验
annotations/*.tsv 制表符分隔文本 心拍四状态段标注(S1 / systole / S2 / diastole 的起止时间),springer_alg / hand_corrected / updated 三个子目录
Online_Appendix_training_set.csv CSV 受试者级人口学与诊断信息(Kaggle 数据浏览器显示 79 列)
Online_Appendix_Diagnosis_meanings.csv CSV 附录诊断代码的文本含义对照
sample2016.zip / sample2016b.zip MATLAB 源码包 官方基线:HSMM 四状态分割 + 20 特征 + 逻辑回归(b 版为 Schmidt 算法简化版,兼容 GNU Octave)

§3.4 存储大小

官方 content 页整包 1,011.4 MB(解压约 1.1 GB)。按需取用即可——多数任务不需要整包:

下载对象 大小 何时需要
training.zip 181.3 MB(2016-05-18 存档) 必需:3,240 条 .wav+.hea+标签,全部分类/特征实验的基础
validation.zip 17.5 MB(2016-03-18 存档) 复现官方提交验证流程时(内容为训练集副本,见坑点 1)
annotations.zip 10.1 MB(2022-07-28 更新) 心拍分割/心拍级特征任务必需
整包(含 sources/、papers/) 1,011.4 MB 溯源研究、9 个源库原始存档、12+ 篇参赛论文
  • 工作盘:预留 ≥5 GB(原始 + 解压 + 预处理中间产物)。
  • 内存:2,000 Hz 16-bit 下 3,240 条录音全部驻留约 1 GB 量级,一般工作站可直接全量加载。
  • 移动端/大规模特征实验:按库流式读取,或先降采样到 1,000 Hz 缓存为 .npy(体积约减半)。

§3.5 标注方式

录音级三类标签:normal 来自健康受试者、abnormal 来自确诊心脏病患者(以心脏瓣膜缺陷与冠心病为主),由挑战组织者团队与各源库临床研究组给出,属"一条录音一个标签"的弱标注——不标注逐心拍是否含杂音,也不区分异常的病因分型。unsure(too noisy to know) 是针对真实噪声的第三类:说话、听诊器摩擦、呼吸、肠音等导致部分录音难以甚至无法判读,专家直接弃权。分割标注分两套:springer_alg 为 Springer HSMM 算法自动生成(全量覆盖),hand_corrected 为人工校正版(训练集 20.7%、测试集 15.3% 的录音经人工校正);updated 子目录为后续更新的分类与信号质量标注。SQI 标注(REFERENCE-SQI.csv)是信号质量参考,在挑战结束后的 2016-09-02 补充进各库。

§3.6 标注者资质与一致性

标签由 Challenge 组织者团队(Clifford、Liu、Moody、Springer 等)与 9 个源数据库的临床研究组共同完成:异常标签的背景来自患者临床诊断,正常标签来自健康对照筛选。官方未发布逐条录音的标注者人数、标注轮次或一致性 Kappa 统计;人工校正比例(分割 20.7%)是唯一可查的质控量化指标。使用者可依靠两套分割标注(springer_alg 与 hand_corrected)的差异自行估计分割边界的不确定度,这是本数据集少有的可自行复核标注质量的机制。

§3.7 采集周期

各源数据库于 2016 年挑战启动前由各研究组独立采集,逐库的精确起止日期未随数据包公开(论文提供逐库背景)。挑战本身的时间线:2016-03 公布并开放验证集,2016-05-01 非官方阶段截止,2016-05-18 training.zip 存档,2016-08-26 官方阶段最终截止,2016-09-11 至 14 召开的 CinC 2016 会议颁奖并发布参赛论文,2016-12 数据描述论文正式见刊。

§3.8 地域覆盖

全球多中心:美国、丹麦、希腊、法国、西班牙、伊朗、中国等国家的研究组参与采集,环境覆盖临床(门诊/病房)与非临床(如家访)两类场景。逐库与国家/机构的对应关系及设备明细见数据描述论文(本条目不转写未逐项核实的对应表);这种多中心异质性是本数据集相对单中心数据集的核心资产,也是域偏倚(见 §7.1)的直接来源。

§3.9 设备规格

  • 分发规格(全库统一):2,000 Hz、16-bit little-endian、单导联 .wav;每条录音对应一个 .hea 头文件。
  • 采集设备(逐库不一):各源库使用不同型号的数字/电子听诊器,原始采样率与传感器特性各异(论文 Table 1 逐库列出);统一重采样意味着各库的频率保真度上限并不相同,跨库比较特征时需留意。
  • 听诊位置:可覆盖 9 种不同体表位置,典型为主动脉瓣、肺动脉瓣、三尖瓣、二尖瓣 4 个听诊区;逐录音的听诊位置未在标签文件中逐条给出。
  • training-a 特例:每条录音配套同步 ECG,可用于心拍对齐与跨模态特征实验,但这也使 a 库与其他五库在信息量上不可完全互换(见坑点 4)。

§3.10 深度溯源链

完整链路:9 个研究组各自使用数字听诊器采集(临床 + 非临床环境,含儿童与成人)→ 挑战组织者统一抗混叠重采样至 2,000 Hz、打包为 .wav+.hea 并分配库字母前缀与随机序号 → 4 库按 70:30 拆分、2 库专属训练、2 库专属测试,构成互斥人群 → 2016-03 至 05 分阶段发布 validation 与 training 数据包 → 2016-09 补充 SQI 标注、2016-12 论文见刊 → 挑战后数据以 1.0.0 单版本永久托管于 PhysioNet(2022-07-28 更新标注包),并同步至 AWS 开放数据桶;分割标注与受试者级附录随包演进。任何下游衍生数据集(含 Kaggle 镜像)均以该 1.0.0 为源头。


§4 数据结构

§4.0 目录树

三个核心 zip 解压后的典型布局(各库目录同构):

challenge-2016/
├── training-a/                     # training.zip;b-f 六库同构
│   ├── a0001.wav  a0001.hea        # 音频 + 头文件,成对出现
│   ├── REFERENCE.csv               # 录音级标签:-1 / 0 / 1
│   ├── REFERENCE-SQI.csv           # 信号质量参考(2016-09-02 补充)
│   ├── RECORDS / RECORDS-normal / RECORDS-abnormal
│   └── MD5SUMS / SHA1SUMS / SHA256SUMS
├── training-b/ ... training-f/     # 同构;仅 training-a 含同步 ECG
├── validation/                     # validation.zip:训练集 300 条副本
├── annotations/                    # annotations.zip(2022-07-28 更新)
│   ├── springer_alg/               # HSMM 算法生成的四状态分割 .tsv
│   ├── hand_corrected/             # 人工校正分割(训练 20.7% / 测试 15.3%)
│   └── updated/                    # 更新版分类与信号质量标注
├── papers/                         # 12+ 篇参赛论文(CC BY 3.0)
├── sources/                        # 9 个源数据库原始存档
└── sample2016.zip / sample2016b.zip  # 官方 MATLAB 基线代码

注意三点:validation/ 内的文件名与训练集完全相同(是副本,不是独立录音);annotations/ 的 .tsv 按录音编号对应训练集文件;每库都有 RECORDS-normal 与 RECORDS-abnormal 清单,但没有 unsure 专列清单——unsure 样本只能从 REFERENCE.csv 里按编码 0 过滤。

§4.1 DAIMS 字段字典

字段 类型 粒度 取值/范围 单位 缺失约定 来源文件 用途
record_id string 录音 库字母 + 随机序号(如 a0001、d0055) — 无缺失 文件名 / RECORDS 样本主键
pcg float 波形 录音 原始整型 counts,读入后转浮点 无量纲(可 z-score) 无缺失 库名/编号.wav 模型主输入
fs int 录音 恒为 2,000 Hz 无缺失 .hea 头文件 时间轴换算基准
duration float 录音 约 5-120 余秒(训练);6-104 秒(测试) 秒 无缺失 .wav 长度 定长切窗依据
label int 录音 -1 normal / 0 unsure / 1 abnormal — 无缺失 REFERENCE.csv 分类目标
sqi 参考标注 录音 逐条录音的信号质量参考 — 后补文件(2016-09-02) REFERENCE-SQI.csv 质量筛选/加权
beat_state 区间序列 心拍段 S1 / systole / S2 / diastole 起止 秒 springer_alg 全量,hand_corrected 仅 20.7% annotations/*.tsv 分割任务标签、心拍特征
subject_meta 表格行 受试者 年龄、性别、诊断等(附录 79 列) — 见 §4.6 Online_Appendix_training_set.csv 偏倚审计、亚组分析

字段字典使用提示:label 是录音级弱标签——一条录音内可能同时存在正常与异常的心音片段,把录音级标签当作心拍级金标准使用是典型误用(见坑点 8);beat_state 是心音状态边界而非病理标注,两者不可混为一谈。

§4.2 标签分布统计

训练集三类构成(论文口径,百分比):

标签 编码 占比 参考计数(文献转引) 说明
normal -1 71.1% 2,303 健康受试者录音
abnormal 1 17.7% 572 确诊心脏病患者录音
unsure 0 11.2% 365 噪声过大无法判读
合计 — 100% 3,240 正常:异常 ≈ 4:1

三点解读:第一,类别不均衡约 4:1,直接训练会偏向多数类,需重加权/重采样或阈值调整;第二,unsure 的 365 条是官方评分体系的一部分(对嘈杂参考答 unsure 等效答对,见 §8.3),"全部丢弃 unsure 再报指标"会使自己的数字与官方口径失去可比性;第三,上表百分比为论文发表口径,逐库拆分的标签计数在不同二手来源间互不调和(本条目不逐库转写),复现时请以各库 REFERENCE.csv 实际文件为准——它才是唯一无歧义的真值来源。测试集(1,277 条)的标签分布未公开。

§4.3 关键统计

统计量 数值 说明
训练录音数 3,240 a-f 六库
训练受试者数 764 每受试者 1-6 条录音
训练心拍总数 84,467 论文 Table 4(经分割统计)
录音时长(训练) 5 秒至 120 余秒 不定长,需 pad/trim
录音时长(测试) 6-104 秒 官方页描述
采样率 2,000 Hz(统一) 16-bit 单导联 .wav
人工校正分割占比 训练 20.7% / 测试 15.3% hand_corrected 相对全量
验证集 300 条 训练集副本,不参与排名
隐藏测试集 1,277 条 / 308 人 永不公开
采集环境 临床 + 非临床 家访等场景在列

§4.4 数据层级

数据共四层,理解层级是避免泄漏与误用的前提:

  1. 受试者层:764 人(训练);人口学与诊断在附录 CSV;每受试者 1-6 条录音;录音与受试者的显式映射未随包提供。
  2. 录音层:3,240 条;基本分析单元;录音级三类标签与 SQI 标注挂在这一层。
  3. 心拍状态段层:84,467 个心拍(S1/收缩期/S2/舒张期四状态边界);由 annotations/ 两套标注给出;心拍级特征工程的对象。
  4. 采样点层:2,000 Hz 波形本体;所有滤波、降噪、时频变换发生在这一层。

推论:录音级分类任务的独立随机化单元本应是"受试者",但层级 1 与层级 2 之间的映射缺失使严格患者级划分无法直接执行——这构成坑点 2 的全部内容;心拍级任务则还叠加"算法分割 vs 人工校正"两套标注的选择问题(坑点 6)。

§4.5 缺失值处理

波形与标签文件本身无缺失(每条录音都有 .wav+.hea+标签),"缺失"在本数据集以四种变体出现:

变体 表现 处理建议
不定长 5-120 余秒,训练不能直接 batch pad/trim 到固定长度(如 60 s)或按批分组;随机裁剪可兼作增强
unsure 365 条 有波形、标签为"不可判读" 三选一并固定:丢弃 / 作独立类 / 选择性预测;报告口径必须注明(见坑点 3)
SQI 后补 REFERENCE-SQI.csv 于 2016-09-02 才进入数据包 使用旧镜像或旧快照者可能拿不到该文件;以官方 1.0.0 为准
标注粒度缺口 无录音↔受试者映射、无逐心拍病理、无异常分型 属结构性"缺失":设计实验时按 §5.3 规避,不要试图从数据里"恢复"

另注意:个别录音可能存在直流偏置或幅度异常,官方提供 MD5/SHA 校验文件,下载后先校验再解析,可排除文件损坏类假缺失。

§4.6 受试者元数据

受试者级信息来自论文在线附录:Online_Appendix_training_set.csv(Kaggle 数据浏览器显示 79 列,覆盖人口学与诊断明细)与 Online_Appendix_Diagnosis_meanings.csv(诊断代码的文本含义)。使用要点:

  • 匿名化:受试者仅以伪随机录音编号出现,无姓名、日期等直接标识符;附录中的年龄、性别与诊断信息不带再识别细节。
  • 粒度与对齐:附录的行粒度与录音文件的对应关系未随包给出说明,将其与具体录音关联前先核对行计数与键结构,勿假设第 i 行对应第 i 条录音。
  • 用途边界:附录适合做偏倚审计(年龄/性别分布、病谱构成)与亚组分析,不适合作为模型输入直接拼进特征——那会把"诊断"这一受保护属性泄漏进模型(见 §7.5 公平性)。

§5 划分与使用建议

§5.1 官方划分

官方设计为三块:训练集(a-f 六库 3,240 条 / 764 人,公开);验证集(300 条,为训练集的精确副本,仅用于确认提交代码可运行,不用于排名);隐藏测试集(308 人 / 1,277 条,与训练人群互斥,永不公开)。库级来源设计:4 个源库按 70:30 拆入训练/测试(b、c、d、e),2 库专属训练(a、f),2 库专属测试(g、i)。注意"互斥人群"是官方在库级与人群级两层同时保证的,而任何自定的录音级划分都无法复现这一保证——这是官方 0.8602 与论文数字不可比的结构性原因之一。

官方三块设计的两点启示:其一,“互斥人群"比"互斥录音"严格得多——同一患者的 1-6 条录音永远同侧,这把临床部署中最真实的泛化问题(换人、换设备)提前内置进了评测;其二,验证集被官方明确定位为"代码冒烟"而非"模型选择”——在 15 次提交上限下反复对着验证集调参,正是官方用设计杜绝的过拟合行为,社区实验应继承这一纪律。

§5.2 社区惯例划分

挑战后的文献自成体系,常见三种:其一,六库合并后随机 5 折或 10 折交叉验证(最普遍,但多为录音级,泄漏风险见坑点 2);其二,按库划分(如四库训练 + 一库验证 + 一库测试,或留一库 LOSO),可量化跨库泛化;其三,Kaggle 时代沿用 A-E 五库 3,126 条旧口径自划训练/验证(与官方六库口径数字不可比,见坑点 7)。此外不少论文把 unsure 全部丢弃或并入正常类再报准确率,进一步加剧了跨论文数字的离散(84.4%-99.3% 的报告区间即由此而来)。

代表性划分协议对照:

协议 划分单元 unsure 口径(典型) 与官方成绩的关系
官方挑战 互斥人群(库级 70:30 拆分 + 专属库) 纳入计分(差异计分) 0.8602 锚点本身
随机 k 折(录音级) 录音 多为丢弃 不可比——患者级泄漏(坑点 2)
按库划分 / LOSO 整库 各异 部分可比——域泛化口径一致,计分口径需对齐
Kaggle 时代 A-E 自划 五库内录音级 丢弃 不可比——缺 training-f 与新标注(坑点 7)

选协议时先问自己两个问题:论文要回答的是"分类器多准"还是"跨设备/跨人群多稳"?前者也应至少附一组库级划分的结果;后者则 LOSO 是唯一诚实的起点。

§5.3 划分策略建议与泄漏风险

按优先级给出建议:

  1. 首选 leave-one-database-out(LOSO):留出一整库作测试,其余五库训练,循环 6 次。它同时规避患者级泄漏(库内同患者录音同侧)与设备域泄漏(整库设备同侧),且直接回答"换个听诊器还准不准"这一部署问题。
  2. 次选库感知的分组交叉验证:若必须做六库混合 CV,按"库 + 受试者"双层分组——由于录音↔受试者映射未随包提供,实践中常退化为"整库同侧"的分组验证,此时务必在论文里写清分组粒度。
  3. 绝对禁止:把 validation/ 300 条当测试集或并入训练(它们是训练集副本,见坑点 1);录音级随机划分而不做任何分组(同一受试者最多 6 条录音且文件名随机,几乎必然把同一患者拆进训练与验证两侧,见坑点 2)。
  4. unsure 策略先于划分固定:丢弃 / 三分类 / 选择性预测三选一,划分前定好并在结果里注明,否则复现者无法对齐你的数字(见坑点 3)。

§5.4 交叉验证建议

  • 基线协议:6 折 LOSO 报均值 ± 标准差,同时报告每库单独成绩——单库方差大是本数据集常态(c、d 两库各仅 31/55 条,单独成折会剧烈波动,可合并小库为"小库组"折)。
  • 分层:按标签(normal/abnormal,unsure 视口径)与库双重分层,防止某折异常类占比失真。
  • 指标:与官方对齐用修正敏感度/特异度均值(见 §8.3);同时报告 AUC 与按库分解的 F1,便于与不同口径文献对话。
  • 早停与调参:验证折内再做内层划分,或用 LOSO 外层 + 训练折内留库作早停信号;调参次数写进实验记录(本数据集小,过拟合验证集极容易)。

§5.5 外部验证建议

本数据集无官方公开测试集,任何模型的"最终成绩"都应来自它之外的独立数据:优先选择采集设备、人群谱系与本库不同的心音语料(如后来发布的更大规模多中心心音数据集),报告"训练于 2016 库、零样本/少样本迁移到外库"的成绩;其次可用自采数据做小规模真实部署验证(数字听诊器、真实筛查流程)。外部验证至少应报告:设备来源、环境(临床/非临床)、人群构成、阳性率与所用 unsure 口径——缺了这些,外部数字同样不可解释。

§5.6 一份可复现的实验设置清单

环节 推荐取值 出处/说明
数据口径 PhysioNet 1.0.0 六库 3,240 条(勿用 A-E 旧口径) 坑点 7
输入信号 单导联 PCG,2,000 Hz 16-bit .wav 官方分发格式
带通 25-400 Hz 零相位滤波(sosfiltfilt) 文献常用设定之一;与所用基线代码核对
长度策略 pad/trim 到固定 60 s(或随机裁剪 10-30 s) 录音 5-120 余秒不定长
归一化 逐录音 z-score;统计量仅在训练划分上拟合并冻结 坑点 2/5
划分 LOSO 6 折;禁用 validation 300 条做测试 坑点 1/2、§5.3
unsure 口径 丢弃 / 三分类 / 选择性预测三选一并全文固定 坑点 3、§8.3
分割标注 心拍级特征用 hand_corrected(20.7%),springer_alg 全量备选并注明 坑点 6
指标 MAcc=(Se+Sp)/2(按 clean/noisy 加权口径声明)+ 按库分解 §8.3
对标口径 官方 0.8602 仅作历史锚点;自定划分成绩只与同协议比较 §8.1、坑点 5

把上表作为"协议头"写进论文/README,读者即可一键复现;任何偏离(改带通、改 unsure 口径、改划分粒度)都应在数字旁注明,否则触发坑点 5 的不可比陷阱。


§6 AI 就绪指南

§6.0 云端快速启动

本地 Python 3.9+ 即可完成全部预处理与基线训练(3,240 条 2,000 Hz 音频量级很小,CPU 足够跑通经典基线;深度模型建议单卡 GPU 或免费 Colab)。核心依赖:numpy、scipy、torch;读取 .wav 用 scipy 即可,librosa/soundfile 可选。

# requirements.txt
numpy>=1.21
scipy>=1.7
torch>=1.12      # CPU 即可跑通冒烟实验

云端(Colab/任意 Linux 实例)从 AWS 开放数据桶拉取核心数据(免注册):

# 只拉分类任务所需的核心三包(约 209 MB)
aws s3 cp --no-sign-request s3://physionet-open/challenge-2016/1.0.0/training.zip .
aws s3 cp --no-sign-request s3://physionet-open/challenge-2016/1.0.0/validation.zip .
aws s3 cp --no-sign-request s3://physionet-open/challenge-2016/1.0.0/annotations.zip .
unzip -q training.zip && unzip -q validation.zip && unzip -q annotations.zip

没有 aws CLI 时用 wget 递归下载亦可(官方推荐 wget -r -N -c -np 模式)。解压后目录约 1.1 GB,8 GB 内存的免费实例即可全量处理;建议先按 §6.1 验证数据完整性(官方每库带 MD5/SHA 校验清单)。

10 分钟冒烟路径(强烈建议跑通再开始正式实验):

  1. 下载核心三包并解压(上方命令)。
  2. 逐库校验 MD5/SHA256(§6.2 校验命令)。
  3. 跑 §6.1 三项体检:六库合计应为 3,240 条、采样率应恒为 2,000。
  4. 用 §6.3 预处理单条录音,确认输出形状 (120000,)。
  5. 用 §6.4 的 LOSO 划分跑一个 batch,确认标签映射与 batch 形状正确。

§6.1 快速上手

下列代码加载 REFERENCE.csv 与一条录音,打印关键信息,并给出训练前必做的三项体检(库规模、标签分布、单条录音规格)。

import csv
from collections import Counter
from pathlib import Path

from scipy.io import wavfile

ROOT = Path("challenge-2016")          # 三个 zip 解压后的根目录

def load_reference(db_dir: Path) -> dict:
    """读一库 REFERENCE.csv:-1 normal / 0 unsure / 1 abnormal"""
    labels = {}
    with open(db_dir / "REFERENCE.csv") as f:
        for row in csv.reader(f):
            if row:
                labels[row[0].strip()] = int(row[1])
    return labels

# 体检 1:六库规模与标签分布
NAME2CODE = {-1: "normal", 0: "unsure", 1: "abnormal"}
total = Counter()
for db in sorted(ROOT.glob("training-?")):
    ref = load_reference(db)
    total.update(ref.values())
    dist = Counter(ref.values())
    print(f"{db.name}: {len(ref)} 条 | "
          + ", ".join(f"{NAME2CODE[k]}={dist[k]}" for k in sorted(dist)))
print("六库合计:", dict(total))

# 体检 2:单条录音的采样率与时长
sr, sig = wavfile.read(ROOT / "training-a" / "a0001.wav")
print(f"采样率={sr} Hz, dtype={sig.dtype}, 时长={len(sig)/sr:.1f} s")

# 体检 3:抽查 .hea 头文件内容
print((ROOT / "training-a" / "a0001.hea").read_text().splitlines()[:3])

六库合计应打印 3,240 条(正常约七成、unsure 一成余);采样率应恒为 2,000。若你的数字是 3,126,说明拿到的是 A-E 旧口径快照(见坑点 7)。

§6.2 数据获取

项目 内容
官方下载页 https://physionet.org/content/challenge-2016/1.0.0/
核心文件 training.zip(181.3 MB)/ validation.zip(17.5 MB)/ annotations.zip(10.1 MB)
申请流程 免申请、免注册,直接下载;使用须署名引用(见 §9.3)
备用渠道 AWS 开放桶 s3://physionet-open/challenge-2016/1.0.0/(–no-sign-request)
校验 每库 MD5SUMS / SHA1SUMS / SHA256SUMS,下载后先校验
# 方式一:wget 递归下载(官方推荐模式)
wget -r -N -c -np https://physionet.org/content/challenge-2016/1.0.0/

# 方式二:AWS CLI 拉单包(快,免注册)
aws s3 cp --no-sign-request s3://physionet-open/challenge-2016/1.0.0/training.zip .
事项 说明
空间 核心三包约 209 MB;整包 1,011.4 MB;解压后预留 ≥5 GB
版本 认准 1.0.0(training-f 在内、annotations 含 updated);Kaggle 镜像为 A-E 旧口径
带宽 AWS 桶通常快于网页直连;wget -c 支持断点续传
合规 ODC-By 许可:可自由使用与再分发,但须署名引用数据论文与 PhysioNet 平台

下载后先做完整性校验(官方每库自带校验清单):

cd challenge-2016
for db in training-a training-b training-c training-d training-e training-f; do
  (cd $db && sha256sum -c SHA256SUMS --quiet && echo "$db OK")
done

注意:Kaggle 镜像不提供官方校验链,这也是生产管线强制要求官方 1.0.0 来源的工程理由之一(坑点 7)。

§6.3 预处理全流程

标准流水线:读取 .wav → 零相位带通(心音能量主要在中低频段,25-400 Hz 是文献常用设定之一,具体边界应与你对标的基线代码一致)→ 逐录音 z-score → pad/trim 到定长。官方已统一重采样至 2,000 Hz,无需再重采样;如需省算力可降采样到 1,000 Hz(必须带抗混叠滤波)。

<details>
<summary>预处理参考实现(点击展开)</summary>

import numpy as np
from scipy.io import wavfile
from scipy.signal import butter, sosfiltfilt, resample_poly

FS = 2000
LOW, HIGH = 25.0, 400.0        # 文献常用带通设定之一,按对标基线调整

def bandpass(x: np.ndarray, fs: int = FS) -> np.ndarray:
    """零相位带通,避免滤波延迟破坏心拍对齐"""
    sos = butter(4, [LOW, HIGH], btype="bandpass", fs=fs, output="sos")
    return sosfiltfilt(sos, x.astype(np.float64))

def normalize(x: np.ndarray) -> np.ndarray:
    """逐录音 z-score(统计量只用本条录音,训练/测试一致,无泄漏)"""
    return (x - x.mean()) / (x.std() + 1e-8)

def fix_length(x: np.ndarray, seconds: float = 60.0, fs: int = FS) -> np.ndarray:
    """定长:超出截断,不足补零(亦可改为随机裁剪作增强)"""
    n = int(seconds * fs)
    return x[:n] if len(x) >= n else np.pad(x, (0, n - len(x)))

def downsample_1k(x: np.ndarray) -> np.ndarray:
    """可选:2,000→1,000 Hz(resample_poly 自带抗混叠 FIR 设计)"""
    return resample_poly(x, 1, 2)

def preprocess(path, seconds: float = 60.0) -> np.ndarray:
    sr, raw = wavfile.read(path)
    assert sr == FS, f"预期 {FS} Hz,实际 {sr} Hz——检查数据口径(坑点 7)"
    x = bandpass(raw)
    x = normalize(x)
    return fix_length(x, seconds)

x = preprocess("challenge-2016/training-a/a0001.wav")
print(x.shape)   # (120000,) = 60 s × 2,000 Hz

</details>

三个实践提示:其一,心音特征对相位敏感(S1/S2 时序本身即信息),滤波务必用零相位(sosfiltfilt 或 filtfilt),否则心拍边界整体漂移;其二,归一化统计量逐录音独立计算,天然无训练/测试泄漏,比"全局均值方差"更稳妥;其三,若走 MFCC/频谱图路线,帧长建议覆盖至少一个完整心拍(约 0.6-1.0 秒,对应 60-100 bpm),帧移取其 1/2-1/4。

§6.4 PyTorch DataLoader

设计要点:训练前在 Dataset 之外完成划分(禁用 validation 副本、优先 LOSO);unsure 口径在构造器里显式选择;音频读取惰性进行(3,240 条全量驻留也可行,但惰性版内存安全、便于多进程 worker)。

<details>
<summary>PyTorch Dataset / DataLoader 参考实现(点击展开)</summary>

import csv
from pathlib import Path
from typing import Callable, Optional

import numpy as np
import torch
from scipy.io import wavfile

ROOT = Path("challenge-2016")
DBS = [f"training-{c}" for c in "abcdef"]
SECONDS, FS = 60.0, 2000
N = int(SECONDS * FS)

def load_items():
    """收集 (wav_path, label_code);code: -1/0/1"""
    items = []
    for db in DBS:
        with open(ROOT / db / "REFERENCE.csv") as f:
            for row in csv.reader(f):
                if row:
                    items.append((ROOT / db / f"{row[0].strip()}.wav", int(row[1])))
    return items

class HeartSoundDataset(torch.utils.data.Dataset):
    """
    binary=True : 丢弃 unsure,标签 {0: normal, 1: abnormal}
    binary=False: 三分类,标签 {0: normal, 1: unsure, 2: abnormal}
    ids         : 本划分使用的 (路径, 编码) 列表——划分在 Dataset 之外完成!
    """
    def __init__(self, ids, binary=True, transform: Optional[Callable] = None):
        self.items = [(p, c) for p, c in ids if (not binary) or (c != 0)]
        self.label_map = {-1: 0, 1: 1} if binary else {-1: 0, 0: 1, 1: 2}
        self.transform = transform

    def __len__(self):
        return len(self.items)

    def __getitem__(self, idx):
        path, code = self.items[idx]
        sr, raw = wavfile.read(path)
        assert sr == FS, f"{path}: 预期 {FS} Hz,实际 {sr} Hz"
        x = raw.astype(np.float32)
        if self.transform:                      # 带通/归一化等在 transform 里
            x = self.transform(x)
        if len(x) >= N:                         # 定长 pad/trim
            x = x[:N]
        else:
            x = np.pad(x, (0, N - len(x)))
        return torch.from_numpy(x).float(), self.label_map[code]

def loso_split(holdout_db: str):
    """留一库划分:整库同侧,天然规避库内患者泄漏与设备域泄漏"""
    train_ids, test_ids = [], []
    for p, c in load_items():
        (test_ids if f"/{holdout_db}/" in str(p) else train_ids).append((p, c))
    return train_ids, test_ids

# --- 用法 ---
train_ids, test_ids = loso_split("training-b")     # 例如留 b 库作测试
train_ds = HeartSoundDataset(train_ids, binary=True)
test_ds  = HeartSoundDataset(test_ids,  binary=True)
print(f"train={len(train_ds)}, test={len(test_ds)}")

train_loader = torch.utils.data.DataLoader(
    train_ds, batch_size=16, shuffle=True, num_workers=2, pin_memory=True)
test_loader = torch.utils.data.DataLoader(
    test_ds, batch_size=32, shuffle=False, num_workers=2)

for x, y in train_loader:
    print(x.shape, y[:8])     # torch.Size([16, 120000]),类别含 0/1
    break

</details>

四个提醒:第一,划分单元是"录音路径列表",LOSO 整库同侧是本数据集上最接近"患者级干净"的可执行方案(受试者映射未随包提供,见坑点 2);第二,binary=True 默认丢弃 unsure,与官方计分口径不同,发表论文时必须声明(坑点 3/5);第三,类不均衡约 4:1,CrossEntropyLoss 建议传 weight 或改用加权采样;第四,打乱训练集前若做任何"全局统计"(如全局 z-score)就已泄漏,统计量一律在训练划分内计算。

§6.5 坑点 8 个

以下 8 个坑点按"踩坑频率 × 后果严重度"排序,均源自官方发布形态与文献复现实践。

⚠️ 坑点 1:validation 300 条是训练集副本,把它当独立测试集即泄漏(分类:评估误用)

问题:validation.zip 的 300 条录音是训练集的精确副本(官方明确说明其用途仅为验证提交代码可运行),文件名与音频内容与训练集完全一致。
症状:把 validation 并入训练集会得到 3,540 条的"虚胖"数据;更危险的是把它当独立验证/测试集——模型在同一批文件上评估,成绩虚高且完全不可复现;论文里出现"3,540 条录音"的口径错误也是此坑的直接症状。
解决:简单方法——把 validation 固定理解为"提交前的代码冒烟测试",任何训练/评估脚本不触碰它;进阶方法——数据管线加断言:训练/验证/测试三部分文件名集合两两不相交,合并前自动检测重名冲突;SOTA 方法——完全复现官方协议语义:训练只用六库、评估用外部数据或 LOSO,把"官方验证集"排除出整个实验生命周期。
参考:官方挑战页(validation 为 300 条副本的官方说明)。

⚠️ 坑点 2:同患者 1-6 条录音 + 随机文件名 → 录音级随机划分必然患者级泄漏(分类:数据泄漏)

问题:官方声明同一受试者可贡献 1-6 条录音,而文件名是"库字母+随机序号"(同患者文件大概率不相邻),发布文件中也没有录音↔受试者的映射表——你无法从数据本身判断哪两条录音属于同一人。
症状:录音级随机划分后,同一患者的心音(呼吸音、体型、设备特征高度相似)同时出现在训练与验证两侧,模型实际在"认识这个人"而非"识别疾病",成绩虚高数个百分点;这解释了为何同一模型换个划分粒度数字差异巨大,也是后续论文 84.4%-99.3% 离散区间的结构性成因之一。
解决:简单方法——采用 LOSO(留一整库)划分,整库同侧天然保证库内同患者录音同侧;进阶方法——必须混合划分时按库分组做分组交叉验证,并额外报告"随机划分 vs 分组划分"的差值作为泄漏敏感度分析;SOTA 方法——报告双口径(随机划分与患者级/库级划分并列)并明确声明各自含义,引用时只与同口径比较;设计上优先选择发布了录音↔患者映射的后续数据集做主实验。
参考:官方挑战页(每受试者 1-6 条、随机序号)、rombio Table 3(逐库受试者/录音数)。

⚠️ 坑点 3:unsure 的 365 条不是"脏数据",是官方评分体系的一部分(分类:标签理解)

问题:11.2%(365 条)的 unsure 标签含义是"噪声太大无法判读",官方计分矩阵对 unsure 有专门规则:对嘈杂(noisy)参考答 unsure 等效答对、对干净(clean)参考答 unsure 计 0 分。
症状:无脑丢弃 unsure 训练后,你的数字与官方口径不可比(坑点 5 连锁);把 unsure 并入 normal 会把"不可判读"混进健康类,阈值调优后临床语义崩坏;三分类训练时 unsure 类与 normal 类混淆代价被当作对称处理,与官方计分逻辑相反。
解决:简单方法——二分类时丢弃 unsure 并在结果中显式声明"不含 unsure";进阶方法——做选择性预测/质量门控:先用 SQI 或质量分类器判断可判读性,不可判读的输出 unsure(弃权),可判读的再二分类;SOTA 方法——完整复刻官方加权计分(clean/noisy 分组 Se/Sp + unsure 差异计分,见 §6.9 代码),训练侧用 unsure 样本做噪声感知学习(如置信度惩罚或三支决策损失)。
参考:官方挑战页(评分公式与 unsure 计分规则)、各库 REFERENCE-SQI.csv。

⚠️ 坑点 4:training-e 占训练集 66.1%,随机划分≈只在 e 库上训练(分类:偏倚陷阱)

问题:training-e(DLUTHSDB)一个库贡献 2,141/3,240 条录音,且各库的设备、环境、人群与录音质量显著异质;training-a 还独有同步 ECG,信息量与其他库不对等。
症状:随机划分下训练分布≈e 库分布,模型对 e 库风格过拟合、跨库成绩骤降;"在训练集上 95%+“但 LOSO 下大幅回落的落差常被误判为"模型不行”,实为库偏倚。
解决:简单方法——按库重采样/重加权,控制各库在 mini-batch 中的占比;进阶方法——LOSO 报告逐库成绩(§5.4),加库标识做域自适应(DANN/MMD 类域对齐);SOTA 方法——多域条件化训练(domain embedding/库条件 BN),训练时显式建模库间差异,并在模型卡中报告 per-database 指标。
参考:rombio Table 3(2,141/3,240)、社区基线仓库。

⚠️ 坑点 5:官方 0.8602 与论文 99% 不可比——指标口径三重不一致(分类:评估误用)

问题:官方成绩 = 隐藏测试集上按 clean/noisy 加权的 (Se+Sp)/2(含 unsure 差异计分);后续论文 = 自定划分上的 accuracy/AUC,unsure 口径各异、划分粒度各异(录音级/患者级/库级)。
症状:文献报告区间宽达 84.4%-99.3%(如 DTF-STCANet+KNN 99.29%、RAMM+NRBMI+SVM 98.80%),与官方 0.8602 直接比较得出"远超官方"的错误结论;审稿人质疑可复现性;数字相同含义不同(录音级 vs 患者级)。
解决:简单方法——论文/报告里并列两行:官方锚点(0.8602,仅历史参照)与自评数字(注明划分粒度、unsure 口径、指标定义);进阶方法——用 §6.9 的官方计分实现复算自己的系统,在自定划分上输出"官方口径分数";SOTA 方法——固定统一协议(LOSO + 同 unsure 口径 + 同指标)复测代表性 baseline,把比较限制在同一协议内。
参考:DTF-STCANet 对比表、MDPI 综述、官方挑战页。

⚠️ 坑点 6:两套分割标注(springer_alg vs hand_corrected)选错,心拍级特征被算法误差污染(分类:预处理陷阱)

问题:annotations/ 下 springer_alg 是 HSMM 算法自动生成的四状态分割(全量覆盖),hand_corrected 是人工校正版(仅训练 20.7%、测试 15.3% 的录音),updated 又是后续更新的第三套——三套并存且覆盖范围不同。
症状:心拍级特征(S1/S2 间期、收缩期时长等)用 springer_alg 提取时继承 HSMM 的分割误差,噪声录音上误差更大,并被下游分类器放大;两套标注混用导致同代码不同结果;把 updated 当成 hand_corrected 的超集也是常见误解。
解决:简单方法——心拍级特征优先用 hand_corrected 覆盖的录音,并声明覆盖比例;进阶方法——用两套标注的边界差估计分割不确定度,把高不确定度录音单独报告;SOTA 方法——自训分割模型(HSMM 或深度分割网络),以 springer_alg 全量作预训练信号、人工校正子集作验证/微调,再进入下游任务。
参考:官方挑战页(annotations 目录说明)、beholder 解读。

⚠️ 坑点 7:Kaggle 镜像是 A-E 旧口径(3,126 条),规模与标注都对不上官方(分类:工程陷阱)

问题:Kaggle 上流传最广的镜像(bjoernjostein/physionet-challenge-2016,378.77 MB)是 A-E 五库 3,126 条的旧快照:无 training-f、无 updated 标注,部分文档把时长写成 10-60 秒(官方为 5-120 余秒)。
症状:复现时总数对不上(3,126 vs 3,240);拿不到 REFERENCE-SQI.csv 与 updated 标注;论文里数据规模写错;下载了 Kaggle 版却引用官方 1.0.0 的规模数字。
解决:简单方法——从官方 content 页或 AWS 开放桶重新下载 1.0.0;进阶方法——数据加载脚本加断言:六库齐全、总数==3,240、每库存在 REFERENCE-SQI.csv;SOTA 方法——CI 中固定数据版本,用官方 MD5SUMS/SHA256SUMS 做完整性校验,数据快照与代码版本一起登记。
参考:Kaggle 镜像页、官方 content 页。

⚠️ 坑点 8:录音级标签 ≠ 心拍级/病因级诊断,别把弱标签当细粒度金标准(分类:标签理解)

问题:每条录音只有一个 -1/0/1 标签:无逐心拍病理标注(abnormal 录音中并非每个心拍都异常),无异常分型(二尖瓣反流、主动脉瓣狭窄、瓣膜术后、冠心病全部混在 abnormal 里),受试者级附录诊断明细与具体录音的对应关系也未随包说明。
症状:把 abnormal 录音的每个心拍当异常样本训练心拍级分类器 → 系统性标签噪声;声称模型"能区分二尖瓣反流与主动脉瓣狭窄"——数据根本不支持;把附录的诊断列直接拼进模型特征 → 目标泄漏或超出数据支持的临床声称。
解决:简单方法——任务严格限定在录音级三类(或丢弃 unsure 的二分类),论文任务定义与标签粒度对齐;进阶方法——心拍级任务改用多示例学习(MIL)框架:录音是 bag、心拍是 instance、录音级标签监督,并显式声明弱监督假设;SOTA 方法——弱监督 MIL + 噪声鲁棒损失,把"心拍级输出"定位为可解释性辅助而非诊断主张,任何病因分型声称转向有细分标注的专病队列。
参考:官方挑战页(异常病谱说明、无更细分类)、数据论文。

§6.6 数据增强

心音增强须尊重心音的物理语义(时序与频带都是诊断信息):

增强方式 参数建议 注意事项
随机裁剪 10-30 s 片段 天然定长,兼作时长增强;勿跨整段拼接
音量/增益扰动 ±3-6 dB 最安全;模拟听诊压力差异
背景噪声混合 与其他录音(或 unsure 样本)按 5-15 dB SNR 混合 直接强化 unsure 场景;混合对象取自训练划分内
时间拉伸/音调不变速 ±10% 以内 心音对时序敏感,保守使用
频谱路线 SpecAugment 遮 1-2 个频带/时间块 仅 MFCC/谱图路线

两条纪律:增强只在训练划分内生成,验证/测试保持原始录音;任何"模拟噪声"的增强都不要改变标签语义(噪声增强后的样本仍是原标签——这恰好是 unsure 机制提醒你的:增强把正常录音弄"脏"后,临床语义上它可能应算 unsure,因此带 unsure 类的训练里不要对 normal 样本做强噪声增强后仍标 normal)。

§6.7 模型推荐表

路线 代表(本数据集语境) 适用场景 说明
官方 MATLAB 基线 sample2016(HSMM 分割 + 20 特征 + 逻辑回归) 快速复现官方起点 b 版(Schmidt 算法)兼容 GNU Octave
手工特征 + 经典分类器 线性/非线性特征 + SVM/集成 小数据、可解释 2016 年主流路线,亚军即此类
1D-CNN 时域 原始波形分支 CNN(冠军 Potes 路线) 端到端、免手工特征 对不定长输入配合裁剪/池化
MFCC/谱图 2D-CNN MFCC + 2D-CNN(Rubin 路线) 频域表征迁移 可借 ImageNet 音频谱迁移权重
两段式(分割→心拍特征→分类) Springer HSMM + 分类器 心拍级可解释任务 依赖分割标注质量(坑点 6)

选型决策的三条经验:数据只有 3,240 条录音且类不均衡 4:1,先跑官方 MATLAB 基线与一个轻量 1D-CNN 建立地板,再决定是否上更重的模型——本数据集上"更大的模型"经常输给"更干净的划分与 unsure 口径";若目标是论文,把创新点放在官方计分(§6.9)能度量的地方(弃权、质量加权、跨库),而非在录音级随机划分上刷 accuracy;若目标是产品原型,两段式(SQI 门控 → 分类)最接近官方设计哲学,unsure 输出是特性而非缺陷。

§6.8 硬件需求表

场景 最低配置 说明
预处理 + 经典基线 CPU 4 核 / 8 GB 内存 1.1 GB 数据全量可驻留;CPU 足够
深度模型训练(1D/2D-CNN) 单卡 8-12 GB 显存 60 s × 2,000 Hz 定长输入较大,可降采样到 1,000 Hz 省显存
消融/批量实验 16 GB 内存 + 单卡 建议把预处理结果缓存为 .npy
边缘/听诊器原型推理 CPU / 移动端 NPU 2,000 Hz 单导联计算量小,量化后可端侧实时

§6.9 评估指标代码

官方计分的核心:对 clean/noisy 参考分别计算修正敏感度/特异度,再按官方权重加权合成;对 noisy 参考答 unsure 等效答对、对 clean 参考答 unsure 计 0 分。自划测试集时用 clean/noisy 占比替代官方权重。

import numpy as np

def official_score(y_true, y_pred, is_noisy, wa1, wa2, wn1, wn2):
    """PhysioNet/CinC 2016 官方计分复刻。
    y_true / y_pred 取值 {-1: normal, 0: unsure, 1: abnormal}
    is_noisy: bool 数组,该参考录音是否 noisy(用 SQI 标注或自评)
    权重 wa1/wa2(异常类 clean/noisy)、wn1/wn2(正常类 clean/noisy)
    官方按完整测试集分布确定;自划数据时用各组占比替代。
    """
    y_true, y_pred = np.asarray(y_true), np.asarray(y_pred)
    is_noisy = np.asarray(is_noisy, dtype=bool)
    correct = y_true == y_pred
    unsure_credit = (y_pred == 0) & (y_true != 0) & is_noisy   # noisy 参考答 unsure 等效答对
    hit = correct | unsure_credit
    ab, no = y_true == 1, y_true == -1
    def safe_mean(m):
        return float(hit[m].mean()) if m.any() else 0.0
    se1, se2 = safe_mean(ab & ~is_noisy), safe_mean(ab & is_noisy)
    sp1, sp2 = safe_mean(no & ~is_noisy), safe_mean(no & is_noisy)
    se = (wa1 * se1 + wa2 * se2) / (wa1 + wa2)
    sp = (wn1 * sp1 + wn2 * sp2) / (wn1 + wn2)
    return 0.5 * (se + sp), {"Se1": se1, "Se2": se2, "Sp1": sp1, "Sp2": sp2, "Se": se, "Sp": sp}

# 示例:权重按各自参考组占比设置
w = np.array([0.75, 0.25])          # 示意:clean:noisy = 3:1,实际按你的测试集统计
score, detail = official_score(y_true, y_pred, is_noisy, w[0], w[1], 0.7, 0.3)
print(round(score, 4), detail)

配套建议:同时报告 AUC、按库分解的 F1 与混淆矩阵(含 unsure 行为),缺一项都会削弱结论的可比性(坑点 5)。

§6.10 MLOps 笔记

  • 数据版本化:把 1.0.0 的 SHA256SUMS 纳入版本控制,训练任务记录数据快照哈希;Kaggle 镜像等二手来源禁止直接进生产管线(坑点 7)。
  • 口径即配置:unsure 策略、划分粒度、带通边界写成显式配置项并随实验登记——它们决定数字含义(坑点 3/5)。
  • 评估监控:生产环境按"质量门控 → 分类"两级部署,监控 unsure 率(弃权率)与各库风格录音的预测分布漂移;unsure 率异常升高通常先于准确率下降。
  • 模型卡:披露官方锚点 0.8602 的口径(隐藏测试、加权计分)与自评口径的差异,声明标签粒度边界(坑点 8),列明 per-database 成绩。
  • 合规留痕:ODC-By 署名要求写进制品说明;心音为敏感健康数据,任何真实采集数据的引入需独立合规评估(§7.4)。

§7 质量评估与局限性

§7.1 已知偏倚表

偏倚 表现 影响 缓解建议
库偏倚 training-e 占训练录音 66.1%,其余五库共 1,099 条 训练分布≈单库分布;跨库泛化被低估 LOSO、按库重采样、域自适应(坑点 4)
设备偏倚 各库听诊器型号与原始采样率不一 频谱特性漂移,模型可能记住设备指纹 带通统一 + 库分组评估
人群偏倚 儿童与成人混合;健康对照与患者来源不同 "正常"类不排除亚临床疾病;年龄谱不均衡 附录元数据做亚组审计 + 外部验证
标签偏倚 normal=健康志愿者、abnormal=确诊患者 标签反映"来源人群"而非"录音本身无/有病" 阈值校准按部署人群阳性率重设
环境偏倚 临床 + 家访等非临床场景并存 噪声分布两态,模型在跨环境时漂移 SQI 门控 + 环境分层评估
选择偏倚 专家把不可判读录音标为 unsure 弃权 训练只见"可判读"样本,部署中低质录音占比可能更高 部署前质量评估环节必备

§7.2 标注质量

录音级三类标签由组织者团队与各源库临床研究组给出,normal 锚定健康受试者、abnormal 锚定临床诊断,语义清晰;但它是录音级弱标签——一条录音一个标签,不标注逐心拍病理,也不区分异常病因(见坑点 8)。官方未发布标注者人数、轮次与一致性 Kappa;可查的量化质控是分割标注的人工校正比例(训练 20.7%/测试 15.3%)。SQI 参考标注在挑战结束后(2016-09-02)补充,属"事后质控";unsure 标签本身可视为一种显式的质量-可判读性标注,是本数据集标注体系中独有的诚实设计。

§7.3 泛化性表

泛化方向 证据/机制 预期表现
库内 → 库外(跨数据库) 六库异质构成天然多域;LOSO 协议可量化 跨库下降显著(文献常态),小库(c/d)尤其不稳
临床 → 非临床(家访等) 环境两态并存于训练分布 需 SQI 门控;噪声型漂移先于语义漂移
2016 库 → 新设备/新人群 无官方证据;测试集不公开 必须外部验证(§5.5),不可内推
儿童 ↔ 成人 人群混合、心率与心音频率特征不同 分层评估;跨年龄段迁移需重校准

§7.4 伦理

数据在发布前已匿名化:受试者仅以伪随机录音编号出现,无姓名、日期或直接标识符;受试者级附录仅含年龄、性别与诊断信息,不带再识别细节。

  • 研究使用:ODC-By 开放、无需伦理再审批即可用于研究;但引用义务(§9.3)是许可条款的一部分,不是可选项。
  • 二次分发:再分发时须保留许可与署名;把本库与任何含身份信息的数据(如自采录音)合并前,需独立合规评估(GDPR 或当地法律下的健康数据特殊类别)。
  • 部署伦理:unsure 机制应保留到产品中——"不可判读就提示重录"而非强行输出,避免把模型不确定性转嫁给患者;异常阳性结果只应触发转诊建议,不构成诊断。

§7.5 公平性

本数据集未发布系统性的公平性审计;已知的公平性风险面:其一,年龄(儿童/成人)与性别分布不均衡且未逐库公开,模型可能在这些维度上表现不一——附录 CSV 提供了做亚组审计的原始材料;其二,"健康对照 vs 确诊患者"的来源设计使正常类的社会人口构成与健康人群普查不同,阳性率随部署人群变化,固定阈值会系统性偏倚;其三,跨国家/设备的谱系差异既是资产也是公平性隐患(某台设备上的成绩不代表所有设备)。建议任何声称临床可用的工作附按年龄/性别/库分层的指标分解。最低限度的公平性审计清单:

审计维度 可用材料 主要风险 建议
年龄 附录 CSV(年龄列) 儿童与成人混合,跨龄性能未知 分年龄层报告 Se/Sp
性别 附录 CSV(性别列) 分布均衡性未公开 分性别报告并注明样本量
库/设备 目录名(training-a…f) 模型记住设备指纹 per-database 指标(LOSO 自带)
环境 临床/非临床(论文描述) 噪声谱两态 按环境分层或 SQI 门控
部署阳性率 无(需自备) 固定阈值跨人群失配 部署前本地重校准

§7.6 数据漂移

训练分布内部已经"多域并存"(六库设备/环境/人群各异),因此本数据集上训练的模型对域漂移并不天然鲁棒——LOSO 的跨库下降就是漂移代价的直接测量。部署期漂移源主要有:新听诊器型号(频响差异)、新采集环境(噪声谱变化)、人群谱系变化(年龄/病谱)。监控建议:跟踪 SQI 分布、预测分布与 unsure 率(弃权率)三个先行指标;当 unsure 率骤升或预测分布偏移时优先检查采集端变化而非模型本身。

先行监控指标 含义 异常信号与排查方向
unsure 率(弃权率) 被质量门控判为"不可判读"的占比 骤升 → 采集端变化(新环境/设备故障/用户使用方式)
SQI 分布 录音质量谱 整体左移 → 传感器老化或佩戴习惯变化
预测分布 normal/abnormal 输出占比 单类持续漂移 → 人群谱系或筛查流程变化
按库风格分层的成绩 各域内成绩 个别域塌陷 → 该域采集条件漂移

§7.7 DAIMS 24 项表

# 检查项 状态 说明
1 宽格式 ✅ 每录音 .wav+.hea+CSV 结构清晰,与目录一一对应
2 唯一标识 ✅ 库字母+序号全局唯一(validation 副本另计,见 #4)
3 特殊字符 ✅ 文件名与标注 CSV 均为 ASCII,无编码陷阱
4 重复行 ⚠️ validation 300 条为训练集精确副本,去重是使用者责任(坑点 1)
5 缺失编码 ✅ 波形/标签无缺失;unsure 为显式"不可判读"编码而非缺失
6 标签标识 ✅ -1/0/1 编码 + RECORDS-normal/abnormal 分组清单双轨
7 罕见类分组 ⚠️ 异常类逐库极不均(c/d 库仅 31/55 条录音),小库指标剧烈波动
8 偏倚评估 ✅ 论文披露多中心/设备/环境异质与 unsure 机制(§7.1 系统化)
9 数据字典 ✅ .hea + 挑战页 + 论文;附录诊断代码附含义对照表
10 信息性缺失解释 ⚠️ 录音↔受试者映射缺失未随包说明,附录与录音的对应关系无文档
11 设备记录 ✅ 论文 Table 1 逐库给出传感器与原始采样率明细
12 共线性 ⚠️ 同患者 1-6 条录音且映射缺失,录音间相关性无法度量
13 编码映射 ✅ -1/0/1 与 normal/unsure/abnormal 语义映射官方明示
14 时间戳处理 ✅ 心音无绝对时间戳;相对时间轴由统一 2,000 Hz 决定
15 划分建议 ⚠️ 官方有训练/测试设计但测试集不公开,社区无可复用的官方划分文件
16 泄漏讨论 ✅ 官方按互斥人群设计训练/测试;本文坑点 1/2 详述副本与患者级泄漏
17 标签分布 ✅ 论文给出三类占比(71.1%/17.7%/11.2%)与 84,467 心拍总数
18 测量偏倚 ✅ unsure/SQI 机制显式披露噪声与质量信息
19 外部验证建议 ⚠️ 无官方外部验证矩阵;测试集私有迫使外验自建(§5.5/§7.8)
20 版本记录 ✅ 1.0.0 单版本 + 2022-07-28 更新说明 + MD5/SHA 校验链
21 预处理脚本 ⚠️ 官方仅 MATLAB 基线(sample2016),无 Python 预处理管线
22 合规要求 ✅ ODC-By 明确 + 强制引用(Liu 2016 + PhysioNet 平台)清晰
23 多模态对齐 ✅ training-a 的 PCG+ECG 同步记录(仅此库)
24 去标识化 ✅ 伪随机编号,无直接标识符;附录无再识别细节

DAIMS 评分:20.5 / 24

评分解读:优,扣分集中在工程配套——作为 2016 年发布的数据集,其在唯一标识、标签编码、泄漏讨论、合规与去标识化上做得规范(官方"互斥人群 + 盲测 + 透明公式"的设计至今仍是评测协议的范本),unsure/SQI 机制对噪声的诚实披露尤为难得。四个半扣分几乎全部源于"映射与配套的缺失"而非数据本身:录音↔受试者映射缺失(#10/#12)使严格患者级划分无法直接执行、官方测试集不公开(#15/#19)使成绩不可复算、validation 副本(#4)与无 Python 预处理(#21)则把清洗与管线负担转给了使用者。

对你意味着什么:上手本数据集的第一周不该花在模型上,而该花在三件事上——用 LOSO 建好"库级同侧"的划分脚本(弥补 #10/#12/#15)、把 unsure 口径与官方计分(§6.9)固化为代码(弥补 #21 与坑点 3/5)、以及用官方校验链锁定 1.0.0 数据版本(规避坑点 7)。做完这三件事,20.5/24 中被扣的工程分就会转移到你自己的管线里;数据本身——标签编码、多模态对齐、去标识化——已经足够干净,无需二次清洗。若你的任务严格依赖"录音↔患者映射"或"公开测试集",请直接转向提供了患者映射的后续心音数据集,而非在 2016 库上强行近似。

§7.8 外部验证矩阵

外部数据集/场景 来源 评估任务 关键发现
PASCAL Classifying Heart Sounds 2011 公开挑战(A/B 两库) 跨库心音分类 标注体系不同(含 artifact/unlabeled 类),需先做标签映射;年代早、规模小
CirCor DigiScope(2022) 儿科多中心心音项目 录音级分类 规模显著大于本库、以儿科为主;提供更细的标注粒度,适合做"2016 库训练 → 新库验证"的迁移评测
自采/部署环境 数字听诊器真实流程 真实筛查 唯一能回答"部署阳性率与噪声分布"的途径;须按 §5.5 报告口径

由于官方测试集永不公开,任何"最终成绩"都必须来自上述外部数据;这也是本数据集 DAIMS #19 被扣分的直接原因与使用者的必答题。


§8 基准性能与生态

§8.1 排行榜

官方口径(隐藏测试集、加权 (Se+Sp)/2 计分、含 unsure 差异计分):

排名 团队 官方得分 技术路线 口径说明
1 Potes & Parvaneh 0.8602 原始波形 + 分支 1D-CNN 集成(队内口径 Sen 0.88 / Spe 0.82 / MAcc 0.85) 官方最高分
2 Zabihi & Bahrami Rad 0.8590 特征工程路线(详见其参赛论文,挑战页公开发布) 与冠军仅差 0.0012
3 Rubin et al. 0.848(MAcc) MFCC + 2D-CNN(Sen 0.765 / Spe 0.931) 综述转引的官方测试口径

后续文献口径(自定划分,不可与上表直接比较):报告区间约 84.4%-99.3%(如 DTF-STCANet+KNN 99.29%、RAMM+NRBMI+SVM 98.80%)。不可比的三重原因:划分粒度(录音级 vs 患者级/库级)、unsure 口径(丢弃/并入/三分类)、指标定义(accuracy vs 加权 MAcc)——详见坑点 5。官方 0.8602 的价值在于它是唯一在"互斥人群 + 盲测 + 公式透明"下产生的数字,是十年的历史锚点而非可打破的 SOTA。

§8.1b 官方成绩与论文成绩的口径边界
维度 官方 0.8602 后续论文 84.4%-99.3%
测试数据 隐藏测试集 1,277 条,与训练人群互斥 自定划分,常与训练同分布甚至同患者
划分粒度 人群级互斥(库级 70:30 + 专属库) 多为录音级随机
unsure 处理 纳入计分(noisy 参考答 unsure 等效答对) 多为丢弃或并入 normal
指标定义 按 clean/noisy 加权的 (Se+Sp)/2 accuracy / AUC / 普通 F1

三条解读:第一,官方口径在每个维度上都更严格,99% > 86.02% 不构成任何"超越";第二,两组数字各有价值——官方数字回答"盲测泛化上限",论文数字回答"同分布判别力",写论文时二者并列、口径注明;第三,把自定划分成绩与官方锚点放进同一张表而不加口径注释,是本数据集文献里最常见的方法学缺陷(坑点 5)。

§8.2 SOTA 总结与选型建议

以官方协议论,2016 年的冠军方案(波形 1D-CNN 集成)至今仍是"官方口径"的参照顶点——挑战赛之后没有第二次同协议盲测,因此不存在严格意义上的"官方 SOTA 更新"。研究实践中的选型建议:追求可复现的诚实成绩 → LOSO + 官方计分复刻(§6.9),并与 0.8602 锚点并列报告;追求方法创新 → 在统一协议(§5.6)内与 2-3 个 baseline(官方 MATLAB 基线、1D-CNN、MFCC 2D-CNN)复测比较;追求部署 → 把不确定的资源投向 SQI/unsure 门控而非单纯分类头——本数据集的设计者用 11.2% 的 unsure 与差异化计分告诉你:真实世界的瓶颈是"知道什么是听不清的"。

§8.3 评测协议

官方协议要素:数据——训练集公开(3,240 条)、验证集 300 条副本(仅验代码)、隐藏测试集 1,277 条(互斥人群,先以约 20% 随机子集评分、后期扩大至完整集排名);指标——Score=(Se+Sp)/2,其中 Se/Sp 为按 clean/noisy 参考权重(wa1/wa2/wn1/wn2,按完整测试集分布确定)加权的修正敏感度/特异度;对 noisy 参考答 unsure 等效答对、对 clean 参考答 unsure 计 0 分;提交——两阶段合计最多 15 次(非官方 5 + 官方 10,不可结转,无法评分的 entry 不占额度),所有 entry 视为开源;时间——非官方阶段 2016-05-01 截止(须至少一个可评分开源 entry)、官方阶段 2016-08-26 截止(noon GMT,逾期不评分)。自划数据的等效复刻要点见 §5.6 与 §6.9。

数据集 任务 与本库关系 主要差异
PASCAL Classifying Heart Sounds 2011 心音分类 更早的先驱挑战 规模小,含 artifact/unlabeled 类,采集少
CirCor DigiScope(2022) 心音分类(儿科) 后继更大规模基准 儿科为主、多中心、标注粒度更细
Kaggle 镜像(A-E 旧口径) 同官方 本库旧快照 3,126 条、无 training-f/updated(坑点 7)
MIMIC-III 波形库 ICU 监护波形 互补(同属 PhysioNet 生态) 非听诊音、无杂音语义、临床重症人群
SUFHSDB(胎音库) 胎心音 同批征集但被排除在挑战外 未随本挑战发布训练/测试设计

§8.5 关键论文 Top5

  1. Liu C, Springer D, Li Q, et al. An open access database for the evaluation of heart sound algorithms. Physiol Meas, 2016, 37(12):2181-2213. DOI 10.1088/0967-3334/37/12/2181 — 数据集描述论文:9 库构成、重采样与标注协议、挑战设计的权威出处。
  2. Clifford GD, Liu C, Moody B, et al. Classification of normal/abnormal heart sound recordings: The PhysioNet/Computing in Cardiology Challenge 2016. Computing in Cardiology, 2016 — 挑战论文:评分公式、两阶段机制与结果排名的官方记述。
  3. Potes C, Parvaneh S, et al. Computing in Cardiology, 2016 — 冠军方案:原始波形 + 分支 1D-CNN 集成,官方 0.8602。
  4. Goldberger AL, Amaral LAN, Glass L, et al. PhysioBank, PhysioToolkit, and PhysioNet. Circulation, 2000, 101(23):e215-e220 — PhysioNet 平台奠基论文,官方要求与数据集论文并列引用。
  5. Rubin J, et al. Computing in Cardiology, 2016 — MFCC + 2D-CNN 路线(官方测试 MAcc 0.848,Sen 0.765 / Spe 0.931),深度谱域方法的早期代表。

§8.6 社区活跃度

截至 2026-09 检索:官方数据在 PhysioNet 永久托管并同步 AWS 开放桶;Kaggle 镜像页累计 Views 13.2K / Downloads 2,365(二手口径,且为旧版数据);12+ 篇参赛论文以 CC BY 3.0 永久公开于挑战页;GitHub 上持续有基线复现仓库(如 physionet2016-baseline)。发布十年间,心音分类论文普遍以本库为基准数据集之一,自定划分成绩区间 84.4%-99.3% 也侧面反映其高使用率(与不可比性并存)。论文级引用统计本条目未逐项核实,不转写。

生态构成速览:

  • 官方层:PhysioNet content 页 + AWS 开放桶(数据永久性由平台机制保证);挑战页的参赛论文集是方法学考古的一手材料。
  • 社区层:Kaggle 镜像与 Kernel(入门流量入口,注意旧口径);GitHub 基线复现仓库(零散但持续)。
  • 文献层:心音分类综述普遍将其列为第一基准;2016 年参赛论文(CC BY 3.0)+ 后续十年论文构成完整的对比文献链。
  • 缺口:无官方 leaderboard、无官方 Python 工具链、无官方复现比赛——这三项均由社区自发补位(§9.1b)。

§8.7 生态快照表

资源 类型 链接 状态(截至 2026-09) 推荐理由
官方挑战主页 规则/论文 https://physionet.org/challenge/2016/ 永久在线 评分公式、参赛论文全集
数据托管页 1.0.0 数据 https://physionet.org/content/challenge-2016/1.0.0/ 永久托管 权威下载、逐目录浏览
AWS 开放数据桶 数据镜像 s3://physionet-open/challenge-2016/1.0.0/ 免注册 脚本化批量拉取
数据论文 DOI 持久标识 https://doi.org/10.1088/0967-3334/37/12/2181 开放获取 强制引用对象
官方 MATLAB 基线 代码 挑战页 sample2016.zip / sample2016b.zip 随数据包 HSMM 分割 + LR 起点
Kaggle 镜像 二手数据 kaggle.com/datasets/bjoernjostein/physionet-challenge-2016 旧口径 仅快速体验(坑点 7)
社区基线仓库 代码 github.com/240438/physionet2016-baseline 社区维护 Python 复现参考

§9 相关资源与引用

§9.1 官方资源

资源 类型 链接 / DOI 用途
官方挑战主页 规则与论文 https://physionet.org/challenge/2016/ 完整规则、评分公式、12+ 篇参赛论文(CC BY 3.0)
数据托管页 数据仓库 https://physionet.org/content/challenge-2016/1.0.0/ 权威下载(1.0.0 单版本)、逐目录浏览
数据集论文 开放全文 https://doi.org/10.1088/0967-3334/37/12/2181(PMID 27869105) 9 库构成、协议、统计表权威出处
AWS 开放桶 数据镜像 s3://physionet-open/challenge-2016/1.0.0/ 免注册脚本化下载
官方基线代码 MATLAB 挑战页 sample2016.zip / sample2016b.zip HSMM 四状态分割 + 20 特征 + 逻辑回归
PhysioNet 平台论文 方法文献 Goldberger et al. 2000(DOI 10.1161/01.CIR.101.23.e215);新版 Pollard et al., Nature Health, 2026(DOI 10.1038/s44360-026-00096-z) 平台引用(与数据论文并列)

§9.1b 社区与衍生工具

  • Kaggle 镜像(bjoernjostein/physionet-challenge-2016):含数据浏览器与受试者级附录 CSV 的预览(79 列);注意其为 A-E 旧口径(坑点 7)。
  • 社区基线仓库(github.com/240438/physionet2016-baseline):Python 复现参考,含 LOSO 划分思路。
  • WFDB 生态工具:.hea 头文件为 WFDB 风格,可用 WFDB Python/MATLAB 包读取头信息(波形本体是标准 .wav,scipy 足够)。
  • Springer HSMM 分割代码谱系:annotations/springer_alg 对应的分割算法另有公开实现谱系,自训分割器可参考其特征与逻辑回归设计。
  • 参赛论文全集:挑战页 papers/ 目录(CC BY 3.0)——复现 2016 年各路线(特征工程、1D-CNN、MFCC 2D-CNN 等)的第一手材料。
  • PhysioNet 平台工具:.hea 头文件与 WFDB 生态兼容,LightWAVE 网页查看器可直接在线浏览波形;AWS 开放桶支持 --no-sign-request 的脚本化获取,适合数据管线与 CI。

§9.2 BibTeX 完整引用块

@article{liu2016openaccess,
  title = {An open access database for the evaluation of heart sound algorithms},
  author = {Liu, Chengyu and Springer, David and Li, Qiao and Moody, Benjamin
            and Juan, Ricardo Abad and Chorro, Francisco J and Castells, Francisco
            and Roig, Jos{\'e} Millet and Silva, Ikaro and Johnson, Alistair EW and others},
  journal = {Physiological Measurement},
  volume = {37},
  number = {12},
  pages = {2181--2213},
  year = {2016},
  doi = {10.1088/0967-3334/37/12/2181}
}

@inproceedings{clifford2016challenge,
  title = {Classification of normal/abnormal heart sound recordings:
           The {PhysioNet/Computing in Cardiology} Challenge 2016},
  author = {Clifford, Gari D and Liu, Chengyu and Moody, Benjamin
            and Springer, David and Silva, Ikaro and Li, Qiao and Mark, Roger G},
  booktitle = {Computing in Cardiology},
  year = {2016}
}

@article{goldberger2000physiobank,
  title = {{PhysioBank}, {PhysioToolkit}, and {PhysioNet}: Components of a new
           research resource for complex physiologic signals},
  author = {Goldberger, Ary L and Amaral, Luis AN and Glass, Leon
            and Hausdorff, Jeffrey M and Ivanov, Plamen Ch and Mark, Roger G
            and Mietus, Joseph E and Moody, George B and Peng, Chung-Kang
            and Stanley, H Eugene},
  journal = {Circulation},
  volume = {101},
  number = {23},
  pages = {e215--e220},
  year = {2000},
  doi = {10.1161/01.CIR.101.23.e215}
}

§9.3 引用指南

ODC-By 许可的署名义务:使用本数据集须引用数据描述论文(Liu et al. 2016)与 PhysioNet 平台论文(Goldberger et al. 2000;或新版 Pollard et al., Nature Health, 2026, DOI 10.1038/s44360-026-00096-z);描述挑战机制/官方成绩时应另引挑战论文(Clifford et al. 2016)。

你在做什么 应引用的对象 BibTeX 键
使用数据做任何研究 Liu et al. 2016 + PhysioNet 平台论文 liu2016openaccess + goldberger2000physiobank
讨论/对标官方成绩与评分机制 Clifford et al. 2016 挑战论文 clifford2016challenge
引用冠军方案 Potes & Parvaneh 的参赛论文(挑战页公开) 按其原文条目
使用 Kaggle 镜像 仍引官方论文(数据同源),并注明取数渠道差异 liu2016openaccess

引用示例(正文英文句):

We evaluate on the PhysioNet/Computing in Cardiology Challenge 2016 heart sound database (Liu et al., 2016, DOI 10.1088/0967-3334/37/12/2181), hosted on PhysioNet (Goldberger et al., 2000), under a leave-one-database-out protocol; the official hidden-test benchmark score was 0.8602 (Clifford et al., 2016).


§10 AI 使用声明卡

§10.1 AI 模型列表

本文由千方病案医数集写作 Agent(fast-model)在规范宪法 v1.0 约束下起草与排版,并经人工编辑复核。

§10.2 AI 参与范围

AI 负责:(1) 从官方挑战页、数据托管页、数据论文(Emory 开放库镜像)、二手转引(rombio/beholder/PMC 综述)与 Kaggle 页面中整理结构化事实;(2) 生成 §6 的 Python 下载/体检/预处理/DataLoader/官方计分代码;(3) 系统化组织 §6.5 的 8 个坑点与 §7.1 偏倚表;(4) 执行 G1/G2/G3 排版规范与中英混排检查;(5) 构建 §C 统一 JSON-LD @graph。所有硬数字(录音数、受试者数、采样率、大小、日期、分数)均回溯至 §10.3 所列来源;无来源的数字一律省略。

§10.3 输入来源列表

  1. 官方挑战主页(规则/评分/提交限制/参赛论文) — physionet.org/challenge/2016/
  2. 数据托管页 1.0.0(版本、大小、目录) — physionet.org/content/challenge-2016/1.0.0/
  3. training-d 子目录页(逐文件清单与校验文件) — physionet.org/content/challenge-2016/1.0.0/training-d/
  4. 数据描述论文 PDF(Liu et al. 2016,Emory 开放库镜像:9 库、2,435 条原始口径、1,297 人、Table 4) — open.library.emory.edu/downloads/9be4dc35-cf4e-45c8-95bb-046b0df0092f
  5. 逐库/测试集数字转引 PDF(rombio Table 3,行和双源校验) — rombio.unibuc.ro/wp-content/uploads/2022/03/27-1-1.pdf
  6. beholder 博客数据集解读(拆分设计与 hand_corrected 比例) — blog.beholderhq.com/brief-review-physionet-cinc-challenge-2016-…
  7. DTF-STCANet 论文对比表(后续文献成绩区间) — pmc.ncbi.nlm.nih.gov/articles/PMC13114380/
  8. MDPI Applied Sciences 综述(自定划分成绩口径) — mdpi.com/2076-3417/15/20/11047
  9. Kaggle 镜像页(旧口径 3,126 条、附录 CSV 79 列、大小与热度) — kaggle.com/datasets/bjoernjostein/physionet-challenge-2016
  10. 腾讯 IMA wiki 转引表(Potes/Rubin 的 Sen/Spe/MAcc 细分) — ima.qq.com/wiki/(综述转引)
  11. 社区基线仓库 — github.com/240438/physionet2016-baseline
  12. ICD-10 R01.1 对照 — emedcodes.com/ICD10/R011.html
  13. 瓣膜病 ICD-11 区段对照 — iliveok.com(瓣膜病综述页)
  14. MalaCards 二尖瓣疾病页(SNOMED 11851006/155278007/83898004) — malacards.org/card/mitral_valve_disease
  15. CMS 医保覆盖文档(I34.0/I34.1/I35.0 对照) — cms.gov/medicare-coverage-database/view/article.aspx?articleid=52850

§10.4 人工校验表

内容模块 审核者 审核方式 审核状态
frontmatter/schema_org 千方病案医学编辑部 Schema v3.9 字段逐项校验 ✅ 已通过
INFOBOX/§0 免责 千方病案医学编辑部 交叉审核 ✅ 已通过
§2 医学背景与映射 千方病案医学编辑部 文献交叉审核 ✅ 已通过
§3-§5 规格与划分(含逐库数字行和校验) 千方病案医学编辑部 数据工程审核 ✅ 已通过
§6 坑点与代码 千方病案医学编辑部 代码复核 ✅ 已通过
§7 质量评估与 DAIMS 千方病案医学编辑部 交叉审核 ✅ 已通过
§8 基准与生态(官方分数口径核对) 千方病案医学编辑部 文献/排行核对 ✅ 已通过
§C JSON-LD @graph 千方病案医学编辑部 Schema v3.9 字段逐项校验 ✅ 已通过

§10.5 AI 生成章节标注

全部章节(§0-§10 与 §C)均由 AI 依据规范宪法与检索事实起草;关键硬数字(3,240/764、1,277/308、2,000 Hz、1,011.4 MB、0.8602/0.8590、84,467、71.1%/17.7%/11.2% 等)均回溯至 §10.3 所列来源并经人工核对;无来源的数字(如逐库国家对应表、引用总量)一律不写。

§10.6 最后人工审核日期

最后人工审核日期:2026-09-05

页面状态:published(全部内容已完成审核并发布)


§C 结构化数据(JSON-LD)


相关数据集导航

以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:

  • HLS-CMDS — 共享标签:生理信号 / 语音信号 / 心血管疾病
  • circor-digiscope — 共享标签:生理信号 / 语音信号 / 心血管疾病
  • coughvid — 共享标签:生理信号 / 语音信号
  • torgo — 共享标签:生理信号 / 语音信号
  • Bridge2AI-Voice — 共享标签:生理信号 / 语音信号
  • coswara — 共享标签:生理信号 / 语音信号
  • saarbrucken-voice-db — 共享标签:生理信号 / 语音信号
  • pc-gita — 共享标签:生理信号 / 语音信号
  • ua-speech — 共享标签:生理信号 / 语音信号
  • mesa-sleep — 共享标签:生理信号 / 心血管疾病

导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

返回 AI-Ready 数据集