YAMNet:Google 的 521 类音频事件分类器

> 来源: https://github.com/tensorflow/models/tree/master/research/audioset/yamnet

> 开发者: Google Research(Manoj Plakal & Dan Ellis)

> 框架: TensorFlow / Keras

> 首次发布: ~2019 年(GitHub);2021 年 3 月(TensorFlow Hub 正式版 + 官方博客)

> 论文: 无独立论文,技术基础见 AudioSet (ICASSP 2017) 和 MobileNet v1 (arXiv 2017)

> 许可: Apache-2.0(TensorFlow Models 仓库)

📌 项目概述

YAMNet(Yet Another Audio Mobilenet Network)是 Google 开发的预训练音频事件分类器,能识别 521 种音频事件,从人声(说话、笑声、歌唱)到环境声(警笛、狗叫、雷声)再到音乐(吉他、钢琴、鼓声)。

它基于 AudioSet 数据集训练——一个包含 200 万+ 条 YouTube 音频片段的大规模标注数据集。

🔬 技术架构

深度可分离卷积(核心架构创新)

YAMNet 使用 MobileNet v1 的深度可分离卷积(Depthwise Separable Convolution)作为核心架构。这是一种将标准卷积拆分为两步的技术:

1. 逐通道卷积(Depthwise):每个输入通道独立做空间卷积,提取空间特征

2. 逐点卷积(Pointwise):1×1 卷积混合通道信息

这种拆分使计算量降至标准卷积的约 1/8~1/9,是 2019 年移动端部署的最优解。YAMNet 没有使用 Transformer 架构——在当时的技术条件下,轻量级 CNN 是性能与效率的最佳平衡。

深度可分离卷积(核心架构创新)

YAMNet 使用 MobileNet v1 的深度可分离卷积(Depthwise Separable Convolution)作为核心架构。这是一种将标准卷积拆分为两步的技术:

1. 逐通道卷积(Depthwise):每个输入通道独立做空间卷积,提取空间特征

2. 逐点卷积(Pointwise):1×1 卷积混合通道信息

这种拆分使计算量降至标准卷积的约 1/8~1/9,是 2019 年移动端部署的最优解。YAMNet 没有使用 Transformer 架构——在当时的技术条件下,轻量级 CNN 是性能与效率的最佳平衡。

模型结构

组件详情
骨干网络MobileNet v1(深度可分离卷积)
参数量**3.7M**(非常轻量)
推理计算量69.2M 乘法运算 / 帧
输入960ms 音频片段(至少需 975ms)
输出521 维分类分数
嵌入维度1024 维

音频特征处理流水线


原始音频
    ↓ 重采样至 16kHz 单声道
短时傅里叶变换(STFT)
    ↓ 窗口 25ms,跳步 10ms,Hann 窗
梅尔频谱图
    ↓ 64 个梅尔频带,125-7500 Hz
对数梅尔频谱图
    ↓ log(mel + 0.001)
分帧
    ↓ 96×64 的 patch(0.96s,50% 重叠)
MobileNet v1
    ↓ 3×2 × 1024 激活 → 全局平均池化
1024 维嵌入
    ↓ 单层 logistic 分类
521 类分数输出

性能指标

在 AudioSet 评估集(20,366 段,521 类)上:

指标数值
平衡平均 d-prime2.318
平衡 mAP0.306
平衡平均 lwlrap0.393

521 类音频事件示例

YAMNet 能识别的音频类别覆盖面极广:

> 注:出于公平性考虑,原始 AudioSet 的 527 类中删除了 6 类——性别化的说话/歌唱分类(男性/女性)、战吼和搞笑音乐。

💡 核心价值:迁移学习基座

YAMNet 最重要的用途不是直接分类 521 种声音,而是作为音频领域的迁移学习基座模型

工作原理

1. 加载预训练的 YAMNet

2. 提取 1024 维音频嵌入(倒数第二层输出)

3. 在嵌入之上训练你自己的小型分类器

4. 只需少量标注数据即可实现高精度的自定义音频分类

实际应用场景

场景做法
婴儿哭声检测用 YAMNet 嵌入 + 少量婴儿哭声样本训练
工厂异常声检测正常运转声 vs 异常声的二分类
鸟类物种识别不同鸟鸣的多分类
音乐流派分类嵌入 + 流派标签训练
安防声音告警玻璃碎裂、枪声、尖叫检测
智能家居门铃、烟雾报警器、敲门声识别

TensorFlow 官方提供了完整的迁移学习教程,还可以用 TFLite Model Maker 导出到移动端。

📊 与同类模型对比

模型参数量类别数框架特点
**YAMNet**3.7M521TensorFlow极轻量,迁移学习友好
VGGish~72M嵌入TensorFlowYAMNet 前身,更重
PANNs80M+527PyTorch更高精度,更重
AST87M527PyTorchTransformer 架构
BEATs90M527PyTorch迭代式预训练
Whisper39M-1.5B语音PyTorch语音识别,非事件分类

YAMNet 的定位:不追求最高精度,而是在轻量级 + 易用性 + 迁移学习友好之间取得最佳平衡。3.7M 参数意味着它可以轻松部署在移动设备和边缘设备上。

🚀 快速上手


# 克隆仓库
git clone https://github.com/tensorflow/models.git
cd models/research/audioset/yamnet

# 安装依赖
pip install numpy resampy tensorflow soundfile tf-keras

# 下载模型权重
curl -O https://storage.googleapis.com/audioset/yamnet.h5

# 测试安装
python yamnet_test.py

# 对音频文件分类
python inference.py your_audio.wav

⚠️ 注意事项

💡 分析与评价

为什么在 2026 年仍然值得关注

1. 边缘部署:3.7M 参数 + MobileNet 架构 = 手机/树莓派/IoT 设备上实时音频分类

2. 迁移学习性价比极高:1024 维嵌入质量好,少量样本就能训出效果不错的自定义分类器

3. AudioSet 生态:底层的 AudioSet 数据集仍然是音频 AI 领域最重要的基准之一

4. TFLite 支持:可以导出为 TFLite 模型,部署到 Android/iOS

局限性

评分

维度评分(/10)
技术实力8
实用价值8.5
易用性8
生态成熟度9
轻量级设计9.5
**综合****8.6**

🔗 与我们的关联

1. 音频 AI 入门:如果想做任何音频分类相关的项目,YAMNet 是最好的起点

2. 嵌入提取器:即使不做分类,YAMNet 的 1024 维嵌入也可以用于音频相似度搜索、聚类等

3. 边缘部署:如果有 IoT/树莓派项目需要音频识别(如智能门铃、环境监测),YAMNet 是理想选择

4. 教学价值:完整的特征提取流水线(STFT → 梅尔频谱 → 对数 → CNN)是学习音频 ML 的经典路径

报告由深度研究助手自动生成 | 2026-03-07