ONNX 推理

推理是训练好的模型查看一段录音并给出类别的环节。谛耳运行 ONNX 格式的模型 —— 这是 PyTorch、TensorFlow、scikit-learn 与 ML.NET 共同的导出目标。 因此,由数据团队训练的模型可以直接投入谛耳使用,无需格式转换,也不必安装对应的训练框架。

支持的模型格式

项目支持情况
模型文件.onnx —— 分类与回归计算图
输入单个 float 张量;支持 2 维、3 维、4 维形状,含动态维度
输出取第一个输出张量,按每类得分的一维列表读取
音频输入WAV、HEAD HDF(单通道或多通道)
计算设备默认 CPU;可选 DirectML GPU 加速
导出时带有符号化 batch_size 维度的模型可被自动识别并正确处理, 无需为了固定批大小而重新导出。

加载模型并读懂签名

在第 1 步 —— 加载模型中浏览选择 .onnx 文件。加载完成后, 状态行会报告识别到的签名,例如:

Input: [1,1,16000] -> Output: [1,10] (10 classes) [batch]

读法是:模型需要 1 批、1 个通道、16000 个采样点的输入,输出 10 个类别得分。 据此先确认两件事再往下走 —— 类别数量与您即将填入的标签个数是否一致, 以及期望的输入长度与您的录音是否兼容。

输入形状自动匹配

测量数据的形状很少正好等于模型导出时的形状。谛耳会主动把数据适配到模型, 而不要求您手工整形。适配依据是模型声明的输入形状:

声明的输入数据如何映射
[batch, channels, samples]按原样使用各通道;每通道按需截断或补零到所需长度
[batch, samples]多通道混合为单声道,再截断或补零
[batch, 1, time, frequency]频谱图(彩图)经双线性插值重采样到所需的时间 × 频率栅格
一维特征曲线电平-时间或特征-时间曲线直接送入,按长度截断或补零
其他情形数据展平为所需的元素总数

模型中声明为未知的动态维度,会用实际数据维度填充:首维取批大小,中间维取通道数,末维取采样数。

数据来源 波形(WAV / HDF) 频谱图 / 彩图 特征曲线 vs 时间 形状匹配 混合 / 补零 / 截断 重采样 / 归一化 ONNX 模型 CPU 或 GPU 得分 由模型声明的输入形状决定数据如何适配 —— 无需手工整形

输入归一化

如果模型是在归一化后的输入上训练的,推理时必须施加同样的归一化。提供三种模式:

模式变换适用情形
None(不归一化)数值原样送入模型在原始物理量上训练
Min-Max(x − min) / (max − min)训练时把每段录音缩放到 0…1
Standard(x − 均值) / (L2 / √N)训练时使用零均值、单位尺度的输入

归一化按通道逐一计算并施加。选择了与训练时不同的归一化模式, 是「在 Python 里好用、到这里就不对」最常见的原因之一。

GPU 加速

在第 1 步中勾选 GPU (DirectML)。DirectML 适用于任何支持 DirectX 12 的显卡, 因此无需安装厂商专用的计算工具包。若设备不可用,模型会静默改走 CPU —— 推理不会仅仅因为没有 GPU 而失败。

GPU 加速对大型卷积模型和长时间批量运行收益最明显。小模型 + 短录音时, CPU 路径往往同样快,因为耗时主要花在读文件上。

后处理:激活、温度与 Top-K

模型输出的是原始数值(logits)。后处理负责把它们变成可读的置信度。 第 3 步 —— 设置中的各项按固定顺序施加:Sigmoid → 温度 → Winner Takes All → SoftMax。

选项效果典型用途
Sigmoid 1 / (1 + e−x) 多标签模型,即多个类别可能同时成立
SoftMax(ReLU) max(0, x) / Σ max(0, x) 默认。把正得分归一化为总和 100%
Winner Takes All 最高得分处置 1,其余置 0 只要硬性好坏结论,不需要置信度层次
温度(Temperature) 得分除以 T(0.1…5.0) T < 1 使分布更尖锐,T > 1 软化过度自信的模型
Top-K 只保留得分最高的 K 个类别 类别数以百计的模型;填 0 显示全部
后处理改变的是得分的显示方式,永远不会改变原始输出中真正最高的那一类。 如果您把置信度当作放行阈值使用,请固定后处理设置 —— 在阈值定好之后再改动温度,会在无声无息中挪动验收点。

类别名称

按模型输出神经元的顺序,以英文逗号分隔填写标签,例如 OK, Whine, Knock, Rub。 填写的标签少于模型类别数时,其余按 Class_4、Class_5…… 补齐; 完全不填时全部按编号显示。标签只影响显示与 CSV 导出,绝不改变预测结果。

结果解读

一次分类给出四样东西:

真正有诊断价值的是这份逐类列表的形状。单一尖峰说明模型很确信; 两个类别接近说明这段录音处在边界上,值得亲耳听一听; 所有类别都很平坦,通常意味着输入与训练数据完全不像 —— 请检查录音长度、通道选择与归一化模式。

批量推理与 CSV 导出

第 5 步 —— 批量分类把已加载的模型应用到整个文件列表。 添加 WAV 或 HDF 文件,按 Run Batch 并观察进度条; 每一行报告文件名、预测标签、置信度与状态。无法读取的文件会在自己那一行标出,不会中断整批。 Export CSV 导出 File, PredictedLabel, Confidence, Status 四列, 可直接用于电子表格或质量数据库。

模型库(Model Zoo)

模型库是一份常用预训练声学模型的目录,模型本身不随安装包分发,以保持软件体积。 模型存放在 %LocalAppData%\Deepsona\Models;若已配置下载源,可按需下载并显示进度, 否则把 .onnx 文件手动放入该目录即可被识别。

模型体积用途
PANNs-CNN14约 80 MB通用声音事件分类,527 类
YAMNet约 14 MB轻量声音事件分类器,521 类 —— 适合快速筛查
VGGish约 280 MB输出 128 维嵌入向量而非类别

嵌入向量是一段声音的紧凑数值指纹。在标注极少时尤其有用: 用余弦相似度比较两段录音的嵌入向量,即可实现「以声搜声」检索录音库; 也可以把嵌入向量作为特征,用少量样本训练一个小分类器。 嵌入前端采用标准化 log-Mel 谱(64 个 Mel 带、25 ms 帧长、10 ms 帧移、125…7500 Hz), 与这些公开模型所期望的口径一致。

在处理管线中运行推理

AI 分类同时也是一个常规分析节点,可与 FFT、响度、阶次分析并列放进管线, 一次应用到整个文件池。节点接受以下参数:

参数含义默认值
OnnxModelPath模型文件路径(必填)—
ClassLabels逗号分隔的类别名称按编号
UseSigmoid施加 Sigmoidfalse
UseSoftMax施加 SoftMaxtrue
UseWTA施加 Winner Takes Allfalse
NormalizationNone / MinMax / StandardNone

节点输出一条每类得分曲线、一个携带获胜标签与置信度的单值, 以及一份逐类列出后处理得分与原始得分的日志 —— 这些都可被报告工具直接取用。

常见问题排查

现象可能原因
所有类别得分几乎一样输入与训练数据不像 —— 检查录音长度、通道选择与归一化模式
模型总是回答同一类训练集严重不均衡,或类别标签顺序填错
置信度永远是 100%启用了 Winner Takes All —— 关掉即可看到层次
类别数与标签数对不上看第 1 步的签名行,按它调整标签列表
结果与训练框架里的不一致归一化模式或输入长度与训练前端不同
GPU 似乎没有效果无可用的 DirectX 12 设备,已静默走 CPU 路径
相关页面:AI 声学分类(总览) · 标注与训练 · 异常检测

© 2026 Deepsona. All Rights Reserved.