大家好。
当人们听到动物叫声或键盘敲击声时,他们可以推断出关于声源和环境的一些信息。如果我们将这些声音转换为数值向量,它们之间的距离是否保留了相同类型的含义?
今天,我将把 CLAP 音频编码器导出为 ONNX 格式,并比较其在 ESC-50 数据集的 50 个类别中的环境声音嵌入。
测试内容
CLAP(对比语言-音频预训练) 将音频和文本映射到一个共享的嵌入空间。本实验仅使用 ONNX 运行时运行来自 laion/clap-htsat-unfused 的音频编码器,并探讨以下问题:
- 它是否能从五秒钟的环境声音中一致地生成归一化的 512 维嵌入
- 来自同一类别的不同录音是否通过余弦相似度成为最近邻
- 当具体类别不匹配时,声音是否仍然聚类在五个粗粒度类别中的正确类别附近
- 该流程在苹果硅芯片中央处理器上耗时多久
完整的代码和可复现的环境可在 kiarina/labs 仓库中的 clap-onnx-esc50 实验目录 中找到。
复现实验
你需要以下工具、首次运行时的网络连接以及大约 2 GB 的可用空间:
以下命令仅获取此实验并运行它:
git clone --depth 1 --filter=blob:none --sparse \
https://github.com/kiarina/labs.git
cd labs
git sparse-checkout set .gitignore .mise/tasks Makefile mise.toml \
2026/07/06/clap-onnx-esc50
mise -C 2026/07/06/clap-onnx-esc50 run
在首次运行时,任务会从胡格脸(Hugging Face)下载检查点,在实验目录内生成 model.onnx,并执行评估。后续运行会验证并复用 ONNX 模型。该任务还会从固定的数据集版本下载 ESC-50 元数据和选定的 100 个 WAV 文件。
模型与数据集
模型固定于 laion/clap-htsat-unfused 的提交哈希 84bcbbd1d619e407a8216371ddef36e458d95d93。使用 PyTorch 2.8.0、Transformers 4.57.3 和算子集 18,本实验导出了音频编码器、投影层和 L2 归一化。
SHA-256: b23099962830b1afa5398efbb6f5321ef8f63f8fcf93f5019837c47118a8a1c5
输入:input_features [批次, 1, 1001, 64], is_longer [批次, 1]
输出:embeddings [批次, 512]
此 ONNX 计算图不包含文本编码器。因此,本实验比较的是声音与声音,而不是基于文本类别名称执行 CLAP 零样本分类。
输入数据来自 ESC-50,这是一个包含 2,000 条五秒钟环境录音的数据集,分为 50 个类别和五个粗粒度类别:
- 动物
- 自然声景与水声
- 人类
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。