前言:音视频结合,助力安防再升级
B站视频同步讲解链接:【硬核部署】在 RK3588上部署毫秒级音频分类算法
相机采集范围:有一个视场角,且受光照条件影响严重

音频的传播形式:360°,不受光照条件影响

应用场景:
人员跌倒:

人员入侵:

设备故障:



1. 什么是 YAMNet?
YAMNet 是由 Google 开发的一款先进的预训练深度神经网络,专门用于音频事件分类(Audio Event Classification) 。它能够识别多达 521 种音频类别,涵盖了从日常生活中的人声、动物叫声到工业环境下的各类噪音。
核心特性
-
架构设计 :基于 MobileNet_v1 深度可分离卷积(Depthwise Separable Convolution)。这种设计在保持高精度的同时,极大地减少了参数量,是移动端和边缘侧部署的理想选择。
-
数据集 :在 AudioSet (包含数百万段 YouTube 视频音频)上训练而成。
YAMNet 的强大在于它支持的 521 个类别,这些类别基于 Google 的 AudioSet 本地本体(Ontology)。它不仅能识别简单的声音,还能识别具有层级关系的声音:
- 人声(Speech, Laughter, Shouting)
- 动物(Bark, Meow, Chirp)
- 自然界(Rain, Thunder, Wind)
- 乐器(Guitar, Piano, Drum)
- 警报与环境音(Siren, Explosion, Clock tick)
-
输入机制 :YAMNet 并不直接"听"原始波形,而是将声音转换为 Mel 频谱图(Mel Spectrogram) ,这类似于将声音问题转化为图像识别问题。

当你拿到一张 Mel 频谱图时,你需要观察三个坐标轴:
- 横轴(时间 - Time): 从左往右看,代表时间的流逝。
- 纵轴(频率 - Frequency): 从下往上看,代表音调的高低。底部是低音(如鼓声、男低音),顶部是高音(如蝉鸣、鸟叫)。
- 颜色(能量/振幅 - Amplitude/Intensity): 颜色的亮度或深浅代表了声音的大小。通常颜色越亮(如亮黄、白色)表示那个频率点的能量越强;颜色越深(如深蓝、紫色)表示声音越安静。
为什么一定要用 "Mel" 尺度?
- 这是初学者最困惑的地方。普通的频谱图(Spectrogram)纵轴是等间距的赫兹(Hz),但 Mel 频谱图是为人类耳朵定制的。
- 人的听觉是非线性的: 我们对低频的变化非常敏感(你能轻易分辨 100Hz 和 200Hz 的区别),但对高频的变化很迟钝(你很难听出10000Hz 和 10100Hz 的区别,尽管它们也差 100Hz)。
- Mel 刻度的作用:它通过数学转换,把频率压缩得像人耳听到的那样------低频部分被拉伸(更详细),高频部分被压缩(更模糊)。
2. 为什么选择瑞芯微 (Rockchip) NPU?
在智能家居、工业监测或安全防范场景中,音频识别往往需要 24/7 全天候运行。
- 低功耗:相比 CPU 运行,NPU 能够以极低的功耗处理连续音频流。
- 高实时性:在 RK3588 等平台上,NPU 可以实现毫秒级响应,确保关键事件(如玻璃破碎、尖叫)被即时捕捉。
- 硬件兼容性:支持包括 RK3588, RK3568, RV1126 在内的全系列主流 Rockchip 平台。
3. 部署实战:从模型转换到端侧运行
3.1 环境准备与模型获取
首先,我们需要获取 YAMNet 的 ONNX 格式模型。你可以通过以下脚本快速下载:
bash
cd model
./download_model.sh
3.2 模型转换 (RKNN 转化)
利用瑞芯微提供的工具链,将 ONNX 模型转换为 NPU 专用的 .rknn 格式。此步骤支持开启 i8/u8 量化 ,以获得最佳的推理速度。

shell
cd python
# 将模型转换为适用于 RK3588 的量化模型
python convert.py ../model/yamnet_3s.onnx rk3588

3.3 多平台 Demo 运行
Python 端快速验证
shell
# 使用 RKNN 模型在连接的开发板上进行推理
python yamnet.py --model_path ../model/yamnet_3s.rknn --target rk3588

Linux C++ 部署 (高性能方案)
对于追求极致性能的嵌入式 Linux 环境,建议使用 C++ Demo:
- 编译:
shell
./build-linux.sh -t rk3588 -a aarch64 -d yamnet
- 执行:
shell
./rknn_yamnet_demo model/yamnet_3s.rknn model/test.wav
4. 预期效果与应用场景
运行成功后,系统会实时分析音频并输出最可能的分类标签:
Detected Result: [Animal / Dog Barking]
典型落地场景
- 安防监控:识别异常声响,如火灾警报、枪声、求救声。
- 智能家电:空调或抽油烟机根据环境噪音自动调节模式,或识别婴儿哭声。
- 预测性维护:通过监测工业电机、轴承的运转声音异常,提前发现故障隐患。
5. 总结与建议
通过本文,我们实现了 YAMNet 在瑞芯微 NPU 上的全链路部署。从 MobileNet 的轻量化设计到 RKNN 的硬件加速,这套方案为边缘侧音频智能化提供了坚实的基础。
下一步探索:
- 自定义类别 :如果你需要识别特定的工业异响,可以参考 export_onnx.md 重新导出并微调模型。
- 多路并发:尝试在 RK3588 上同时开启 4 路音频分析,测试 NPU 的负载极限。
这份列表是 AudioSet 的本体(Ontology)分类,它是 Google 发布的一个大规模音频数据集标签。为了方便你参考,我将其按逻辑大类进行了中文翻译:
6.附录:521种音频
🗣️ 人类声音 (0-66)
- 0-5: 语音、儿童说话、交谈、独白、婴儿语、语音合成。
- 6-12: 喊叫、咆哮、欢呼、尖叫、耳语。
- 13-18: 笑声(婴儿笑、轻笑、傻笑、大笑等)。
- 19-23: 哭泣(抽泣、婴儿啼哭、哀嚎)、叹息。
- 24-32: 歌唱(合唱、约德尔唱法、圣咏、念经、说唱、哼唱)。
- 33-45: 身体声音:呻吟、咕哝、口哨、呼吸(喘气、鼾声、打喷嚏、咳嗽、清嗓子)。
- 46-48: 脚步声(跑、拖地行走、走)。
- 49-55: 进食与消化:咀嚼、咬、漱口、肚子咕噜声、打嗝、放屁。
- 56-62: 手部声音:响指、拍手;心脏声音(心跳、心杂音);欢呼与掌声。
- 63-66: 群体声音:嘈杂声、人群、嘈杂的谈话、儿童游戏。
🐾 动物声音 (67-131)
- 68-80: 宠物:狗 (吠叫、嚎叫、低吼)、猫(呼噜声、喵喵叫、嘶吼、叫春)。
- 81-102: 牲畜:马(蹄声、嘶鸣)、牛(哞叫、牛铃)、猪(哼哼)、羊(咩咩)、家禽(鸡鸣、鸭叫、鹅叫)。
- 103-105: 野生动物:狮虎咆哮。
- 106-116: 鸟类:鸣叫、嘎嘎叫、鸽子咕咕声、乌鸦叫、猫头鹰叫、飞行扇动翅膀声。
- 117-131: 其他:犬科(狼)、啮齿类(老鼠)、昆虫(蟋蟀、蚊子、苍蝇、蜜蜂嗡嗡声)、青蛙、蛇(响尾蛇)、鲸鱼。
🎵 音乐 (132-276)
- 133-146: 拨弦乐器:吉他(电、木、贝斯)、班卓琴、西塔琴、曼陀林、尤克里里。
- 147-155: 键盘乐器:钢琴、电子琴、管风琴、合成器、羽管键琴。
- 156-178: 打击乐器:爵士鼓、鼓机、小军鼓、定音鼓、大鼓、钹、木鱼、铃鼓、木琴、钢鼓。
- 179-194: 乐团与管乐:铜管(小号、长号)、弦乐(小提琴、大提琴、倍大提琴)、木管(长笛、萨克斯、单簧管)、竖琴。
- 195-210: 铃儿与特殊:教堂钟声、自行车铃、音叉、口琴、手风琴、风笛、迪吉里杜管、颂钵、DJ搓碟。
- 211-260: 音乐流派:流行、嘻哈、摇滚(重金属、朋克、格朗日)、蓝调、爵士、雷鬼、乡村、民谣、古典、歌剧、电子(House, Techno, Dubstep)、拉丁、非洲、基督教、亚洲音乐等。
- 261-276: 音乐场景与情绪:歌曲、背景音乐、主题曲、广告歌、原声带、摇篮曲、游戏音乐、圣诞音乐;快乐、悲伤、紧张、恐惧等情绪音乐。
☁️ 自然界声音 (277-293)
- 277-279: 风:树叶沙沙声、麦克风风噪。
- 280-281: 雷电:雷暴。
- 282-291: 水:雨(雨滴、雨声)、溪流、瀑布、海洋(海浪)、蒸汽、咕噜水声。
- 292-293: 火:木材燃烧爆裂声。
🚗 交通工具与引擎 (294-347)
- 295-299: 船只:帆船、独木舟、快艇、大船。
- 300-321: 陆地车辆:汽车(鸣笛、报警器、急刹车、经过声)、赛车、卡车(气刹)、巴士、紧急车辆(警笛、救护车、消防车)、摩托车、交通噪音。
- 322-328: 轨道交通:火车(汽笛、铁轨声)、地铁。
- 329-334: 航空:飞机引擎、喷气机、螺旋桨、直升机。
- 335-336: 自行车、滑板。
- 337-347: 引擎状态:牙科钻、割草机、电锯;发动机启动、怠速、加速轰鸣声。
🏠 家庭与工作场景 (348-419)
- 348-357: 门:门铃、滑动门、撞门声、敲门、抽屉/橱柜开关声。
- 358-371: 厨房与生活:餐具碰撞、剁菜、油炸、微波炉、搅拌机、水龙头、冲马桶、吹风机、吸尘器。
- 372-381: 个人物品:拉链、钥匙响声、硬币掉落、剪刀、电动剃须刀、打字声、书写声。
- 382-397: 警报与信号:电话铃声、手机铃声、闹钟、防空警报、烟雾报警器、雾号、汽笛。
- 398-411: 机械:时钟(滴答声)、齿轮、滑轮、缝纫机、风扇、空调、收银机、打印机、照相机。
- 412-419: 工具:锤子、电锤、锯子、锉削、打磨、电钻。
💥 撞击、爆炸与材料 (420-493)
- 420-427: 爆炸与武器:枪声(机枪、排枪、炮火)、玩具枪、烟花爆竹。
- 428-430: 爆裂、喷发、轰隆声。
- 431-437: 材料破坏:木材(砍伐、开裂)、玻璃(叮当声、碎裂声)。
- 438-451: 液体动作:溅起、晃动、滴水、倾倒、喷雾、搅拌、沸腾。
- 452-455: 物理撞击:箭、嗖嗖声、沉闷的撞击声。
- 456-463: 杂项:电子调音器、合唱效果、篮球蹦跳、砰砰声、拍打。
- 464-474: 动作声音:破碎、反弹、鞭打、刮擦、摩擦、滚动、压碎、撕裂。
- 475-493: 各种异响:哔哔声、叮当声、金属撞击、吱吱声、生锈摩擦、嘶嘶声、点击声、隆隆声。
🎧 环境与声学特性 (494-520)
- 494-499: 信号音:静音、正弦波、脉冲。
- 500-504: 空间感:室内(小房间、大厅、公共场所)、室外(城市、乡村)。
- 505-506: 声学效果:混响、回声。
- 507-517: 噪声:环境噪音、静电声、交流电哼声(电磁声)、失真、白噪声、粉红噪声、振动。
- 518-520: 媒体源:电视、广播、野外录音。