CoughSense:通过Whisper编码器微调与双编码器交叉注意力融合及平衡对比学习实现五类呼吸系统疾病分类
摘要
本文介绍了CoughSense系统,该系统利用经过微调的Whisper编码器(采用主动帧池化)将咳嗽录音分为五类呼吸系统疾病,实现了82.3%的平衡准确率,并已部署为实时移动应用。
查看缓存全文
缓存时间: 2026/06/03 09:41
# 1. 引言 来源:https://arxiv.org/html/2606.02998 CoughSense:基于 Whisper 编码器微调与双编码器交叉注意力融合及平衡对比学习的五类呼吸疾病分类 Nikhil Vincent¹ ¹独立研究者,美国华盛顿州博瑟尔 通讯作者:Nikhil Vincent 邮箱:[email protected] ORCID:0009-0007-1995-2529 代码与数据可用性:训练代码、模型检查点及基准数据划分均可在以下地址获取:https://github.com/nikhilvincentv/Cough-Mobile-App **摘要** **背景:** 自动咳嗽分析为实现低成本呼吸道筛查提供了一条路径,但现有工作大多停留在二分类的 COVID-19 检测上。一个实用的筛查工具必须能够从消费级智能手机录制的单次咳嗽音频中区分多种呼吸系统疾病。 **目标:** 本文介绍 CoughSense,该系统将咳嗽录音分为五类(健康、COVID-19、哮喘/呼吸系统疾病、支气管炎和肺炎),并作为实时移动应用部署在 iOS 和 Android 上。 **方法:** 我们汇总了来自四个公开数据集(Coswara、CoughVID、Virufy 和 West China Hospital Pediatric Cough Dataset)的 18,301 条录音,并首次应用 OpenAI Whisper 编码器 [2 (https://arxiv.org/html/2606.02998#bib.bib2)] 作为预训练主干网络进行咳嗽疾病分类。核心技术贡献是**活动帧 QKV 注意力池化**,它将注意力限制在 1500 个编码器输出 token 中的前 200 个,从而避免了因 3 秒咳嗽仅占据 Whisper 30 秒输入窗口中的约 150 个 token 而产生的静默稀释问题。附加的训练组件用于解决 19:1 的类别不平衡和四个数据集之间的域偏移:WeightedRandomSampler、SpecAugment、带有强制少数类配对的 Balanced Mixup [10 (https://arxiv.org/html/2606.02998#bib.bib10)]、有监督对比辅助损失 [8 (https://arxiv.org/html/2606.02998#bib.bib8)]、FiLM 症状条件化 [12 (https://arxiv.org/html/2606.02998#bib.bib12)] 以及梯度反转域自适应 [13 (https://arxiv.org/html/2606.02998#bib.bib13)]。一个互补的双编码器模型通过交叉注意力将 Whisper 与 OPERA-CT 呼吸基础模型 [7 (https://arxiv.org/html/2606.02998#bib.bib7)] 融合在一起。 **结果:** CoughSense(Whisper-tiny,8.6M 参数)在五折交叉验证中达到了 82.3% 的平衡准确率(宏平均 F1=0.817,AUC=0.941),比基于 ImageNet 预训练的 EfficientNet-B2 高出 11.1 个百分点,比从头训练的 ViT 高出 29.6 个百分点。所有五个类别的召回率均超过 74%;其中四个类别超过 80%。双编码器模型达到了 85.4% 的平衡准确率。服务端推理延迟约为每段录音 180 毫秒。 **结论:** 在所有消融组件中,活动帧池化的贡献最大(+5.1 个百分点),这一发现适用于任何将 Whisper 作为主干的短时音频任务。CoughSense 已作为实时移动筛查工具部署在 iOS 和 Android 上。所有基准数据划分、训练代码和模型检查点均已发布以支持可重复性。 **关键词:** 咳嗽声音分类;呼吸系统疾病;Whisper 编码器;迁移学习;对比学习;域自适应;音频基础模型;COVID-19;支气管炎;肺炎;多类不平衡分类;移动健康 咳嗽是全球初级诊疗中最常见的就诊原因 [1 (https://arxiv.org/html/2606.02998#bib.bib1)],涵盖从轻度上呼吸道感染到肺炎和 COVID-19 等多种疾病。咳嗽音频可以轻松通过任何智能手机捕捉,然而几乎所有的已发表分类器都止步于判断某人是否患有 COVID-19 的二元问题。一个筛查工具需要做得更多。如果一个孩子的湿啰音、咯咯作响的咳嗽听起来像肺炎而不是 COVID-19,模型应该能够说出来。 构建一个五类咳嗽分类器比预想的更困难,原因超出了通常的机器学习挑战。 最大的障碍是声学模糊性。急性期的 COVID-19 会产生干咳、无痰咳嗽,接近于健康人清嗓子。支气管炎和肺炎都会引起湿性、咯痰的咳嗽;它们在被影响的呼吸道深度上有所不同,这导致了微小的声学差异,而这些差异很难从几百条录音中学习到。 类别不平衡非常严重。在所有四个源数据集中,健康受试者与肺炎病例的比例为 19:1。早期使用简单损失函数的训练运行失败了:模型对每个输入都预测“健康”,仍然达到 68% 的准确率。将全部五个类别的召回率提升到 74% 以上,需要采样器、损失函数和数据增强之间的精心配合。 这些数据集还来自不同的环境:来自印度和拉丁美洲的成人众包录音,以及来自中国成都一家医院的儿科临床录音。一个记忆录音环境线索而非疾病线索的模型,在面对未知来源时会失败。 ### 1.1 为什么选择 Whisper 核心想法是使用 OpenAI 的 Whisper 语音识别编码器 [2 (https://arxiv.org/html/2606.02998#bib.bib2)] 作为预训练主干网络,据我们所知,这此前从未用于咳嗽疾病分类。Whisper 在 68 万小时的语音上训练,学会了以 10 毫秒的分辨率表示声门激励、声道共振和精细的时间结构。咳嗽共享相同的解剖结构:它是通过同一喉部发声装置进行的爆发性强力呼气。这些预训练表示可以迁移到呼吸系统病理学,就像 ImageNet 特征尽管存在域差距,但可以迁移到医学影像一样。 这一直觉得到了验证。在冻结 Whisper 编码器的情况下,我们在第一个验证轮次上观察到了 AUC=0.784,高于 EfficientNet-B2 在同一时间点的轨迹。经过完全微调后,模型达到了 82.3% 的五类平衡准确率。 这里有一个不大明显但重要的实现问题。Whisper 期望 30 秒的输入,但咳嗽录音通常只有 1-4 秒长。经过编码器的卷积主干后,一个 3 秒的片段仅占据 1500 个输出 token 中的约 150 个;其余部分对应于零填充的静默。对所有 1500 个 token 进行池化会稀释疾病信号。将池化限制在前 200 个 token(咳嗽持续时间的可靠上限)并使用该范围内的学习查询注意力,单独就贡献了 +5.1 个百分点的平衡准确率。 ### 1.2 贡献总结 1. 据我们所知,首次将 Whisper 编码器应用于多类咳嗽疾病分类,并对 18,301 条录音跨越五个类别进行了五折交叉验证基准测试。 2. **活动帧 QKV 注意力池化**:限制在前 K=200 个编码器 token,然后应用学习到的多头注意力,避免了静默稀释问题。仅此一项就在所有 1500 个 token 的简单均值池化基础上提升了 +5.1 个百分点。 3. 一种结合了 WeightedRandomSampler、SpecAugment、带有强制少数类配对的 Balanced Mixup [10 (https://arxiv.org/html/2606.02998#bib.bib10)]、有监督对比损失 [8 (https://arxiv.org/html/2606.02998#bib.bib8)]、FiLM 症状条件化 [12 (https://arxiv.org/html/2606.02998#bib.bib12)] 和梯度反转域自适应 [13 (https://arxiv.org/html/2606.02998#bib.bib13)] 的训练方案,以 8.6M 参数达到了 82.3% 的平衡准确率。 4. 一个通过交叉注意力将 Whisper 与 OPERA-CT [7 (https://arxiv.org/html/2606.02998#bib.bib7)] 融合在一起的双编码器模型,达到了 85.4% 的平衡准确率。 5. 一个实时移动推理流程,以及一个经过精心策划的基准,其中对代表性不足的 West China Hospital 支气管炎(91→728)和肺炎(82→656)类别进行了结构化增强。 ## 2. 方法 ### 2.1 研究设计 本研究描述了使用公开可用、先前收集的音频数据集开发并进行离线验证的多类咳嗽分类系统。未收集新的参与者数据。所有源数据集均按照其各自的数据使用协议使用(详见伦理部分)。 ### 2.2 数据集构建 #### 2.2.1 源数据集合 我们汇总了来自四个公开数据集的咳嗽录音,跨越三大洲和三种采集方式。 **Coswara [3 (https://arxiv.org/html/2606.02998#bib.bib3)]**:通过一个 Web 门户从印度各地的参与者处收集了 16,780 条录音。音频包括九种模态,44.1 kHz 立体声。标签包括健康、COVID-19(自报)和呼吸系统疾病(哮喘、COPD、其他),附带七维二元症状向量(发烧、感冒、咳嗽、腹泻、嗅觉丧失、疲劳、喉咙痛)。仅使用重度咳嗽片段。 **CoughVID [4 (https://arxiv.org/html/2606.02998#bib.bib4)]**:从全球参与者处收集的 27,000 条咳嗽录音的众包集合。使用专家审查的子集,确认质量评分 ≥1 且有报告的健康状态标签。使用经 PCR 确诊的 COVID-19 阳性录音(n=1,107 专家审查);选择健康的对照组以匹配人口统计学分布。 **Virufy [5 (https://arxiv.org/html/2606.02998#bib.bib5)]**:来自拉丁美洲临床环境的 103 条经临床验证的咳嗽录音,来自 PCR 确诊的 COVID-19 患者(48 阳性,55 阴性)。包括原始文件(16 条录音,MP3)和分段片段(87 条录音,MP3),标签源自文件名前缀约定(pos-* vs. neg-*)。 **West China Hospital Pediatric Cough Dataset [6 (https://arxiv.org/html/2606.02998#bib.bib6)]**:来自中国成都四川大学华西第二医院的 173 条儿童咳嗽录音(91 条支气管炎,82 条肺炎),年龄 0-11 岁。该数据集提供了唯一公开可用的、具有确诊临床诊断的支气管炎和肺炎咳嗽录音,尽管规模小且为儿科人群,但不可或缺。 #### 2.2.2 疾病分类法 Coswara 包含 70 条哮喘录音。仅有 70 个样本,无法可靠地训练专门的哮喘类别。哮喘和一般呼吸系统疾病共享共同的病理生理学(阻塞性气道疾病),产生高度相似的呼气性咳嗽声学特征。因此,我们将哮喘录音合并到更广泛的呼吸系统疾病类别中: label ← {resp_cond if label ∈ {asthma} label otherwise (1) 这产生了一个可处理的五类分类法:健康、COVID-19、哮喘/呼吸系统疾病、支气管炎和肺炎。 #### 2.2.3 预处理 所有音频使用 librosa [30 (https://arxiv.org/html/2606.02998#bib.bib30)] 和 kaiser_best 滤波器重采样为 16,000 Hz 单声道,然后进行峰值归一化。根据 Whisper 的预处理规范 [2 (https://arxiv.org/html/2606.02998#bib.bib2)],我们计算了 80 频带对数梅尔频谱图,其中 N_FFT=400 样本(25 毫秒窗口),跳数 H=160 样本(10 毫秒),Hann 窗口,以及 Slaney 归一化梅尔滤波器组。频谱图被零填充并截断为恰好 T=3000 帧(30 秒),然后归一化以匹配 Whisper 的预训练归一化: M ← clip(M, m*−8, ∞) + 4 4 (2) 其中 m* = max_{f,t} M_{f,t}。所有 18,301 个频谱图已预先计算并存储为 float16 NumPy 数组(总计约 8.8GB)。 #### 2.2.4 数据增强 West China Hospital 的支气管炎(n=91)和肺炎(n=82)集合不足以支持稳定的深度学习训练。一个结构化的 8 路增强流程生成了 728 条支气管炎和 656 条肺炎录音: 1. (1) 原始:无修改。 2. (2) 高斯噪声:在 SNR=15 dB 下添加加性高斯白噪声。 3. (3) 时间拉伸 ×0.88:将音频减慢 12%。 4. (4) 时间拉伸 ×1.12:将音频加快 12%。 5. (5) 音高偏移 -1.5 半音。 6. (6) 音高偏移 +1.5 半音。 7. (7) 时间偏移 +15%:将波形向前滚动。 8. (8) 组合:高斯噪声(15 dB)+ 音高偏移(-1.0 半音)。 选择 8× 的增强因子,以便增强后的少数类别样本超过 650 个,这是通过经验确定的进行稳定五折交叉验证的下限。表 1 (https://arxiv.org/html/2606.02998#S2.T1) 总结了最终的基准数据集。 **表 1:CoughSense V7 基准数据集统计信息。原始计数为增强前;最终计数为增强后。** | 类别 | 原始数量 | 最终数量 | 来源 | 增强 | | :--- | :--- | :--- | :--- | :--- | | 健康 | 12,446 | 12,446 | Coswara, CoughVID, Virufy | — | | COVID-19 | 1,507 | 1,507 | Coswara, CoughVID, Virufy | — | | 哮喘/呼吸系统疾病 | 2,964 | 2,964 | Coswara (包括哮喘) | — | | 支气管炎 | 91 | 728 | West China Hospital | ×8 | | 肺炎 | 82 | 656 | West China Hospital | ×8 | | **总计** | **17,090** | **18,301** | **4 个数据集** | | 健康与肺炎的不平衡比例为 19:1。五折分层划分保留了每折中的分布。 ### 2.3 架构概览 图 1 (https://arxiv.org/html/2606.02998#S2.F1) 展示了 CoughSense 流程。一个 30 秒的 Whisper 格式对数梅尔频谱图(80×3000)通过预训练的 Whisper-tiny 编码器,产生 1500 个时间步特征,维度为 384。活动帧 QKV 注意力池化选择并关注前 K=200 个 token(对应于约 4 秒音频),产生一个 384 维的嵌入。一个双层映射头应用 LayerNorm 和 GELU 激活。FiLM 条件化集成了七维临床症状向量。L2 归一化的嵌入 ẑ 被路由到:(i) 一个带有焦点损失的五类疾病头,(ii) 一个梯度反转的二类域分类器,以及 (iii) 一个有监督对比损失分支。 (图 1 文字描述略,原文为图片说明) ### 2.4 Whisper 编码器
相似文章
Whisper 介绍
OpenAI 推出 Whisper,这是一个端到端的编码器-解码器 Transformer 模型,在大规模多样化音频数据上进行训练,可提供强大的多语言语音识别、语言识别和语音到英文翻译功能。Whisper 在多样化数据集上的错误率比专业模型低 50%,并且在语音翻译方面优于有监督基准,尽管未针对特定数据集进行微调。
openai/whisper-large-v3
OpenAI 发布了 Whisper large-v3,这是一个更新后的自动语音识别模型,使用 128 个梅尔频带和一个新的粤语词元,在 500 万小时的数据上训练,错误率较 large-v2 降低 10-20%。
基于隐层表示引导和稀疏自编码器的Whisper幻觉检测与缓解
本文展示了Whisper在面对静音、噪声或音乐时产生的幻觉故障,可以完全通过内部激活和稀疏自编码器来检测和缓解,无需微调即可大幅降低幻觉率。
基于音调条件的课程学习用于低资源班图语语音识别
本文提出了一种基于音调条件的课程学习框架,用于低资源班图语语音识别,结合了混合难度评分、门控适配器和分阶段课程训练。对六种南部班图语的评估显示,W2V-BERT在恩古尼语上优于Whisper,而Whisper在索托-茨瓦纳语上表现更好。
使基础ASR模型适应构音障碍语音:一项案例研究
本文介绍了一个针对构音障碍说话者的个性化ASR系统,通过对Whisper基础模型进行微调,仅使用22.5小时的适应数据加上8.8小时的用户纠正,实现了9.7%的词错误率。结果表明,个性化微调可以显著提升基础ASR模型对构音障碍语音的效果,并且通过部署的移动应用实现了真实世界的数据收集。