Show HN: 使用对比语言-音频预训练对机械故障进行分类
摘要
一个概念验证的开源工具,使用CLAP嵌入从音频中对汽车故障进行分类,提供校准的分诊,用于故障检测、定位和部件识别。
查看缓存全文
缓存时间: 2026/07/04 09:38
adam-s/car-diagnosis
来源:https://github.com/adam-s/car-diagnosis
cardiag — 通过声音诊断汽车故障
cardiag 是一个端到端的音频机器学习流水线。它从 YouTube/TikTok 抓取故障声音片段,清洗音频(将机械声从人声、音乐和噪声中分离出来),使用冻结的 CLAP 模型进行嵌入,并训练小型线性头来对故障进行分类。它通过命令行界面和实时 Web 应用提供服务。
https://github.com/user-attachments/assets/23dc48e7-5571-4890-9a6c-4552d907dd8a
这是一个概念验证,并且对其含义保持坦诚。通过手机录音诊断汽车故障确实很难,因此 cardiag 被构建为一个校准后的分诊辅助工具,而非诊断器:它告诉你是否有声音异常,大致在车的哪个位置,以及一个按可能性排序的部件短列表。当音频不足以支持判断时,它会返回“不确定”而不是胡乱猜测。
真正的贡献在于清洗+诚实训练方案,该方案可复用于其他音频数据集。 这里的适度准确率反映了从粗糙的手机音频中诊断问题的难度(我们达到了文献天花板);同样的方法在干净的发动机音频上达到了 0.93 AUROC。请参阅 docs/DEFENSE.md。
交互式演示
两个页面可视化了流水线的前两个阶段:
- 分离发动机音频 (https://adamsohn.com/separate/) — 直观展示
clean()级联如何从嘈杂的 YouTube 音频(人声、音乐、路噪)中提取出短促的机械声段。 - CLAP 可视化 (https://adamsohn.com/clap/) — 展示冻结的 CLAP 模型如何将这些声段转换为线性头进行分类所需的 512 维嵌入。
实际达到的效果
基于样本外的测量,泄漏安全(按视频分组的交叉验证,共 1,031 个视频组;置换检验 p = 0.0005)。这些是实诚的数字,而非排行榜。
| 能力 | 结果 | 与随机水平对比 |
|---|---|---|
| 是否有故障?(故障/正常) | AUROC 0.79 [0.76, 0.83] | 0.50 |
| 在车的哪个位置?(6 个区域) | 正确区域位于前 3 名 ≈ 75% | 2× |
| 哪个部件?(12+ 个部件族) | 正确部件位于前 3 名 ≈ 45–65% | 3–4× |
| 知道何时不知道 | 已校准(ECE ≈ 0.04),返回 UNCERTAIN | — |
完整详情,以及我们因样本外测试失败而降级的一个头部(敲击声),请参阅 docs/MODEL_CARD.md。
快速入门:从克隆到推理
一个全新的克隆即可立即使用。预训练的小型模型随附在 models/ 中,并附带一个合成演示片段,因此无需下载或抓取任何内容。
git clone && cd car-diagnosis
uv venv && source .venv/bin/activate
uv pip install -e ".[scrape,web,dev,viz]" # Python 3.11
cardiag doctor # 预检:已安装的内容
cardiag train --fixtures # 离线在约 2 秒内得到一个可用模型(无需抓取,无需 2 GB 下载)
cardiag diagnose # 判决 + 位置 + 排序的部件
cardiag serve --model models # 实时 Web 应用:拖入片段 / 粘贴链接,“解释原因”
在隔离的工作树中验证整个端到端流程:bash scripts/clone_verify.sh。
工作原理
音频 ──► clean() 级联 ──► CLAP 嵌入 ──► 线性头 ──► 诊断
(分离声段) (冻结,512维) (故障/区域/ (已校准,
部件/敲击) 支持 UNCERTAIN)
采用单一分割路径。抓取的片段、你自己的录音(cardiag ingest,任意长度)以及推理时的上传均通过相同的 clean() 级联,该级联隔离出短促的机械声段。超过约 10 秒的声段会被拆分为窗口,以避免 CLAP 静默截断。训练与推理共享同一嵌入契约,因此不存在训练/推理偏差。
用法
cardiag diagnose clip.wav # 完整模型:判决 + 区域 + 排序的部件
cardiag triage clip.wav # 校准后的发动机 vs 运行机构
cardiag clean clip.wav # 隔离机械声(无需模型)
cardiag inspect clip.wav -o r.html # 查看/听取流水线:声段、频谱图、分数
cardiag ingest ./my_audio --kind fault --cause wheel_bearing # 带上你自己的音频
cardiag scrape youtube|tiktok # 构建语料库(Reddit 已弃用——噪声太大)
cardiag train # 在你的语料库上训练
在任何推理命令后添加 --json 以获取机器可读输出。
文档
- docs/DEFENSE.md — 坦诚说明为何一种故意粗糙的方法仍能带来真实的分诊结果。
- docs/MODEL_CARD.md — 每个头部的指标、预期用途和局限性。
- docs/architecture.md — 流水线图解。
- docs/scraping-guide.md — 从零开始构建语料库的指南。
范围与坦诚
适用于社交风格/定向上传的音频(YouTube、TikTok 或用户特意录制的手机片段)。非安全关键或独立诊断工具。它是一种分诊辅助工具,缩小检查范围,并诚实反映不确定性。
模型文件是 joblib 工件:只加载你信任的文件。
许可协议:参见 LICENSE。
相似文章
通过LLM增强的音频-文本对齐实现零样本呼吸声音分类
本文提出了一种零样本呼吸声音分类框架,通过LLM合成的报告将音频编码器与医学术语对齐,在临床诊断任务中优于CLAP和Qwen2-Audio等模型。
使用随机卷积核的多类电气与机械故障分类
本文评估了SelF-Rocket在电气和机械系统多类故障诊断中的应用,引入了一种多变量扩展,并在基准数据集上将其与基于ROCKET的方法进行了比较。
基于物理可验证证据与LLM报告的轴承故障诊断
本文介绍了诊断证据网络(DENet),一个多任务框架,它将基于AI的轴承故障诊断扩展为生成物理可验证的证据,例如预测的特征频率和脉冲的时间定位,同时使用QLoRA适配的语言模型生成受限的诊断报告,以减少幻觉内容。
当视觉为声音代言
本文发现,具备视频处理能力的多模态大语言模型(MLLMs)表面上似乎能够理解音频,但实际上依赖视觉线索,这一失败模式被称为视听Clever Hans效应。我们提出了Thud,一个基于干预的探查框架来诊断该问题,并提出了一种对齐方案,将视听一致性提升了28个百分点。
基于文本与音频分类器的学生异常言语响应检测
# 基于文本与音频分类器的学生异常言语响应检测 来源:[https://arxiv.org/html/2604.16717](https://arxiv.org/html/2604.16717) \(论文将于2026年4月10日在国家教育测量委员会会议上发表\) ###### 摘要 本文旨在填补自动言语响应评分(AVRS)使用中的一项关键安全空白。我们提出了一种新颖的混合框架,用于识别存在心理困扰的学生,该框架结合了文本分类器与音频分类器;其中文本分类器经过训练以根据内容检测响