信息速览

Coswara — 新冠呼吸音众包数据集 AI-Ready Wikipedia
INFOBOX
| 字段 | 内容 |
|---|---|
| 数据集名称 | Coswara 新冠声音 |
| 英文全称 | Coswara: A respiratory sounds and symptoms dataset for remote screening of SARS-CoV-2 infection |
| 别名/简称 | Coswara-Data、Project Coswara |
| 疾病分类 | ICD-11 1D92(COVID-19,病毒未证实)/ 1D93(COVID-19,病毒已证实) |
| SNOMED CT | 840539006(COVID-19,Disease caused by SARS-CoV-2) |
| 数据模态 | 咳嗽音(重/浅)、呼吸音(深/浅)、持续元音(3 种)、计数控语音(2 种节奏) |
| AI 任务类型 | 音频二分类/多分类、音频质量评估、偏倚与公平性分析、多模态音频-症状建模 |
| 样本总数 | 2,635 名受试者 × 9 类音频,总计约 65 小时 |
| 数据大小 | 约 65 小时音频(分卷 tar.gz 压缩发布) |
| 数据格式 | WAV(48 kHz)+ CSV 元数据 |
| 许可证 | CC BY 4.0 International |
| 访问级别 | 开放(GitHub 直接下载,无需注册) |
| DUO 标签 | NRES(无限制使用) |
| 语言 | 元数据为英语;语音内容为英语计数与持续元音 |
| 首发日期 | 2020-04-13 |
| 最后更新 | 2022-02(数据仓库);2023-06(Scientific Data 论文) |
| 发布机构 | 印度科学理工学院(IISc Bangalore) |
| 官方主页 | coswara.iisc.ac.in |
| 下载地址 | github.com/iiscleap/Coswara-Data |
| DOI | 10.1038/s41597-023-02266-0 |
| 引用次数 | 53+(Scopus,截至 2026-09) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 提供官方按受试者组织的数据、technical_validation 基线代码与音质标注,但音频预处理、标签聚合与按人划分需自行实现 |
| 页面状态 | published |
§0 E-E-A-T 审核声明
医学审核:[千方病案医学编辑部]交叉审核:§2 医学背景(ICD-11/SNOMED CT 双映射、疾病流行病学)、§7 偏倚分析(自报标签局限、公平性证据)。
数据工程审核:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
医疗免责声明:本页面内容仅供研究与技术评估使用,不构成医疗建议、诊断或治疗意见。任何基于声音信号的健康推断均未达到临床诊断标准,使用者不应依据本页信息对个体健康状况作出判断。如有健康问题,请咨询持证医疗机构与专业人员。
技术免责声明:本页面提供的代码与配置仅用于演示数据处理流程,未在所有环境中验证。使用者应在自行评估后将其适配至目标环境,并自行承担运行风险。
数据使用合规声明:Coswara 数据集以 CC BY 4.0 许可发布,允许商用与再分发。使用者在发表成果时须按官方要求引用原始论文,并遵守其数据来源声明;本页面与数据集官方发布方无隶属关系。
页面维护说明:本词条由千方医数集编辑部维护,内容基于 2026-09 检索时点的公开资料撰写;数据集本体由 IISc Bangalore 团队发布,若官方发布新版本或更正信息,以官方渠道为准。本页所有外部链接与引用均在 §9 与 §10.3 集中披露。
§1 数据集概览
§1.0 📌 30 秒速览
这是什么? Coswara 是印度科学理工学院(IISc Bangalore)在新冠疫情期间发起的众包呼吸音数据库。任何人在其网页应用上花 5-7 分钟,用自己的手机录制深/浅呼吸、重/浅咳嗽、三种持续元音和两种节奏的 1-20 计数,即可贡献 9 条音频,同时填写症状、合并症与新冠检测状态。截至 2022 年 2 月,共收集 2,635 名受试者、约 65 小时音频。
为什么重要? 新冠的典型症状是咳嗽与呼吸困难,而声音是这些生理状态最直接的载体。RT-PCR 检测昂贵、耗时且需要物资调度,声音筛查只需一部手机。Coswara 是少数公开发布、规模达数千人、且对全量 65 小时音频做了人工音质标注的呼吸音数据集,填补了"众包音频能否用于疾病筛查"这一命题的研究基础设施空白。
我能用它做什么? 训练咳嗽/呼吸音的新冠二分类模型,评测音频质量鲁棒性,研究跨设备、跨人群的偏倚与公平性(论文自带 BLSTM 基线与子群体分析),或将其作为呼吸健康监测、远程听觉诊断类研究的预训练语料。注意:它不能替代临床诊断,阳性标签为自报状态。
§1.1 摘要
Coswara 由 IISc Bangalore 电气工程系 Sriram Ganapathy 团队构建,名称由 Co(COVID-19)与 swara(梵语"声音")合成。数据经网页应用(coswara.iisc.ac.in)与医院合作渠道(Ramaiah Medical College Hospital、Hoskote 综合医院、PSG 医学院等)采集,录制期 2020 年 4 月至 2022 年 2 月,跨度 22 个月,覆盖野生株至 Delta 等多个变异株流行期。正式版含 2,635 名受试者(1,819 阴性、674 阳性、142 康复),每人最多 9 条 48 kHz 无有损压缩音频,总时长约 65 小时;标注团队以人工试听方式对全量音频按 0/1/2 三档标注音质,属同类数据集中的首次。官方在 Scientific Data 论文中给出 BLSTM 二分类基线,并按性别、地理、录制日期、语言能力与疫苗接种状态做子群体公平性分析。数据以 CC BY 4.0 开放托管于 GitHub(2023 年 5 月前为 CC BY-NC-ND 4.0)。
技术脉络上,项目分三阶段推进:数据采集(2020-04 起滚动发布)、建模(信号处理与机器学习分析)、诊断工具(网页应用即时出分)。发布节奏与论文时间线解耦——GitHub 每日文件夹面向社区实时开放,Scientific Data 冻结版则在三年后给出可复现的权威口径;使用者引用时应区分"哪一版规模口径"(详见 §1.4 与 §3.0)。
§1.2 战略价值
维度一:远程筛查基础设施。 在全球公共卫生事件中,POCT(即时检测)能力取决于能否低成本触达海量人群。Coswara 证明了"手机录音 + 云端推理"的技术路径可行性:官方网页应用可在数秒内输出 COVID-19 概率分数,全流程无需额外设备。对研究机构而言,这是设计大规模呼吸健康监测系统时最接近真实部署条件的语料之一。
维度二:公平性研究的天然试验场。 众包采集天然带来设备异构、人口结构不均衡与语言多样性。官方论文首次系统报告了声学筛查模型在性别、地理位置(印度内/外)、录制日期、语言能力与疫苗接种状态等子群体上的性能差异,使 Coswara 成为音频医疗 AI 公平性基准的少数公开选择。
维度三:全量人工音质标注。 约 65 小时音频全部经人工试听并标注 2(excellent)/1(good)/0(bad)三档音质。这层"元标注"可直接用于噪声鲁棒训练、质量感知学习与标注成本研究,是同规模众包音频库中稀缺的资产。
维度四:变异株纵向维度。 录制期跨越多个变异株流行阶段与疫苗接种推广期,日期文件夹结构使"时间切片实验"零成本可行——可研究同一标签定义在不同流行期的分布漂移,这是横断面数据集无法提供的纵向视角。
§1.3 同类数据集横向对比
| 数据集 | 主导机构 | 规模口径 | 模态构成 | 状态标注 | 与 Coswara 的差异化 |
|---|---|---|---|---|---|
| Coswara(本页) | IISc Bangalore | 2,635 人 / 约 65 小时 | 9 类呼吸音 + 语音 | 自报检测状态 + 人工音质 0-2 | 模态最全(9 类)、全量音质人工标注、CC BY 4.0 |
| COVID-19 Sounds(Cambridge) | University of Cambridge | 众包多轮采集(见其 NPJ Digit Med 2021 论文) | 咳嗽 + 呼吸 + 语音 | 自报检测状态 | 含肺活量测定任务,地理分布更国际化 |
| CoughVID | 乌拉圭团队 | 众包咳嗽库(见其论文) | 以咳嗽为主 | 自报 + 专家复标子集 | 单模态,咳嗽录音更长 |
| Cough Against COVID | Wadhwani AI 等 | 众包咳嗽库(见其论文) | 咳嗽 | 自报检测状态 | 聚焦印度,与 Coswara 人群部分重叠 |
| ICBHI 2017 Respiratory Database | 研究联盟 | 920 条录音(非新冠) | 肺音听诊音 | 哮喘/COPD 专家标注 | 非 COVID 任务,医疗级听诊设备采集 |
Coswara 论文 Table 1 给出了与同期新冠呼吸音数据集的官方对比;上表中其他数据集的规模数字以各自论文为准,本页仅收录已核实部分。
对比要点:Coswara 的差异化不在"最大",而在"最全"——9 类发声任务覆盖呼吸/咳嗽/语音三族、全量音质人工标注、官方公平性分析与 CC BY 4.0 宽松许可四项同时满足的公开库目前仅此一家;其余库或模态单一、或许可更严、或缺少人工音质层。选库决策应回到具体任务:咳嗽单任务可优先 CoughVID(更长录音),地理多样性优先 COVID-19 Sounds,多模态任务设计优先 Coswara。
§1.4 版本时间轴
| 时间 | 版本/事件 | 规模 | 说明 |
|---|---|---|---|
| 2020-04-13 | 首个滚动发布(GitHub 日期文件夹) | 76 例 | 此后按日期目录持续追加 |
| 2020-05 | arXiv 预印本 2005.10548 发布 | 发布时点 941 人(2020-08-07 口径) | 数据库描述论文 |
| 2021-09-30 | 最后一个日期文件夹 | 该批 103 例 | 滚动采集收尾 |
| 2022-02-26 | combined_data.csv 最终更新 | 2022-02-24 发布版 2,746 样本 | 滚动版终态 |
| 2022-10-12 | GitHub release v1.0.0 | — | 唯一正式 release |
| 2023-06-22 | Scientific Data 论文(10:397) | 2,635 人(1,819/674/142) | 经人工整理与音质标注的冻结版,CC BY 4.0 |
时间轴使用提示:社区早期论文的"2,700+ 样本""941 人"等数字分别对应 2022-02 滚动版与 2020-08 arXiv 口径,与正式版 2,635 并存于文献中;读到任何引用 Coswara 规模的数字时,先对照此表定位其版本时点再比较。
§1.5 典型应用场景
- 新冠声学筛查模型训练与基准评测:以 9 类音频为输入,训练咳嗽/呼吸/语音二分类器,与官方 BLSTM 基线及社区结果(AUC 0.74-0.98)对标。提示:固定 §8.3 协议后再对比数字。
- 偏倚与公平性审计:利用论文公开的子群体分析方法,复现性别/地理/日期/语言维度的性能差异,发展去偏算法。提示:直接采用 §6.9 的分组评估骨架。
- 音频质量感知学习:用全量 0-2 音质标注研究质量过滤、噪声鲁棒表征与"标注-性能"权衡。提示:annotations/ 目录可与音频逐条对齐。
- 多模态症状-声学融合:结合症状、合并症元数据与音频,做听觉-症状联合建模(如 CNN + 症状向量融合)。提示:融合分支仍需按 participant id 分组划分。
- 跨数据集泛化研究:与 Sarcos、CoughVID、COVID-19 Sounds 等库做迁移/跨库评测,研究域漂移。提示:至少报告一个外部库,见坑点 6。
§2 医学背景
§2.1 ICD-11 编码映射
| 标签/概念 | ICD-11 编码 | ICD-11 中文名 |
|---|---|---|
| COVID-19(病毒未证实) | 1D92 | 冠状病毒病 2019,病毒未证实 |
| COVID-19(病毒已证实) | 1D93 | 冠状病毒病 2019,病毒已证实 |
| 咳嗽(主要声学症状) | MD11 | 咳嗽 |
| 发热(自报症状之一) | MG26 | 发热 |
| 嗅觉丧失(自报症状之一) | 9C61.0 | 嗅觉丧失,完全性 |
§2.1b SNOMED CT 映射
| 标签/概念 | SNOMED CT 码 | 术语 |
|---|---|---|
| COVID-19(疾病) | 840539006 | Disease caused by SARS-CoV-2 |
| SARS-CoV-2(病原体) | 840533007 | SARS-CoV-2 (organism) |
| 咳嗽 | 49727002 | Cough (finding) |
| 呼吸困难 | 267036007 | Dyspnea (finding) |
| 发热 | 386661006 | Fever (finding) |
| 味觉/嗅觉倒错 | 44169009 | Loss of sense of smell or taste |
§2.1c 症状-声学机理映射
理解标签与声学表现的对应关系,是设计任务与解读模型归因的前提:
| 病理/症状 | 声学表现 | 对应录音任务 |
|---|---|---|
| 咳嗽(气道刺激) | 脉冲簇时序、能量包络与频谱重心改变 | cough-heavy、cough-shallow |
| 呼吸困难/气流受限 | 呼吸相延长、气流噪声增强、呼吸率改变 | breathing-deep、breathing-shallow |
| 声带炎症/负荷 | 基频不稳、谐波畸变、共振峰扰动 | 三种持续元音 |
| 全身疲劳/语言运动控制 | 语速、停顿与发音省略增多 | counting-normal、counting-fast |
| 嗅觉/味觉丧失 | 无直接声学表现(间接关联气道炎症) | 作为症状协变量参与融合建模 |
§2.2 疾病简介与流行病学
COVID-19 是由 SARS-CoV-2 引起的急性呼吸道传染病,2020 年 3 月被 WHO 定为全球大流行。至 2022 年 7 月,全球报告病例超过 5.5 亿,病死率超过 1%(见 Scientific Data 论文引述)。其突出临床特征为咳嗽、呼吸困难与嗅觉/味觉障碍,这些均直接改变呼吸音与语音的声学表现——咳嗽模式变化、呼吸相延长、元音共振峰扰动,构成"声音筛查"的生物学基础。声学筛查的定位是大规模初筛而非确诊:RT-PCR 仍是金标准,但成本高、周转慢且需冷链物流;声音采集边际成本趋近于零,适合作为第一道筛选。
流行病学上,数据采集期(2020-04 至 2022-02)横跨原始株、Alpha、Delta 与 Omicron 早期流行阶段,不同变异株的症状谱与接种背景差异被"录制日期"字段部分记录,这正是论文偏倚分析发现子群体性能漂移的临床原因。
从声学诊断的历史脉络看,用听诊器听取呼吸音筛查呼吸道疾病可追溯到 19 世纪(论文引述 1821 年起),数字技术只是把这一古老范式迁移到了互联网设备上。Coswara 的贡献在于把"经验听诊"升级为"可计算的证据链":9 类标准化发声任务、48 kHz 统一采样、全量人工音质标注与公开基线,使得任何团队都能在同一口径上比较声学标记物的判别力。这与同期依靠单一咳嗽录音的数据集相比,为"哪种发声行为携带最多病理信息"提供了可控变量。
§2.3 临床任务定义
| 任务 | 输入 | 输出 | 在本数据集中的实现 |
|---|---|---|---|
| 筛查(screening) | 1-9 类音频(可选 + 症状) | 阳性概率分数 | 官方 BLSTM 网页应用,数秒出分 |
| 辅助分诊 | 咳嗽 + 症状元数据 | 阳性/阴性 + 症状严重度参考 | 8 类状态(含 positive_mild/moderate/asymp)可做分级研究 |
| 音频质量判别 | 原始波形 | 音质 2/1/0 | 全量人工试听标注 |
| 公平性评测 | 音频 + 人口学元数据 | 子群体性能矩阵 | 论文按性别/地理/日期/语言/接种状态报告 |
各任务的标签可信度自上而下递增(筛查用自报二分标签,公平性评测用人口学自报字段),而数据需求递减;音频质量判别是唯一不依赖自报信息的任务,其标签完全由人工标注生成,可作为体系内"最干净"的基准任务。
§2.4 患者人群表
| 维度 | 内容 |
|---|---|
| 来源 | 全球众包(网页应用)+ 印度多家合作医院渠道 |
| 采集时间 | 2020-04 至 2022-02(22 个月) |
| 地域 | 全球提交,以印度为主;元数据含国家与邦/省 |
| 年龄 | 15-90 岁跨度 |
| 状态构成 | 阴性 1,819、阳性 674、康复 142(共 2,635) |
| 就医类型 | 社区众包为主 + 医院协同采集 |
| 症状覆盖 | 咳嗽、发热、肌肉痛、嗅觉/味觉丧失、咽痛、疲劳、呼吸困难、腹泻等自报条目 |
| 合并症覆盖 | 哮喘等既往呼吸疾病、吸烟状态等自报条目 |
正式版 2,635 人中未公开完整的性别与种族交叉统计表;性别维度的性能影响见 §7.1 与论文公平性分析。JIFS 2023 论文在其使用的子集上报告了按性别与症状的交叉统计(如 healthy 组男 442/女 166),可作为子集构成的参考,但该口径不能外推到全库。
§2.5 临床价值
对公共卫生体系而言,声学筛查的价值在于"零边际成本的初筛层":在疫情高峰期把有限 RT-PCR 资源集中到高危人群,同时以声音分数触发居家隔离与复核建议。官方 BLSTM 网页工具是同类研究中最早公开的在线筛查 demo 之一。对临床研究而言,9 类标准化发声任务(尤其是深/浅呼吸与重/浅咳嗽的对照设计)为分离"发声行为"与"病理声学特征"提供了可控变量。对康复医学而言,142 名康复者的录音为"长新冠呼吸音残留特征"研究提供了 rare 样本。
需要强调的边界:声学筛查的置信上限受标签质量(自报)与录音条件(非受控环境)双重约束,其定位是"低成本的触发器"而非"诊断器"。在资源充足场景,它替代不了检测;在资源紧缺场景,它把"谁先检测"的排队问题变成了可计算的分诊问题——这正是 Coswara 团队将其定位为 POCT 工具的原因。
§2.6 金标准对照
| 维度 | 金标准 | 本数据集的实现 | 性质差异 |
|---|---|---|---|
| 感染确认 | RT-PCR(实验室核酸) | 参与者自报 SARS-CoV-2 检测状态 | 自报,无统一复核记录;存在 under_validation(81 例,2022-02 口径)等未定状态 |
| 症状记录 | 标准量表(如 WHO 临床特征表) | 自报症状问卷(咳嗽、发热、嗅觉丧失等) | 自报,与金标准量表存在测量误差 |
| 音频质量 | 录音室/医疗级采集 | 消费级手机麦克风 + 人工 0-2 音质标注 | 真实部署条件,但声学控制弱 |
| 人群表征 | 注册队列 | 众包 + 医院渠道 | 选择偏倚明显,印度为主 |
对金标准差距的定位:Coswara 的标签反映"真实世界的检测可得性与自报行为",这正是部署场景中模型实际面对的标签形态;代价是无法量化假阳性/假阴性标签比例。研究"理想标签下的声学判别上限"应改用医疗级采集库,研究"部署条件下的真实性能"则 Coswara 更贴近。
§3 数据集规格
§3.0 版本抉择矩阵
| 你的需求 | 推荐版本 | 大小 | 理由 |
|---|---|---|---|
| 论文对标、可复现基准 | GitHub master(Scientific Data 冻结版) | 约 65 小时音频 + technical_validation | 与 2023 论文 2,635 人口径一致,含官方基线代码 |
| 复现 2020-2022 社区论文 | 2022-02-26 发布版(combined_data.csv 终态) | 2,746 样本口径 | 与 Pinkas 2021 等社区结果的时点一致 |
| 追踪采集过程/时间效应 | 日期文件夹滚动发布(20200413 起逐批) | 各批 14-197 例不等 | 可研究录制日期对分布与标签的影响 |
| 最快验证想法 | combined_data.csv + 单类咳嗽子集 | 元数据 CSV 仅数 MB | 先做数据审计再决定是否下载全量音频 |
| 声音任务设计研究 | arXiv 2005.10548(941 人口径) | 最小 | 了解 9 类任务的最初设定与早期结论 |
§3.1 模态详情
| 声音类别 | 文件命名类别 | 任务指令 | 声学特性 |
|---|---|---|---|
| 呼吸-深 | breathing-deep | 深呼吸 | 长周期气流噪声,含吸气-呼气交替 |
| 呼吸-浅 | breathing-shallow | 浅快呼吸 | 高呼吸率,周期缩短 |
| 咳嗽-重 | cough-heavy | 用力咳嗽 | 高声强脉冲簇,宽频瞬态 |
| 咳嗽-浅 | cough-shallow | 轻咳 | 低声强,脉冲簇更短 |
| 元音-/ey/ | vowel-a | 发 “made” 中的元音 | 稳态谐波 + 共振峰 |
| 元音-/i/ | vowel-e | 发 “beet” 中的元音 | 高频第二共振峰 |
| 元音-/u:/ | vowel-o | 发 “cool” 中的元音 | 低频能量集中 |
| 计数-常速 | counting-normal | 正常语速数 1-20 | 连续语音,数字韵律 |
| 计数-快速 | counting-fast | 快速数 1-20 | 语速加快,发音省略增多 |
官方 README 对元音的表述(/a/、/i/、/o/)与论文(/ey/ as in made、/i/ as in beet、/u:/ as in cool)指向同一组三元音录音任务;文件命名类别为社区通用写法,精确文件名以解压后目录为准。
9 类任务的设计逻辑可按"发音努力程度"排成一条谱线:浅呼吸 → 深呼吸 → 元音 → 浅咳 → 重咳,语音(计数)则横跨语言运动控制维度。这条谱线让研究者可以用同一批受试者比较"不同发音行为对判别力的贡献",社区实验(Pinkas et al. 2021 的三模态对比)正是沿此逻辑展开:咳嗽最富判别信息,呼吸次之,语音最弱但仍可用。
§3.2 按子集样本数
正式版(Scientific Data 2023,2,635 人)与 2022-02-24 滚动发布版(2,746 样本)的标签分布如下。两版口径不同:前者是人工整理后的冻结版三分口径,后者是原始 8 类状态字段口径。
| 状态(正式版) | 人数 | 状态(2022-02-24 版,8 类) | 样本数 | |
|---|---|---|---|---|
| SARS-CoV-2 阴性 | 1,819 | healthy | 1,433 | |
| SARS-CoV-2 阳性 | 674 | positive_mild | 426 | |
| 康复 | 142 | no_resp_illness_exposed | 248 | |
| positive_moderate | 165 | |||
| resp_illness_not_identified | 157 | |||
| recovered_full | 146 | |||
| positive_asymp | 90 | |||
| under_validation | 81 |
§3.3 数据格式
| 组成 | 格式 | 说明 |
|---|---|---|
| 音频 | WAV(48 kHz,无有损压缩) | 每类声音一个文件,按声音类别命名 |
| 元数据 | combined_data.csv + 各日期文件夹内 CSV | 列定义见 csv_labels_legend.json |
| 音质标注 | annotations/ 目录 | 人工试听,2(excellent)/1(good)/0(bad) |
| 技术验证 | technical_validation/ | BLSTM 训练与评估代码 |
| 发布形式 | 按日期命名的分卷 tar.gz(.tar.gz.a*) | 用官方 extract_data.py 合并解压 |
| 仓库配置 | LICENSE.md、README.md | CC BY 4.0 与使用/引用说明 |
| 标签图例 | csv_labels_legend.json | 8 类状态与各列语义的权威定义 |
§3.4 存储大小
音频总量约 65 小时(全量人工试听口径)。以 2,635 人 × 9 类估算,录音条数上限约 23,715 条;实际存在缺类与音质淘汰,最终条数以解压后目录为准。仓库以分卷压缩包发布,克隆前建议预留音频原始体量约 1.5-2 倍的磁盘空间(解压副本 + 压缩包)。官方未在 README 中给出精确压缩包字节数,故本页不标注该数字。
| 存储项 | 估算依据 | 说明 |
|---|---|---|
| 音频时长 | 官方全量试听口径 | 约 65 小时 |
| 录音条数上限 | 2,635 × 9 | 23,715 条(实际更少) |
| 元数据 | combined_data.csv | 数 MB 级,可直接预览 |
| 磁盘预留 | 压缩包 + 解压副本 | 建议约 2 倍原始体量 |
§3.5 标注方式
| 标注对象 | 方式 | 标注者 | 规模 |
|---|---|---|---|
| SARS-CoV-2 状态 | 自报(网页问卷) | 参与者本人 | 全量 2,635 人 |
| 症状/合并症 | 自报问卷(咳嗽、发热、嗅觉丧失、哮喘等) | 参与者本人 | 全量 |
| 音频类别校验 | 人工试听(网页标注界面逐条确认类别与质量) | 标注团队 | 全量 65 小时 |
| 音质分级 | 人工试听,0/1/2 三档 | 标注团队 | 全量 |
人工标注流程要点:标注者在网页界面逐条试听每个声音文件,回答类别正确性与质量问题,并可补充备注(论文图 5 展示界面截图);质量计数按 9 类声音分别汇总(论文图 4(f))。这一流程使每条录音同时携带"类别确认"与"质量分级"两层人工信号。
§3.6 标注者资质与一致性
音质与类别校验由 IISc 团队的研究人员通过统一网页界面完成,界面要求逐条试听并回答类别与质量问题(论文图 5 展示了标注界面)。官方未公布标注者人数、听力学资质与标注者间一致性系数(如 Kappa),故一致性无法量化;使用者应将音质标签视为"单一团队共识"而非多人盲标金标准。
§3.7 采集周期
滚动采集自 2020-04-13 起,至 2021-09-30 的最后一个日期文件夹止,随后进入整理与论文阶段(combined_data.csv 最后更新 2022-02-26,release v1.0.0 于 2022-10-12,论文 2023-06-22)。单个参与者的录制会话为 5-7 分钟。
采集节奏并非均匀:早期(2020-04 至 2020-05)日批次可达 76-197 例,此后批次明显缩小(多为 14-83 例),中期出现数周级空档。这一节奏与印度疫情波动、封控政策与传播扩散阶段相关,做时间切片分析时应把"批次大小差异"纳入解读。
§3.8 地域覆盖
提交者遍布多国(元数据含国家与邦/省字段),但主体来自印度;论文将地理分布按"印度内/印度外"分组做公平性分析,并发现两组间性能差异显著。合作医院均位于印度(班加罗尔 Ramaiah 医学院医院、Hoskote 综合医院、哥印拜陀 PSG 医学院医院)。
§3.9 设备规格
采集设备为参与者自有的消费级智能手机与笔记本电脑麦克风,官方引导:使用个人设备、录制前后用消毒湿巾擦拭、口部距设备约 10 cm。采样率统一为 48 kHz(网页端录音管线归一),未使用医疗级麦克风。官方未记录每条录音的具体设备型号,设备异构性是数据集的固有偏倚源(见坑点 5)。
| 采集规范项 | 官方要求 | 落库情况 |
|---|---|---|
| 录音设备 | 参与者个人手机/电脑麦克风 | 未记录具体型号 |
| 采样率 | 网页管线统一 48 kHz | 全库一致 |
| 口距 | 约 10 cm | 依赖参与者自觉 |
| 环境控制 | 无强制安静环境要求 | 环境噪声差异大,由音质标注覆盖 |
| 消毒 | 录制前后擦拭设备 | 行为要求,不可验证 |
| 压缩 | 无有损压缩发布 | 原始波形保留 |
§3.10 深度溯源链
| 层级 | 内容 | 可核查入口 |
|---|---|---|
| 采集协议 | 网页应用任务流、9 类发声指令、5-7 分钟会话 | coswara.iisc.ac.in 与论文 Methods |
| 原始数据 | 按日期文件夹的原始音频与逐人 CSV | GitHub 仓库各日期目录 |
| 整理层 | combined_data.csv + csv_labels_legend.json | 仓库根目录 |
| 质控层 | annotations/ 音质 0-2 标注 | 仓库 annotations 目录 |
| 验证层 | technical_validation/ BLSTM 代码 | 仓库 technical_validation 目录 |
| 出版层 | Scientific Data 2023 论文(含公平性分析) | DOI 10.1038/s41597-023-02266-0 |
§4 数据结构
§4.0 目录树
数据经官方 extract_data.py 解压后的结构预览(以 master 分支为基准;日期文件夹与参与者 ID 为示意):
Coswara-Data/
├── combined_data.csv # 全体参与者元数据汇总(一行一人)
├── csv_labels_legend.json # combined_data.csv 各列的语义定义
├── extract_data.py # 分卷合并解压脚本(官方)
├── LICENSE.md # CC BY 4.0
├── annotations/ # 音质 0/1/2 人工标注
├── technical_validation/ # 官方 BLSTM 基线代码
├── 20200413/ # 按采集日期组织的文件夹
│ ├── <participant_id_1>/
│ │ ├── <类别>.wav # 该受试者的音频(如 cough-shallow)
│ │ └── 元数据 CSV
│ └── <participant_id_2>/
├── 20200415/
│ └── ...
└── 20210930/ # 最后一个日期文件夹
解压目录名 Extracted_data/ 由 extract_data.py 固定生成,重命名会导致下游脚本(含官方与社区处理代码)路径失效。
对目录组织的三点解读:其一,"日期为顶层"的组织方式保留了采集时间维度,做漂移分析时无需额外字段即可按批切片;其二,元数据有两层(各日期文件夹内 CSV + 根目录 combined_data.csv),以根目录汇总表为权威并定期校验一致性;其三,annotations/ 与 technical_validation/ 是仓库的增值资产,任何复现工作都应把音质过滤与官方基线纳入默认流程。
§4.1 DAIMS 字段字典(combined_data.csv 核心字段)
精确列名以仓库根目录 csv_labels_legend.json 为准,下表按语义收录核心字段(8 列:字段/类型/说明/示例值/AI 用途/观测误差/信息性缺失编码/取值范围)。
| 字段(语义) | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| participant id | 文本 | 参与者唯一标识,关联音频文件夹 | 日期目录下子目录名 | 分组划分主键 | 无(生成值) | 无缺失 | 全库唯一 |
| 提交渠道 | 分类型文本 | 众包网页/医院渠道(如可区分) | hospital / crowd | 渠道分层评估 | 官方未提供独立字段 | 无 | 依库内说明 |
| collection date | 日期 | 提交日期(日期文件夹名) | 2020-05-02 | 时间漂移/变异株效应 | 时区未标注 | 无 | 2020-04-13 至 2021-09-30 |
| covid_status | 分类型文本 | 自报状态 8 类 | positive_mild | 分类标签 | 自报误差 | under_validation 表示待核 | 8 类(见 §3.2) |
| age | 整数 | 年龄(岁) | 33 | 分层/公平性 | 自报 | 空值 = 未填 | 15-90 |
| gender | 分类型文本 | 性别 | female | 公平性分析 | 自报 | 空值 = 未填 | 枚举 |
| country / state | 分类型文本 | 地理位置 | India / Karnataka | 地理公平性分组 | 自报 | 空值 = 未填 | 多国/印度各邦 |
| 症状(fever、cough、loss of smell 等) | 布尔型文本 | 自报症状 | TRUE | 多模态融合特征 | 自报 | FALSE 含"未填与无症状"混淆风险 | TRUE/FALSE |
| 合并症/既往症(asthma、smoker 等) | 布尔型文本 | 既往呼吸疾病与吸烟 | FALSE | 混杂控制 | 自报 | 同上 | TRUE/FALSE |
| 音质(annotations/) | 整数 | 人工试听 0/1/2 | 2 | 质量过滤/元标签 | 主观判级 | 0 表示 bad(非缺失) | 0-2 |
§4.2 标签分布
- 正式版三分口径:阴性 1,819(69.1%)、阳性 674(25.6%)、康复 142(5.4%),合计 2,635。
- 若做二分类并仅保留"检测结论明确"的样本,常用口径为 healthy vs positive_*(mild/moderate/asymp 三类合并);exposed(no_resp_illness_exposed,248)、resp_illness_not_identified(157)与 under_validation(81)通常被排除或单独处理。
- 阳性亚型内部分布严重不均:positive_asymp 仅 90 例,不足 healthy 的 1/15(2022-02-24 口径)。
- 按 2022-02-24 滚动版口径,阳性三亚型合计 681 例(426 + 165 + 90),与 healthy 1,433 的比约 1:2.1;两口径的阳性总数(674 vs 681)略有差异,源于版本冻结时点不同。
§4.3 关键统计
| 统计项 | 数值 | 口径/来源 |
|---|---|---|
| 受试者总数 | 2,635 | Scientific Data 2023 冻结版 |
| 每人音频条数上限 | 9 条 | 官方 9 类任务设计 |
| 音频总时长 | 约 65 小时 | 全量人工试听口径 |
| 采样率 | 48 kHz | 网页录音管线统一 |
| 单条咳嗽时长 | 多为 4-6 秒 | 社区论文实测分布 |
| 年龄跨度 | 15-90 岁 | 论文数据描述 |
| 采集会话时长 | 5-7 分钟 | 官方采集指引 |
| 日期文件夹数 | 41 个(2020-04-13 至 2021-09-30) | GitHub 仓库目录 |
§4.4 数据层级
受试者(participant,2,635)
└── 提交批次(collection date,41 个日期文件夹)
└── 声音类别(sound category,每人 ≤9 类)
└── 单条录音(48 kHz WAV,秒级至数十秒)
└── 音质标注(0/1/2,annotations/)
分组键为 participant id;同一受试者的全部音频必须落在同一划分侧(见坑点 1)。部分受试者在不同日期多次提交, participant id 相同即视为同一实体。
层级设计对 AI 工程的含义:以"受试者"为实验单位、以"声音类别"为特征族、以"单条录音"为样本单元的三层结构,天然支持条目级学习 + 受试者级聚合推理(如对同一人多条咳嗽取平均分数),这一聚合策略通常能再挤出几分 AUC,但必须在受试者级划分的前提下实现。
§4.5 缺失值与信息性缺失
| 字段组 | 缺失形态 | 处理建议 |
|---|---|---|
| age / gender / 地理字段 | 空字符串 | 建模时单独编码为 unknown,勿静默填充均值 |
| 症状布尔字段 | FALSE 同时代表"无此症状"与"未作答" | 敏感任务建议做症状完整率审计后再用 |
| 音频文件 | 某些受试者缺少个别类别(未录满 9 条) | 按声音类别建立可用性掩码,勿假设 9 类齐全 |
| under_validation 状态 | 标签本身未定 | 从二分类训练中剔除或做敏感性分析 |
| 音质标注 | 个别录音可能缺标注 | 缺标注样本默认按 quality=1 保守处理或剔除并记录 |
| 设备型号 | 字段不存在 | 不可推断,避免做设备条件分析 |
§5 划分与使用建议
§5.1 官方划分
官方不提供固定 train/test 文件;technical_validation/ 提供 BLSTM 的训练-评估流程,其划分在受试者级别进行。社区复现时普遍采用受试者级随机划分 + 交叉验证(如 Pinkas et al. 2021 的嵌套交叉验证)。官方网页工具的推理模型同样以库内数据训练,因此官方数字天然反映"库内分布"性能,使用者应主动补做外部验证。
无固定划分是双刃剑:好处是社区不会被单一划分锚定,坏处是跨论文数字可比性差(与坑点 2 的标签口径问题叠加)。建议任何新工作在报告内部指标的同时,附带一个"官方 technical_validation 复跑"结果作为锚点,方便后来者校准。
§5.2 社区惯例
- 二分类口径:healthy vs positive_*(合并 mild/moderate/asymp),剔除 exposed/resp_illness_not_identified/under_validation/recovered_full。
- 平衡策略:随机下采样阴性类至 1:1(如 JIFS 2023 论文构造 544/544 平衡集),或使用类权重。
- 咳嗽单模态是使用最广的子任务;呼吸音与计数语音常用于多模态融合。
- 划分比例:社区常见 70/15/15 三分或 5 折交叉验证;分组键一律为受试者。
§5.3 划分策略建议与泄漏风险
首要原则:按 participant id 分组划分。同一受试者的 9 条录音共享声道与设备特征,随机条目级划分会使同一人的咳嗽与呼吸分属训练/测试两侧,导致 AUC 虚高。建议流程:
- 以 participant id 为组键做 GroupShuffleSplit(或 GroupKFold)。
- 若研究时间效应,再叠加按日期分块的时间切分,避免未来信息回漏。
- 多次提交的同一参与者只允许出现在一个分组内。
- 报告结果时明确写出划分口径、样本聚合层级与是否剔除未定状态,否则与文献数字不可比。
划分口径声明模板(建议在论文或实验卡中逐项填写):
标签口径:healthy vs positive_*(mild+moderate+asymp 合并)
剔除状态:no_resp_illness_exposed / resp_illness_not_identified /
under_validation / recovered_full
分组键: participant id(GroupShuffleSplit,seed=42)
比例: 训练 80% / 测试 20%(受试者级)
指标: AUC / sensitivity / specificity / MCC(± 折间标准差)
外验: Sarcos / CoughVID(如有)
§5.4 多库联合使用建议
与 COVID-19 Sounds、CoughVID、Sarcos 等库联合训练时:各库标签口径不同(自报字段、检测手段、亚型定义),须先做标签对齐表;按"库"与"人"双层分组做 leave-one-dataset-out,报告每库作为外部测试时的性能;设备结构差异大的库对之间的迁移结果最有信息量,恰可用于检验模型是否学到设备无关特征。
§5.5 交叉验证建议
5 折 GroupKFold 是复现文献的基准配置;对每折内部再留出验证集做早停。类别不平衡下每折保持阳性比例近似(分层 + 分组的双层抽样),评估聚合使用折间 AUC 均值 ± 标准差。
嵌套交叉验证(Pinkas et al. 2021 口径)在外环估计泛化、内环调参,能避免"调参泄漏";代价是计算量倍增,建议在内环固定小规模搜索空间(学习率与正则两项)。若资源受限,至少把随机种子固定为 42 并公开划分索引,保证他人可精确复现你的折结构。
§5.6 外部验证建议
任何以 Coswara 内部指标为结论的工作,应至少在一个外部库(Sarcos、CoughVID、COVID-19 Sounds 等)上报告迁移性能。文献已证明内部 AUC 0.976 的模型跨库仅余 0.74-0.78(见坑点 6),外部验证不是可选项而是必要项。
外部验证的最低标准:测试集来源、采集设备结构与标签口径均与训练库不同;若做不到"完全独立",至少在时间维度上用晚于全部训练数据的日期批次做准外部测试(train on 2020 → test on 2021),这一变体利用日期文件夹结构即可零成本实现。
§6 AI 就绪指南
§6.0 云端快速启动
数据集托管于 GitHub,无需申请即可获取;体量较大,推荐在 Colab 或云主机上先拉取元数据,再按需解压所需日期文件夹:
git clone https://github.com/iiscleap/Coswara-Data.git
cd Coswara-Data
python extract_data.py # 将各日期文件夹的分卷 tar.gz.a* 合并解压
云端环境建议:Colab 挂载 Google Drive 存放 Extracted_data/(避免会话重置后重复下载);解压后仅按需读取目标声音类别的文件,全量加载 23,715 条上限的音频会拖慢 I/O。
§6.1 快速上手
# ============================================================
# 目录结构预期:
# Coswara-Data/
# ├── Extracted_data/ <- extract_data.py 的固定输出目录(勿改名)
# │ ├── 20200413/
# │ │ ├── <participant_id>/*.wav <- 按声音类别命名的音频
# │ │ └── ...
# │ └── ...
# └── combined_data.csv <- 一行一人的元数据主表
# data_root 拼接关系:data_root / date_folder / participant_id / <category>.wav
# 最小可用子集:combined_data.csv + 任一日期文件夹的咳嗽音频
# ============================================================
import pandas as pd
from pathlib import Path
DATA_ROOT = Path("Coswara-Data/Extracted_data")
meta = pd.read_csv("Coswara-Data/combined_data.csv")
# 仅保留标签结论明确的受试者,构造二分类标签
keep = {"healthy", "positive_mild", "positive_moderate", "positive_asymp"}
meta = meta[meta["covid_status"].isin(keep)].copy()
meta["label"] = (meta["covid_status"] != "healthy").astype(int)
print(meta["label"].value_counts()) # 检查类别比例
print(meta["covid_status"].value_counts()) # 检查 8 类分布是否与文档一致
预期输出校验:value_counts 应呈现 healthy 约 1,433、positive_mild 约 426、positive_moderate 约 165、positive_asymp 约 90 的量级(2022-02-26 终态口径);若明显偏离,说明 combined_data.csv 版本与预期不符,应先核对仓库 commit 再继续。
§6.2 数据获取
| 项目 | 内容 |
|---|---|
| 获取方式 | GitHub 直接 clone,无需注册或申请 |
| 地址 | github.com/iiscleap/Coswara-Data |
| 形式 | 按日期命名的分卷 tar.gz(.tar.gz.a*) |
| 解压 | python extract_data.py(自动合并分卷,输出到 Extracted_data/) |
| 体量 | 约 65 小时音频;预留约 2 倍磁盘空间 |
| 元数据预览 | combined_data.csv(列定义见 csv_labels_legend.json) |
| 许可 | CC BY 4.0(2023-05 起;早期为 CC BY-NC-ND 4.0) |
| 引用要求 | 使用成果须引用 Scientific Data 2023 论文(见 §9.2) |
# 只取元数据与标注,先做数据审计(无需下载全量音频)
git clone --depth 1 https://github.com/iiscleap/Coswara-Data.git
python - <<'PY'
import pandas as pd
df = pd.read_csv("Coswara-Data/combined_data.csv")
print(df["covid_status"].value_counts())
PY
获取环节常见问题:
| 问题 | 处理 |
|---|---|
| clone 后磁盘不足 | 先只 checkout 根目录 CSV(sparse checkout),审计后再拉全量 |
| extract_data.py 中途失败 | 检查分卷是否下载完整(.a* 序号连续),失败批次单独重拉 |
| 国内网络下载慢 | 用镜像或分批克隆日期文件夹 |
| 找不到音频 | 确认解压目录为 Extracted_data/(脚本固定输出名) |
§6.3 预处理全流程
流程:重采样 48 kHz → 16 kHz(对齐主流音频模型前端)→ 单声道化 → 波形 RMS 归一化 → 按类别定长截断/填充 → log-Mel 谱提取 → 按音质标签过滤。
# 预处理:重采样 + 归一化 + 定长 + log-Mel
import librosa
import numpy as np
TARGET_SR = 16000
N_FFT, HOP, N_MELS = 1024, 256, 64
def preprocess(path: str, category: str, quality: int | None = None) -> np.ndarray:
# 音质过滤:0=bad 的样本默认丢弃(可选保留用于噪声鲁棒实验)
if quality == 0:
return None
wav, _ = librosa.load(path, sr=TARGET_SR, mono=True)
wav = wav / (np.max(np.abs(wav)) + 1e-9) # RMS/峰值归一化
# 按类别定长:咳嗽约 5 s;呼吸约 8 s;元音取稳态中段 3 s;计数取前 10 s
seg = {"cough-heavy": 5, "cough-shallow": 5,
"breathing-deep": 8, "breathing-shallow": 8,
"counting-normal": 10, "counting-fast": 10}.get(category, 3)
n = seg * TARGET_SR
wav = librosa.util.fix_length(wav, size=n) if len(wav) <= n else wav[:n]
mel = librosa.feature.melspectrogram(y=wav, sr=TARGET_SR,
n_fft=N_FFT, hop_length=HOP, n_mels=N_MELS)
return np.log(mel + 1e-9) # (N_MELS, T) log-Mel
训练期增强(SpecAugment 风格)可在 batch 内动态施加:
# 训练专用增强:时间/频率掩蔽(保持标签语义安全)
import numpy as np
def spec_augment(mel: np.ndarray, n_time_masks=2, n_freq_masks=2,
width=16) -> np.ndarray:
out = mel.copy()
T = out.shape[1]
for _ in range(n_time_masks):
t0 = np.random.randint(0, max(1, T - width))
out[:, t0:t0 + width] = 0.0
for _ in range(n_freq_masks):
f0 = np.random.randint(0, max(1, out.shape[0] - width))
out[f0:f0 + width, :] = 0.0
return out
注意:增强只应作用于训练集;验证与测试集保持原始波形,否则评估失真。
按类别的定长策略汇总(与 §6.3 代码一致):
| 类别 | 目标长度 | 策略依据 |
|---|---|---|
| cough-heavy / cough-shallow | 5 s | 咳嗽事件多在 4-6 秒内完成 |
| breathing-deep / breathing-shallow | 8 s | 保留多个呼吸周期 |
| counting-normal / counting-fast | 10 s | 覆盖 1-20 完整计数 |
| 持续元音 | 3 s(取稳态中段) | 元音稳态段信息最稳定 |
§6.4 PyTorch DataLoader 完整代码
<details>
<summary>展开完整 Dataset + GroupShuffleSplit + DataLoader 代码(约 60 行)</summary>
# 按受试者分组划分,杜绝同人跨集泄漏;标签取自 combined_data.csv
import torch
from torch.utils.data import Dataset, DataLoader
from sklearn.model_selection import GroupShuffleSplit
class CoswaraDataset(Dataset):
"""每次返回 (log_mel, label, participant_id)。最小可用子集:咳嗽两类。"""
def __init__(self, df, audio_root, categories=("cough-shallow", "cough-heavy")):
self.records = []
for _, row in df.iterrows():
for cat in categories:
path = audio_root / str(row["date"]) / str(row["id"]) / f"{cat}.wav"
if path.exists():
self.records.append({"path": path, "label": row["label"],
"pid": row["id"], "cat": cat})
def __len__(self):
return len(self.records)
def __getitem__(self, idx):
rec = self.records[idx]
mel = preprocess(str(rec["path"]), rec["cat"]) # §6.3 的函数
tensor = torch.tensor(mel, dtype=torch.float32).unsqueeze(0) # (1, M, T)
return tensor, rec["label"], rec["pid"]
def group_split(meta, test_size=0.2, seed=42):
gss = GroupShuffleSplit(n_splits=1, test_size=test_size, random_state=seed)
tr_idx, te_idx = next(gss.split(meta, groups=meta["id"]))
return meta.iloc[tr_idx], meta.iloc[te_idx]
if __name__ == "__main__":
meta = pd.read_csv("Coswara-Data/combined_data.csv")
keep = {"healthy", "positive_mild", "positive_moderate", "positive_asymp"}
meta = meta[meta["covid_status"].isin(keep)].copy()
meta["label"] = (meta["covid_status"] != "healthy").astype(int)
meta = meta.rename(columns={"participant id": "id", "collection date": "date"})
train_df, test_df = group_split(meta)
train_set = CoswaraDataset(train_df, Path("Coswara-Data/Extracted_data"))
loader = DataLoader(train_set, batch_size=32, shuffle=True,
num_workers=4, pin_memory=True)
for mel, label, pid in loader:
break # 迭代检查形状与设备
</details>
扩展提示:若做多模态融合,可把症状布尔字段编码为向量并与音频嵌入拼接(参考 JIFS 2023 的 CNN_biLSTM + EfficientNetV2 + 症状 MLP 融合路线);症状向量与音频必须来自同一 participant id,且划分仍按人分组。
最小训练循环示例(接 §6.4 的 DataLoader,供冒烟测试):
<details>
<summary>展开最小训练循环代码(约 25 行)</summary>
# 冒烟测试用最小训练循环;正式实验请补充验证折与早停
import torch.nn as nn
model = nn.Sequential(
nn.Conv2d(1, 16, 3, padding=1), nn.ReLU(), nn.MaxPool2d(2),
nn.Conv2d(16, 32, 3, padding=1), nn.ReLU(), nn.AdaptiveAvgPool2d(1),
nn.Flatten(), nn.Linear(32, 2),
)
opt = torch.optim.AdamW(model.parameters(), lr=1e-3)
loss_fn = nn.CrossEntropyLoss()
for epoch in range(2):
for mel, label, _ in loader:
opt.zero_grad()
loss = loss_fn(model(mel), label)
loss.backward()
opt.step()
print(f"epoch {epoch} loss={loss.item():.4f}")
</details>
§6.5 坑点 8 个
坑点速查表(详述见下):
| 编号 | 分类 | 一句话要点 |
|---|---|---|
| 坑点 1 | 数据泄漏 | 同人 9 条录音必须同侧,按 participant id 分组划分 |
| 坑点 2 | 标签理解 | 8 类自报状态聚合口径决定结果可比性 |
| 坑点 3 | 偏倚陷阱 | 1:2.7 不平衡下 accuracy 无意义,用 AUC/MCC |
| 坑点 4 | 预处理陷阱 | quality=0 录音须过滤或做质量感知训练 |
| 坑点 5 | 偏倚陷阱 | 设备未记录,模型可能学到设备指纹 |
| 坑点 6 | 评估误用 | 内部 AUC 0.976 跨库只剩 0.74-0.78,必须外部验证 |
| 坑点 7 | 工程陷阱 | 分卷 tar.gz + 固定目录名,勿手动解压或改名 |
| 坑点 8 | 预处理陷阱 | 按类别差异化定长,勿统一窗口截断 |
⚠️ 坑点 1:条目级随机划分造成同人跨集泄漏(分类:数据泄漏)
问题:同一受试者最多贡献 9 条录音,且可能在不同日期多次提交。条目级随机划分会把同一人的咳嗽、呼吸分到训练与测试两侧,模型实际记住的是"这个人"而非"病理性声学特征"。
症状:测试 AUC 异常高(0.95+ 且方差极小);按人分组重划后性能大幅回落;模型对未见过的说话人几乎失效。
解决:
- 简单方法:以 participant id 为组键做 GroupShuffleSplit / GroupKFold(见 §6.4 代码),保证同人同侧。
- 进阶方法:对多次提交者先按 id 聚合再去重;叠加按日期的时间切分,报告"分组划分"与"时间切分"双口径。
- SOTA 方法:说话人无关(speaker-disjoint)评估 + 外部库迁移测试双保险;训练侧引入说话人对抗域适应,抑制说话人指纹。
参考:Scientific Data 2023 论文;Pinkas et al., 2021, Computers in Biology and Medicine。
⚠️ 坑点 2:8 类自报状态聚合口径不统一,跨论文数字不可比(分类:标签理解)
问题:covid_status 有 8 个取值(healthy、positive_mild/moderate/asymp、no_resp_illness_exposed、resp_illness_not_identified、recovered_full、under_validation)。不同论文对"阳性/阴性"聚合与剔除口径不同,同库 AUC 差异可达 0.1 以上。
症状:复现结果与论文对不上;把 recovered_full 计入阴性会稀释"当前感染"信号;under_validation 留在训练集引入标签噪声。
解决:
- 简单方法:固定口径——阳性 = positive_* 三类合并,阴性 = healthy,其余 5 类一律剔除,并在文中显式声明。
- 进阶方法:做敏感性分析,分别报告"剔除"与"纳入 exposed/unknown"两种口径,观察结论稳定性。
- SOTA 方法:将 8 类建模为层级标签(感染确定性 × 症状程度),用弱监督/部分标签学习吸收状态不确定性。
参考:JIFS 2023 论文(8 类分布表);GitHub README。
⚠️ 坑点 3:类别极不平衡导致准确率虚高(分类:偏倚陷阱)
问题:正式版阴性 1,819 vs 阳性 674(约 1:2.7);若细分到 positive_asymp 仅 90 例。以 accuracy 为主指标时,全预测阴性即可得到约 69% 的"分数"。
症状:模型 accuracy 不错但阳性召回率低;无症状亚型几乎学不到;混淆矩阵严重偏向多数类。
解决:
- 简单方法:主指标改用 AUC、balanced accuracy、MCC 与 sensitivity/specificity 对;训练用类权重(pos_weight)。
- 进阶方法:批级均衡采样器(balanced batch sampler)或对阴性类下采样;对 asymp 亚型做专门评估。
- SOTA 方法:Focal loss + 迁移学习预训练前端;对罕见亚型做重加权代价敏感学习并报告按亚型分解的召回率。
参考:JIFS 2023(下采样至 544/544 平衡集);Scientific Data 2023 论文。
⚠️ 坑点 4:忽略音质标注,bad 录音污染训练(分类:预处理陷阱)
问题:众包录音含静音、环境噪声、错误类别(如把说话当咳嗽)。官方已提供全量 0/1/2 音质标注,但社区常直接全量训练。
症状:模型在干净测试集上表现差;训练损失不稳定;检查发现部分"咳嗽"文件实为背景噪声。
解决:
- 简单方法:训练前过滤 quality=0 样本(annotations/ 目录)。
- 进阶方法:将音质作为协变量/元标签做质量感知加权,或按 0/1/2 分层评估性能-质量曲线。
- SOTA 方法:用音质标签监督噪声鲁棒表征(如以 quality 做辅助分类头),或结合 SpecAugment 做质量不变性训练。
参考:GitHub README(音质 0/1/2 说明);Scientific Data 2023 论文。
⚠️ 坑点 5:多设备录音差异被模型当作生物标记(分类:偏倚陷阱)
问题:录音来自参与者自有手机,机型麦克风频响、自动增益与编码管线各异,且官方未记录设备型号。模型可能学到"设备指纹"而非病理特征。
症状:跨设备/跨人群测试性能骤降;特征重要性集中在高频增益畸变带;换一台手机的录音分数系统性偏移。
解决:
- 简单方法:逐样本幅值归一化 + 频带级谱归一化;避免使用对频响敏感的原始幅度特征。
- 进阶方法:训练时加入随机 EQ/重采样/加噪等设备模拟增强;按地理分组检验分数漂移。
- SOTA 方法:域对抗训练(设备/地区为域标签)或设备不变表征学习;部署前做"分设备校准"。
参考:Scientific Data 2023 论文(公平性分析);GitHub README(采集指引)。
⚠️ 坑点 6:内部 AUC 高不代表跨库可用——泛化崩塌(分类:评估误用)
问题:文献已实测 Coswara 内部 AUC 0.976 的咳嗽分类器直接迁移到 Sarcos 库仅剩 0.742-0.779;仅做内部评测会严重高估临床可用性。
症状:换一个采集库(不同设备结构、人群、任务指令)后 AUC 掉 0.2 以上;跨库 ROC 形状畸变。
解决:
- 简单方法:固定一条外部验证集(如 Sarcos、CoughVID),在论文中同时报告内部/外部双 AUC。
- 进阶方法:特征选择吸收域差(Pinkas et al. 用 SFS 将跨库 AUC 从 0.779 提升到 0.938);库间联合训练 + 留库评估。
- SOTA 方法:leave-one-dataset-out 协议 + 域自适应/测试时适应;把"跨库稳定性"作为模型选型硬指标。
参考:Pinkas et al., 2021(跨库实验);arXiv 2104.02477 扩展版。
⚠️ 坑点 7:分卷压缩包与目录对齐的工程陷阱(分类:工程陷阱)
问题:仓库按日期文件夹存放分卷 tar.gz(.tar.gz.a*),需官方 extract_data.py 合并解压;解压目录 Extracted_data/ 名字固定,且元数据主表 combined_data.csv 的列名以 csv_labels_legend.json 定义,直接按猜测列名 join 会静默出错。
症状:手动 gunzip 半途报错"unexpected end of file";脚本找不到 Extracted_data/;元数据 join 后样本数异常减少。
解决:
- 简单方法:clone 后运行
python extract_data.py,不要手动解压单个分卷;保持 Extracted_data/ 原名。- 进阶方法:先以 combined_data.csv 做完整性审计(每人录音数、状态分布),建立"日期/ID/类别"三键索引再批量加载。
- SOTA 方法:写幂等的 manifest 校验脚本(对齐 audio 存在性与 CSV 行),CI 中校验数据版本与文件哈希。
参考:extract_data.py 官方脚本;社区处理仓库的布局约定。
⚠️ 坑点 8:录音时长不一,固定窗切分破坏任务结构(分类:预处理陷阱)
问题:咳嗽多为 4-6 秒,呼吸/元音/计数更长且结构不同;统一固定窗口切分会截断呼吸周期或计数序列,破坏类别特异性时序结构。
症状:呼吸类性能显著低于咳嗽类;计数语音被切成无意义片段;padding 占比过高拖慢训练。
解决:
- 简单方法:按类别设定不同目标长度(咳嗽约 5 s、呼吸约 8 s、计数约 10 s、元音取稳态中段),见 §6.3 代码。
- 进阶方法:对咳嗽做基于能量的咳嗽事件检测后以事件为单元建模;对呼吸做周期对齐切分。
- SOTA 方法:变长序列模型(BLSTM + attention,官方基线即此路线)或波形级 patch 化骨干(AST/BEATs 类),配合 masking 处理 padding。
参考:Scientific Data 2023 论文(BLSTM 基线);arXiv 2104.02477(分段实验)。
§6.6 数据增强
| 增强手段 | 安全性 | 说明 |
|---|---|---|
| 随机增益/幅值抖动 | ✅ | 模拟设备增益差异 |
| 加性环境噪声(MUSAN 等) | ✅ | 提升真实部署鲁棒性 |
| SpecAugment(时间/频率掩蔽) | ✅ | 音频分类标准增强 |
| 随机重采样(±5% 速度) | ✅ | 小幅模拟录音速率差异 |
| 按人混合(同库跨人拼接) | ❌ | 破坏标签与说话人结构 |
| 反转频谱/极强压缩变换 | ❌ | 破坏呼吸/咳嗽生理声学结构 |
| 用生成模型合成"阳性咳嗽"扩充 | ⚠️ | 仅在有明确验证协议时作为研究手段 |
| 跨人说话人混响/房间脉冲响应叠加 | ✅ | 模拟环境差异,保留标签语义 |
| 时间反转、极性翻转 | ❌ | 破坏呼吸相序与咳嗽包络的物理意义 |
§6.7 模型推荐
| 模型路线 | 适用任务 | 文献表现 | 建议 |
|---|---|---|---|
| MFCC + ResNet50(迁移学习) | 咳嗽二分类 | AUC 0.976-0.982 | 内部基准首选 |
| BLSTM + attention(官方基线) | 9 类变长序列 | 官方验证与公平性分析载体 | 与官方口径对齐 |
| CNN_biLSTM + EfficientNetV2 + 症状 MLP 融合 | 多模态融合 | 平衡集上有效(JIFS 2023) | 音频+症状联合建模 |
| SVM + bottleneck features | 呼吸音 | AUC 0.942 | 轻量基线 |
| 预训练音频骨干(AST/BEATs/HuBERT 微调) | 全任务 | 社区趋势 | 数据量小时注意过拟合 |
选型决策顺序建议:先跑 MFCC + ResNet50 对齐文献口径,再以 BLSTM(变长)验证时序收益,最后才上预训练音频骨干;每一步都固定 §5.3 划分口径,保证增量可归因。
§6.8 硬件需求
| 阶段 | 最低配置 | 推荐配置 |
|---|---|---|
| 数据审计(仅 CSV) | 任意笔记本 | 4 GB 内存 |
| 特征提取(全库 log-Mel) | 8 GB 内存、多核 CPU | 16 GB 内存 + 缓存盘 |
| 模型训练( cough 单模态) | 1 张 8 GB GPU | 1 张 24 GB GPU |
| 多模态/预训练骨干微调 | 1 张 16 GB GPU | 2 张 24 GB GPU 或云 TPU |
体量说明:全库 23,715 条上限的音频若全部缓存为 log-Mel(64 频带),特征缓存约在个位数 GB 量级,普通云主机即可承载;原始 WAV 解压副本是磁盘占用的主要来源。
§6.9 评估指标代码
# 不平衡二分类主指标:AUC / sensitivity / specificity / MCC
import numpy as np
from sklearn.metrics import roc_auc_score, confusion_matrix
def evaluate(y_true, y_score, thr=0.5):
y_pred = (np.asarray(y_score) >= thr).astype(int)
auc = roc_auc_score(y_true, y_score)
tn, fp, fn, tp = confusion_matrix(y_true, y_pred).ravel()
sens = tp / (tp + fn + 1e-9)
spec = tn / (tn + fp + 1e-9)
mcc_denom = np.sqrt((tp+fp)*(tp+fn)*(tn+fp)*(tn+fn))
mcc = ((tp*tn - fp*fn) / mcc_denom) if mcc_denom > 0 else 0.0
return {"AUC": round(auc, 3), "sensitivity": round(sens, 3),
"specificity": round(spec, 3), "MCC": round(mcc, 3)}
子群体公平性评估(复现论文五维度分析的骨架):
# 按元数据列(gender/地理/接种状态等)分组报告 AUC 差距
import pandas as pd
def subgroup_auc(df, y_true, y_score, group_col):
out = {}
df = df.assign(y=y_true, s=y_score)
for g, sub in df.groupby(group_col):
if sub["y"].nunique() == 2:
out[str(g)] = round(roc_auc_score(sub["y"], sub["s"]), 3)
return out
ROC 曲线绘制(复现文献图式):
# 折间平均 ROC:与 Pinkas et al. 2021 图 9 同型
import matplotlib.pyplot as plt
from sklearn.metrics import roc_curve
def plot_roc_curves(curves, names):
plt.figure(figsize=(6, 5))
for fpr, tpr, auc in curves:
plt.plot(fpr, tpr, label=f"AUC = {auc:.3f}")
plt.plot([0, 1], [0, 1], "k--", linewidth=0.8)
plt.xlabel("False Positive Rate")
plt.ylabel("True Positive Rate")
plt.legend(names)
return plt
§6.10 MLOps 笔记
- 数据版本:锁定 GitHub commit(滚动发布已终止于 2022-02),并在实验记录中登记 commit hash 与 combined_data.csv 行数。
- 划分快照:将 GroupShuffleSplit 的随机种子与索引持久化,保证多实验可比。
- 质量门禁:CI 中固定运行元数据审计(8 类分布、音质分布、每人录音数),防止数据替换后口径漂移。
- 监控漂移:上线类应用需监控输入音频的采样率/时长/静音比分布,与训练分布对比触发告警。
- 合规留痕:CC BY 4.0 允许商用,但产品化时保留数据来源与论文引用声明。
- 推理端一致性:线上录音管线需复刻采集规范(48 kHz、口距约 10 cm、单声道),训练/推理预处理不一致是部署期最常见的性能退化来源。
- 模型卡披露:发布衍生模型时,按 §7.5 五个维度报告子群体性能,并明确"筛查研究用途、非诊断"声明。
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 渠道偏倚 | 医院渠道与纯众包提交在录音条件与人群构成上不同 | 中 | 按来源渠道分层评估 |
| 自报标签偏倚 | 阳性/阴性为参与者自报,无统一 RT-PCR 复核 | 高 | 敏感性分析;剔除 under_validation;未来做前瞻验证 |
| 类别不平衡 | 1,819 阴性 vs 674 阳性;asymp 仅 90 | 高 | 类权重/重采样;用 AUC/MCC 而非 accuracy |
| 地理偏倚 | 人群以印度为主 | 高 | 外部库验证;按地理分组报告 |
| 设备偏倚 | 消费级手机机型未记录 | 中 | 设备模拟增强;域对抗 |
| 时间偏倚 | 覆盖多变异株期与接种前后,症状谱变化 | 中 | 按录制日期分层评估(论文已证实性能随日期漂移) |
| 语言偏倚 | 计数语音受口音/语言能力影响 | 中 | 论文证实语言能力影响性能;多语种语音任务需注意 |
| 亚型稀疏偏倚 | positive_asymp 仅 90 例,少数子群体评估不稳定 | 中 | 置信区间报告;避免对稀疏亚型下强结论 |
§7.2 标注质量
状态与症状为自报,属"标签噪声已知来源";音质标注为团队统一界面人工完成,覆盖全量 65 小时,但未公布标注者间一致性。二者叠加意味着:模型的标签上限是"自报感染 + 人工可听质量",而非临床确认。
从工程角度给三条可操作结论:其一,把音质标签当作"免费的噪声协变量",任何端到端实验都应报告 quality 分层指标;其二,症状布尔字段的"未作答与无症状不可分"问题应在预处理阶段显式约定并写入数据卡;其三,自报标签的噪声并非纯害——它模拟了部署时线上自报输入的真实噪声结构,在"以真实部署为终局"的研究里,这种噪声与评测目标是匹配的。
§7.3 泛化性
| 场景 | 失效风险 | 证据 |
|---|---|---|
| 跨数据集(Coswara→Sarcos) | 高:AUC 0.976 → 0.742-0.779 | Pinkas et al. 2021 |
| 跨地理(印度内→印度外) | 中-高:性能显著不同 | Scientific Data 2023 公平性分析 |
| 跨录制日期(变异株/接种状态) | 中:决策边界漂移 | Scientific Data 2023(接种者症状轻致性能差异) |
| 跨性别 | 中:子群体性能差异 | Scientific Data 2023 |
| 跨语言能力(计数任务) | 中:分数分群 | Scientific Data 2023 |
表中的风险分级给出的是"证据支持的失效方向",而非精确的失效幅度——子群体内样本量不同(如印度外样本远少于印度内),差异的置信区间宽窄不一。使用者在设计评测时应按自己的部署子群体重新切分,而不是直接套用论文的分组粒度。
§7.4 伦理
采集经网页知情同意,不收集个人身份信息,存储匿名化;医院渠道部分经合作机构协调。数据不含面部影像与姓名。使用者仍应避免从音频反推个人身份(声纹再识别风险),发布衍生模型时不得宣称临床诊断能力——官方明确要求其筛查工具需经临床验证与监管审批后方可部署。
衍生伦理义务提示:声音属于生物特征,即使 CC BY 4.0 允许再分发,基于本库训练的声纹相关能力(说话人识别、身份聚类)也不应发布;面向公共卫生的声音筛查研究应在论文中说明"音频不可用于身份识别"的使用边界。
§7.5 公平性
官方 BLSTM 分析覆盖性别、地理位置、录制日期、语言能力与疫苗接种状态五个维度,结论:各维度均存在显著性能差异;接种者症状更轻,导致其所在子群体决策边界偏移。这是公开呼吸音库中少见的系统性公平性披露,建议任何复现工作按同样五维度报告子群体指标。
§7.6 数据漂移
录制期跨 22 个月,变异株更替与疫苗接种推进使"阳性"的人群构成(症状谱、年龄、检测可得性)随时间变化;日期文件夹结构天然支持按月切片做漂移监控。社区批评性研究(arXiv 2212.08570)进一步指出,声学模型相对简单症状问卷并无稳定增益——提示部署场景下症状先验本身就是强基线,漂移监控需包含"症状-音频信息增量"指标。
实操建议:以 2020 年批次为参照分布,对后续每个季度切片计算特征均值/方差漂移与标签先验变化;若某切片阳性先验相对训练期偏移超过一倍,应触发分数阈值重校准。变异株更替期的切片(如 2021-04 前后)是观察分布突变最敏感的窗口。
§7.7 DAIMS 24 项评估
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式 | ✅ | combined_data.csv 一行一人,列语义由 csv_labels_legend.json 定义 |
| 2 | 唯一标识 | ✅ | participant id 唯一,音频文件夹与之对齐 |
| 3 | 特殊字符处理 | ✅ | CSV/JSON 均为标准编码,字段为 ASCII 语义值 |
| 4 | 重复行 | ⚠️ | 同一受试者多次提交会形成多条记录,需按 id 聚合去重 |
| 5 | 缺失编码 | ✅ | 空值即缺失,无魔术值 |
| 6 | 标签标识清晰 | ⚠️ | 8 类状态语义清晰但需自行聚合为任务标签 |
| 7 | 罕见类分组 | ⚠️ | positive_asymp 仅 90 例,评估需分层报告 |
| 8 | 偏倚评估 | ✅ | 官方论文自带五维度公平性分析 |
| 9 | 数据字典 | ✅ | csv_labels_legend.json 提供列级定义 |
| 10 | 信息性缺失解释 | ⚠️ | 症状布尔字段的 FALSE 混淆"无症状"与"未作答",需自行约定 |
| 11 | 设备记录 | ❌ | 未记录录音设备型号,设备异构无法显式建模 |
| 12 | 共线性 | ✅ | 字段间无明显冗余编码 |
| 13 | 编码映射 | ✅ | 8 类状态与音质三档均有官方枚举说明 |
| 14 | 时间戳处理 | ⚠️ | 仅有日期(无时刻/时区),时间分析限于天级 |
| 15 | 划分建议 | ✅ | technical_validation 与论文明确受试者级评估思路 |
| 16 | 泄漏讨论 | ✅ | 按人分组是社区公认要求,论文口径可复现 |
| 17 | 标签分布 | ✅ | 8 类与三分口径均有官方数字 |
| 18 | 测量偏倚 | ⚠️ | 自报状态与自报症状的测量误差未量化 |
| 19 | 外部验证建议 | ✅ | 论文与社区均提供外部库迁移实验范式 |
| 20 | 版本记录 | ✅ | 日期文件夹 + release v1.0.0 + 论文冻结版三层可溯 |
| 21 | 预处理脚本 | ✅ | extract_data.py 与 technical_validation/ 官方提供 |
| 22 | 合规要求 | ✅ | CC BY 4.0,匿名化,引用要求明确 |
| 23 | 多模态对齐 | ✅ | 音频与症状/人口学元数据按 participant id 对齐 |
| 24 | 去标识化 | ✅ | 不收集 PII,存储匿名化(官方声明) |
DAIMS 评分:20 / 24
评分解读:结构性资产(字典、溯源、官方脚本、版本记录、公平性披露)达到公开数据集的上游水平;扣分集中在三处无法由发布方单方面修复的固有短板——设备元数据缺失(❌)、自报标签的测量误差(⚠️)与状态聚合口径需要使用者自行约定(⚠️)。
对你意味着什么:可以直接基于官方结构启动分组划分与基线复现,不必怀疑数据管线本身;但必须把"剔除未定状态 + 类权重 + 外部验证"写进默认实验协议,并把结论限定为"筛查研究"而非"诊断"。若你的应用强依赖设备鲁棒性(如跨机型部署),需自行补建设备模拟增强或混入多设备数据,因为原库无法支持设备维度的显式分析。
与同类数据集的 DAIMS 横向印象(定性):相比无字典、无标注、无基线的"裸音频"发布,Coswara 的结构完备度处于开放医疗音频库的第一梯队;相比医疗级受控采集库(如听诊音库),其短板在测量控制而非管理规范——这决定了它适合"真实部署条件研究"而非"病理声学机理研究"。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| Sarcos cough dataset | 独立采集 | Coswara 训练 → Sarcos 测试(咳嗽二分类) | AUC 0.742-0.779(SFS 特征选择后 0.938) | 内部 0.976 → 外部约 0.75 | 域差主要来自设备与人群;特征选择可部分弥补 |
| Coswara 子群体(印度外) | Coswara 自身 | BLSTM 按地理分组 | 分组间显著差异 | 相对全体下降 | 地理是首要混杂维度 |
| 症状问卷对照 | 独立研究 | 音频分类器 vs 症状 checker | 无稳定增益 | — | 声学增益在严格对照下未复现 |
矩阵刻意保留了"负面结果"行:批判性研究(arXiv 2212.08570)与跨库实验共同表明,Coswara 上训练的声学模型在受控对照下并不稳定优于简单基线。引用外部验证数字时,务必注明其划分与聚合口径(见 §8.3),否则矩阵内部各行之间也不可比。
§8 基准性能与生态
§8.1 排行榜(咳嗽/呼吸/语音 COVID-19 检测)
以下数字来自不同划分口径、不同标签聚合与不同模态,不可直接横向比较;仅用于量级参考与选型起点。
三条不可比原因的展开:其一,标签口径不同(部分工作把 exposed 计入阴性);其二,划分层级不同(部分工作未按人分组,分数含泄漏成分);其三,模态与聚合方式不同(单条咳嗽 vs 每人多条取均值)。因此本表的用途是"了解每条技术路线的量级与机制",逐名次比较没有统计意义。
| 排名 | 模型 | 模态/口径 | 性能 | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|---|
| 1 | ResNet50 + TL | 咳嗽,社区划分 | AUC 0.982 | 2021 | MFCC + ImageNet 迁移 | Pinkas et al., 2021, arXiv:2104.02477 | 未公开 |
| 2 | ResNet50 + MFCC | 咳嗽,嵌套交叉验证 | AUC 0.976(acc 95.3%、sens 93%、spec 98%) | 2021 | 39 维 MFCC + 速度/加速度差分 | Pinkas et al., 2021, Computers in Biology and Medicine | 论文附表 |
| 3 | SVM + BNF | 呼吸音 | AUC 0.942 | 2021 | 瓶颈特征 | Pinkas et al., 2021, arXiv:2104.02477 | 未公开 |
| 4 | CNN | 咳嗽,嵌套交叉验证 | AUC 0.953 | 2021 | 时频 CNN | Pinkas et al., 2021, Computers in Biology and Medicine | 论文附表 |
| 5 | LSTM | 咳嗽,嵌套交叉验证 | AUC 0.942 | 2021 | 序列建模 | Pinkas et al., 2021, Computers in Biology and Medicine | 论文附表 |
| 6 | ResNet50 + TL | 计数语音(常速) | AUC 0.893 | 2021 | 迁移学习 | Pinkas et al., 2021, arXiv:2104.02477 | 未公开 |
| 7 | MLP | 咳嗽,嵌套交叉验证 | AUC 0.897 | 2021 | 多层感知机 | Pinkas et al., 2021, Computers in Biology and Medicine | 论文附表 |
| 8 | SVM | 咳嗽,嵌套交叉验证 | AUC 0.815 | 2021 | 手工特征 + 核方法 | Pinkas et al., 2021, Computers in Biology and Medicine | 论文附表 |
| 9 | LR | 咳嗽,嵌套交叉验证 | AUC 0.736 | 2021 | 逻辑回归基线 | Pinkas et al., 2021, Computers in Biology and Medicine | 论文附表 |
| — | BLSTM(官方基线) | 9 类 + 症状 | 用于公平性分析(未以单一 AUC 排名) | 2023 | 双向 LSTM 网页工具 | Bhattacharya et al., 2023, Scientific Data. DOI 10.1038/s41597-023-02266-0 | technical_validation/ |
§8.2 SOTA 总结与选型建议
咳嗽模态文献充分,MFCC + 预训练 CNN(ResNet50 系)是稳定的高分路线;呼吸音以瓶颈特征 + SVM 等轻量模型表现良好;语音(计数)信号最弱,更适合做多模态融合的辅助分支。复现时优先对齐 Pinkas et al. 2021 的嵌套交叉验证口径,并以官方 BLSTM 与 technical_validation 作为协议锚点。
从分数梯度看,深模型(ResNet50/CNN/LSTM,AUC 0.94-0.98)相对浅模型(SVM/LR,0.74-0.82)的优势主要来自对时频结构的高容量建模;但跨库实验表明这部分容量也更容易吸收库特异性线索,因此"高分"与"可迁移"必须分开报告。工程上建议以 0.94 级的 CNN 基线为内部对照,任何新增复杂度都应同时在跨库设定下验证增量。
§8.3 评测协议
统一建议:受试者级 GroupKFold(5 折)+ 标签口径"healthy vs positive_*"+ 剔除未定状态 + 报告 AUC/sensitivity/specificity/MCC ± 折间标准差 + 至少一个外部库迁移结果。任何缺少上述要素的报告都应注明口径差异。
提交/复现前检查清单:
- 划分是否按 participant id 分组(含多次提交者去重)。
- 标签聚合口径是否显式声明(8 类 → 二分类的映射)。
- quality=0 的录音是否已过滤(或说明保留理由)。
- 主指标是否为 AUC/MCC 而非 accuracy。
- 是否报告了至少一个外部库或子群体分解。
- 声音类别与文件名映射是否与解压目录一致。
§8.4 相关数据集
| 数据集 | 机构 | 模态 | 与 Coswara 关系 |
|---|---|---|---|
| COVID-19 Sounds | University of Cambridge | 咳嗽/呼吸/语音 + 肺活量任务 | 常用外部验证库;地理分布更广 |
| CoughVID | 乌拉圭团队 | 咳嗽 | 咳嗽子任务外部验证 |
| Cough Against COVID | Wadhwani AI 等 | 咳嗽 | 同期印度人群库 |
| Sarcos | 独立团队 | 咳嗽 | 文献已用作迁移目标(见坑点 6) |
| ICBHI 2017 | 研究联盟 | 听诊肺音 | 非 COVID 的呼吸音任务补充 |
上表数据集均公开可取,与 Coswara 组合使用时的核心价值是构造"跨域矩阵":以 Coswara 为训练域,其余库轮流为测试域,即可低成本搭建 leave-one-dataset-out 协议;反向组合(他库训练、Coswara 测试)则可检验新模型在众包条件下的表现。
§8.5 关键论文 Top 5
- Bhattacharya, D., Sharma, N. K., Dutta, D., Chetupalli, S. R., Mote, P., Ganapathy, S., et al., 2023, Scientific Data(DOI 10.1038/s41597-023-02266-0) — 数据集正式描述论文:2,635 人全量音质人工标注 + BLSTM 偏倚公平性分析。
- Sharma, N., Krishnan, P., Kumar, R., Ramoji, S., Chetupalli, S. R., Ghosh, P. K., Ganapathy, S., 2020, arXiv:2005.10548 — 早期数据库描述与首批评测,确立 9 类发声任务设计。
- Pinkas, G. et al., 2021, Computers in Biology and Medicine — 七种分类器系统对比 + Coswara→Sarcos 跨库迁移实验,确立泛化性警示。
- arXiv:2104.02477(2021) — 咳嗽/呼吸/语音三模态分别评测的最完整社区基准之一。
- arXiv:2212.08570(2022) — 批判性对照研究:音频分类器相对简单症状问卷未显示稳定增益。
- JIFS 2023(DOI 10.3233/JIFS-222863) — CNN_biLSTM + EfficientNetV2 + 症状 MLP 三路融合的多模态路线与 8 类状态分布实录。
- arXiv:2009.08790(2020) — Cough Against COVID:咳嗽声学证据的同期平行研究,可与 Coswara 交叉验证。
- arXiv:2004.01275(2020) — AI4COVID-19:咳嗽远程诊断 App 路线的早期代表作,与 Coswara 互补。
§8.6 社区活跃度
GitHub 仓库(iiscleap/Coswara-Data)自 2020 年 4 月持续维护:截至 2026-09 检索,存在 2 个开放 issue、13 个已关闭 issue、3 个开放 PR,1 个正式 release(v1.0.0,2022-10-12);仓库在 RepositoryStats 的 stargazer 排名中位于第 199,115 位(前 69 百分位)。官方另维护标注/实验仓库 iiscleap/Coswara-Exp 与低频更新博客。正式论文引用 53+(Scopus,截至 2026-09),社区衍生工作覆盖分类、公平性、多模态与批判性复现。
活跃度解读:issue 总量不大且数据采集已收尾,仓库处于"冻结维护"状态——仍可提交 issue 获得团队回应(closed/total 比例高),但不应期待数据持续更新。依赖型项目应以 2022-02-26 的 combined_data.csv 终态为稳定依赖源,把上游更新风险视为零。
§8.7 生态快照
| 资源 | 类型 | 链接 | Star/规模(截至 2026-09) | 推荐理由 |
|---|---|---|---|---|
| Coswara-Data | 官方数据仓库 | GitHub | 2 open/13 closed issues | 数据 + 解压脚本 + technical_validation |
| Coswara 网页应用 | 官方在线工具 | coswara.iisc.ac.in | — | 体验采集协议与筛查 demo |
| Coswara-Exp | 官方标注/分析仓库 | GitHub | — | 标注流程细节 |
| Scientific Data 论文 | 正式出版 | DOI | 引用 53+(Scopus) | 唯一权威引用对象 |
| arXiv:2005.10548 | 预印本 | arXiv | — | 早期口径与任务设计原始出处 |
| MSc 分析仓库 | 社区复现 | GitHub | 单 notebook 全流程 | 端到端处理与分组划分示例 |
§9 相关资源与引用
§9.1 官方资源
- 官方主页与采集入口:coswara.iisc.ac.in
- 数据仓库(含 extract_data.py、annotations/、technical_validation/):github.com/iiscleap/Coswara-Data
- 标注与实验仓库:github.com/iiscleap/Coswara-Exp
- 元数据列定义:仓库根目录 csv_labels_legend.json;全库元数据:combined_data.csv
- 官方筛查 demo:在网页应用完成录音后即时返回 COVID-19 概率分数(BLSTM 推理)
- 官方博客:低频更新项目进展与数据发布说明(入口见 GitHub README)
- 历史引用口径:arXiv 预印本 2005.10548(2020 版任务设计与首批评测)
社区资源:
- 端到端处理示例(Colab notebook、分组划分实现):aravindreddy5268 的分析仓库
- 仓库统计与活跃度面板:repositorystats.com/iiscleap/coswara-data
§9.2 BibTeX 引用
@article{Bhattacharya2023coswara,
author = {Bhattacharya, Debarpan and Sharma, Neeraj Kumar and Dutta, Debottam
and Chetupalli, Srikanth Raj and Mote, Pravin and Ganapathy, Sriram
and Chandrakiran, C. and Nori, Sahiti and Suhail, K. K.
and Gonuguntla, Sadhana and Alagesan, Murali},
title = {Coswara: A respiratory sounds and symptoms dataset for remote
screening of SARS-CoV-2 infection},
journal = {Scientific Data},
volume = {10},
pages = {397},
year = {2023},
doi = {10.1038/s41597-023-02266-0}
}
@article{Sharma2020coswara,
author = {Sharma, Neeraj and Krishnan, Prashant and Kumar, Rohit
and Ramoji, Shreyas and Chetupalli, Srikanth Raj and Nirmala, R.
and Ghosh, Prasanta Kumar and Ganapathy, Sriram},
title = {Coswara -- A Database of Breathing, Cough, and Voice Sounds
for COVID-19 Diagnosis},
journal = {arXiv preprint arXiv:2005.10548},
year = {2020}
}
@article{Pinkas2021cough,
author = {Pinkas, Gideon and Karny, Pinchas and Malicky, Alexander
and Keidar, Sagi and Yochlis, Ron and Mazar, Aharon and Taam, Mahmoud},
title = {COVID-19 cough classification using machine learning
and global smartphone recordings},
journal = {Computers in Biology and Medicine},
volume = {135},
year = {2021}
}
@article{Pinkas2021extended,
author = {Pinkas, Gideon and others},
title = {COVID-19 detection in cough, breath and speech using machine
learning and global smartphone recordings},
journal = {arXiv preprint arXiv:2104.02477},
year = {2021}
}
§9.3 引用指南
使用本数据集时:正文引用 Scientific Data 2023 论文(首选)与 arXiv 预印本(历史口径);如沿用社区划分协议,须同时引用对应论文并声明自己的聚合口径;再分发音频或衍生数据时保留 CC BY 4.0 署名要求,并附官方仓库链接。
常见问题:
| 问题 | 答案 |
|---|---|
| 是否需要申请或注册? | 不需要,GitHub 直接 clone 即可 |
| 能否商用? | 可以,当前许可为 CC BY 4.0(保留署名) |
| 有没有官方 train/test 划分? | 无固定划分文件;technical_validation/ 提供基线流程,划分按受试者级自建 |
| 数据还会更新吗? | 滚动采集已终止(最后批次 2021-09-30),当前为冻结研究版 |
| 元数据列名是什么? | 以仓库 csv_labels_legend.json 为准,勿按猜测列名编码 |
§10 AI 使用声明卡
§10.1 AI 模型列表
| 模型 | 用途 |
|---|---|
| 大语言模型(CodeBuddy,fast-model 驱动) | 本词条初稿撰写、结构组织与代码示例生成 |
| 大语言模型(CodeBuddy) | 检索结果摘要与事实清单整理辅助 |
说明:AI 模型仅参与本词条文本生产,不涉及数据集本身的任何标注、清洗或模型训练环节;数据集的音质标注与 BLSTM 基线均由 IISc 团队人工/官方完成。
§10.2 AI 参与范围
AI 用于资料检索汇总、初稿撰写与格式规范化;所有关键数字均回链检索来源核验;章节结构、医学编码映射与坑点操作建议经编辑部交叉审核。AI 未访问数据集原始音频文件,未运行数据实验。
| 工作项 | 执行方 | 说明 |
|---|---|---|
| 检索与事实清单 | AI + 人工抽检 | FACTS.md 纯 bullet 清单,每条带来源 URL |
| 章节初稿 | AI | 按写作宪法结构与行数预算生成 |
| 数字核验 | 人工 | 逐条回链比对(2,635/1,819/674/142/65 小时/53+ 等全部命中来源) |
| 医学编码 | AI 起草 + 人工复核 | ICD-11 与 SNOMED CT 标准码 |
| 代码示例 | AI 起草 | 逻辑走查,未在真实数据上运行 |
| 最终发布决定 | 人工 | 编辑部签发 |
§10.3 输入来源列表
- Bhattacharya, D. et al., 2023, Scientific Data. DOI 10.1038/s41597-023-02266-0
- Bhattacharya, D. et al., 2023, Scientific Data(Europe PMC 收录页). PMID 37349364
- Coswara-Data GitHub README(master,CC BY 4.0 版). https://github.com/iiscleap/Coswara-Data
- Coswara-Data GitHub README(2021 历史版本,CC BY-NC-ND 4.0 口径). https://github.com/iiscleap/Coswara-Data/blob/ca4584d851c2841a456ceed135716a4acbd7d607/README.md
- Sharma, N. et al., 2020, arXiv:2005.10548(ar5iv 渲染版)
- Pinkas, G. et al., 2021, Computers in Biology and Medicine(PMC8213969)
- Pinkas, G. et al., 2021, arXiv:2104.02477 v4(White Rose eprints 收录版)
- JIFS 2023 多模态论文(DOI 10.3233/JIFS-222863,含 2022-02-24 版 8 类分布表)
- RepositoryStats 仓库统计页(issues/PR/release 数据,2026-09 检索)
- OUCI 论文计量页(Scopus 引用 53,2026-09 检索)
- arXiv:2212.08570(音频分类器 vs 症状问卷批判研究)
- Springer Link 论文全文页(公平性与 Impact 章节)
- 社区端到端处理仓库(目录布局与 extract_data.py 约定)
- arXiv:2009.08790(Cough Against COVID,同期平行研究)
- arXiv:2004.01275(AI4COVID-19,App 路线早期代表作)
- 千方医数集写作宪法与内部规范(结构与排版约束)
§10.4 人工校验记录
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| §1-§3 事实与数字 | 千方病案医学编辑部 | 逐条回链检索来源比对 | ✅ 已通过 |
| §2 医学编码映射 | 千方病案医学编辑部 | ICD-11/SNOMED CT 标准码复核 | ✅ 已通过 |
| §4-§5 数据结构与划分 | 千方病案医学编辑部 | 与官方 README/csv_labels_legend.json 比对 | ✅ 已通过 |
| §6 代码与坑点 | 千方病案医学编辑部 | 代码逻辑走查 + 官方脚本核对 | ✅ 已通过 |
| §7 DAIMS 与公平性 | 千方病案医学编辑部 | 对照论文偏倚分析章节 | ✅ 已通过 |
| §8-§10 引用与声明 | 千方病案医学编辑部 | 引用逐条核验 | ✅ 已通过 |
§10.5 AI 生成章节标注
全部章节由 AI 辅助生成初稿;§1.0/§2.2/§2.5/§7.4 的医学叙述与 §6.5 坑点的操作建议为 AI 起草后经人工复核修订。
§10.6 最后人工审核日期
2026-09-05(与 §0.3 审核日期一致)。
页面状态:published(全部内容已完成审核并发布)
§C 结构化数据(JSON-LD)
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- coughvid — 共享标签:生理信号 / 语音信号 / COVID-19
- mdvr-kcl — 共享标签:生理信号 / 公共卫生与流行病学 / 语音信号
- covid-19-sounds — 共享标签:生理信号 / 语音信号 / COVID-19
- hls-cmds — 共享标签:生理信号 / 语音信号
- physionet-cinc-2016 — 共享标签:生理信号 / 语音信号
- torgo — 共享标签:生理信号 / 语音信号
- circor-digiscope — 共享标签:生理信号 / 语音信号
- bridge2ai-voice — 共享标签:生理信号 / 语音信号
- midrc-ricord — 共享标签:公共卫生与流行病学 / COVID-19
- litcovid — 共享标签:公共卫生与流行病学 / COVID-19
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。
