基于 RA8P1 的声音分类推理工程
关于公开内容的重要说明本作品将于 8 月 20 日参加全国大学生电子设计竞赛信息科技前沿专题赛现场评审。为保护作品核心成果不泄漏烧录进 Flash 中的二进制文件暂不公开本文仅作原理与工程方法交流。声音分类模型目前只分辨狗叫、猫叫、鸟叫三种声音其它声音类型的判别方式暂时不公开敬请理解。本文记录声音分类推理工程的完整技术路线模型如何从 tflite 转换到可编译的 C 代码、转换产物怎么用、模型怎么烧录、板端推理链路与 UI 如何实现。整套推理完全在板端完成不依赖上位机与网络。一、模型转换从 tflite 到 C 代码模型先以 TensorFlow Lite 格式int8 量化训练导出。RA8P1 的 Ethos-U55 NPU 不能直接执行 tflite需要先用瑞萨的RHUMI 套件Renesas Heterogeneous Unified Model Interface做一次转换把 tflite 变成可以直接编译进工程的 C 源码。RHUMI 会自动分析模型图按算子类型把网络拆成两部分能上 NPU 的算子卷积、全连接等→ 编译成 Ethos-U55 专用命令流运行时由 NPU 硬件执行不能上 NPU 的算子量化、反量化等预处理/后处理→ 保留为 CPU 代码由 TFLite-Micro 内核执行。转换输出位于converted/build/MCU/compilation/src/另外按子图分目录sub_0000__CPU_C_CODEGEN # CPU 子图模型输入侧 sub_0001__ARM_ETHOS_U55_C_CODEGEN # NPU 子图模型主体 sub_0002__CPU_C_CODEGEN # CPU 子图模型输出侧二、转换产物说明整张模型的推理被串成三个子图CPU 量化 → NPU 主体推理 → CPU 反量化。src/目录下的文件按职责分组1. 统一入口直接使用不需要改文件作用model.c / model.h把三个子图串成一次RunModel()调用并暴露输入/输出缓冲指针hal_entry.cRHUMI 附带的示例入口演示特征提取与调用模型的完整流程可作为移植参考2. NPU 子图sub_0001由 Vela 编译器生成文件作用sub_0001_model_data.c / .h模型权重数据约 6 MB 二进制的 C 数组展开体积最大的文件sub_0001_command_stream.c / .hNPU 命令流即 Ethos-U55 要执行的指令序列sub_0001_invoke.c / .hNPU 调用封装把权重、工作区arena和各张量内存地址打包成base_addrs[]调用 Ethos-U 驱动ethosu_invoke_v3()执行sub_0001_tensors.c / .h、sub_0001_io_data.c / .h张量信息表与 IO 缓冲区地址偏移并定义 NPU 工作区大小491,520 字节 ≈ 480 KB arena3. CPU 子图文件作用compute_sub_0000.c / .h、compute_sub_0002.c / .h量化/反量化等 CPU 算子的实现kernel_library_int.c / .h、kernel_library_utils.c / .hTFLite-Micro 内核库CPU 算子的运行时依赖ethosu_common.h张量描述结构TensorInfo定义三、接口与调用方式三个统一接口就够用了float*GetModelInputPtr_serving_default_input_1_0();/* 输入指针96×64 的 mel 特征缓冲 */voidRunModel(bool clean_outputs);/* 执行一次推理 */float*GetModelOutputPtr_StatefulPartitionedCall_1_0_70040();/* 输出指针各类别置信度 */RunModel()内部依次执行三个子图compute_sub_0000(compute_arena_sub_0000,input,quantized);/* CPUfloat 特征 → int8 */memcpy(npu_arenaoffset,quantized,6144);/* 把量化数据送入 NPU 输入区 */sub_0001_invoke(clean_outputs);/* NPU执行命令流 */compute_sub_0002(compute_arena_sub_0002,npu_out,output);/* CPUint8 → float 置信度 */应用层的用法就是填特征 → 跑一次 → 读置信度三步float*inputGetModelInputPtr_serving_default_input_1_0();memcpy(input,mel_patch,96*64*sizeof(float));/* 填一帧特征 */RunModel(false);/* 推理 */float*outGetModelOutputPtr_StatefulPartitionedCall_1_0_70040();/* 对 out 取最大值下标即类别值即置信度 */四、模型如何烧录与内存布局转换产物里有两个大块存放位置不同1. 模型权重约 6 MB——烧入 OSPI Flash 专用槽默认编译方式会把权重数组直接编进固件固件体积会撑到 6 MB 以上不可接受。本工程的做法先把sub_0001_model_data.c里的权重数组提取为二进制文件MODEL_AUDIO.BIN约 6 MB烧录时写入 OSPI Flash 的专用8 MiB 槽位地址0x80800000推理前做CRC 校验工程源码里把权重数组替换为一个指针常量让 NPU 直接从 OSPI 的 memory-mapped 窗口读取不占 SDRAM、不占固件空间constuint8_t*constsub_0001_model_data(constuint8_t*)0x80800000UL;模型更新走板载串口XMODEM-CRC 上传命令2 Mbps下载前自动停止推理会话上传后校验匹配再允许恢复推理。2. NPU 工作区 arena约 480 KB——必须放非缓存 SDRAMarena 是 NPU 推理时的可写工作区由 NPU 的 DMA 直接读写。放普通可缓存 RAM 时CPU 会从 D-Cache 读到陈旧数据导致结果错误。工程里把生成代码的 arena 定义加一段属性/* 转换产物原样 */__attribute__((aligned(16)))uint8_tsub_0001_arena[491520];/* 工程版放入非缓存 SDRAM 段 */__attribute__((section(.sdram_nocache),aligned(16)))uint8_tsub_0001_arena[491520];输入/输出缓冲float 特征与 float 置信度无 DMA 参与放普通内存即可。五、本工程的声音推理推理链路采集链路麦克风信号经 WM8960 编解码器以 48.828 kHz 立体声采集由 DMA 写入双缓冲再经重采样器转成 16 kHz 单声道供后续分析与识别共用。分段处理推理会话按5 秒一段切分。每段数据直接写入片内内存 PCM 缓冲约 160 KB位于 SDRAM段满即送推理——全程不写 SD 卡无卡也能运行。特征提取对每一段音频计算 mel 频谱图96×64 特征图作为模型输入。分段表决为提高鲁棒性每一段会切分为若干短片段分别推理再对结果做多数表决表决结果作为该段的最终类别段置信度取胜出类在判定为自身的短片段上的平均置信度。表决机制能显著降低单点误判带来的抖动。实时展示识别结果按狗叫 / 猫叫 / 鸟叫展示屏幕同时给出置信度百分比、已分析段数与失败段数每 5 秒刷新一次。六、UI单页推理界面界面保持单页、无跳转原则开机直接进入推理页左侧两个按钮START开始推理、STOP停止推理运行中再次触发无效会话防重入门控按钮置灰显示。右侧实时结果卡当前轮计时秒数、当前分类与置信度、已分析/失败段数。停止后计时定格显示本轮汇总总时长 HH:MM:SS、各段统计结果只保留在内存不写入 SD、不保存历史可立即开始下一轮。界面文案全部使用 ASCII 字符集配套字库裁剪为 ASCII 子集字库生成脚本自动完成。七、内存与缓存约定板级验证数据位置约束录音采集双缓冲内部 SRAM 的.ram_noinit_nocache段32 字节对齐I2S DMA 写、CPU 读必须绕过 D-Cache推理段 PCM 缓冲SDRAM 的.sdram_noinit段CPU 写 / CPU 读同线程推理无 DMANPU 工作区 arenaSDRAM 的.sdram_nocache段约 480 KBNPU 运行期读写不得放入 OSPI模型权重OSPI Flash memory-mapped0x80800000槽推理前 CRC 校验直接读取FAT 缓存缓冲内部 SRAM 的.ram_noinit_nocache段32 字节对齐SDHI DMAC 直接写入避免 CPU 读到陈旧缓存行八、工程代码结构与声音分类相关部分文件职责src/player_Thread_entry.c音频线程录音主循环、DSP、段 PCM 累积src/middleware/audio/audio_cmd_handler.c音频命令、5 秒段循环、推理会话状态机src/application/audio/model/audio_model_infer.cmel 特征提取与 Ethos-U 推理入口src/application/audio/model/ethosu_freertos.cNPU 互斥/信号量 FreeRTOS 钩子src/application/audio/model/ai_model_slot.c / ai_model_upload.cOSPI 模型槽校验与 XMODEM 上传src/application/audio/model/generated/Vela 编译器生成的 NPU 命令流不含权重数据src/application/core/app_bridge.c线程间命令/消息桥与推理会话门控src/application/ui/ui_manager.c、ui_page_infer.c单页推理 UI篇幅所限模型训练、量化与 Vela 编译流程未展开感兴趣的队伍欢迎交流。通过网盘分享的文件音频模型.zip链接: https://pan.baidu.com/s/1Wno2164rDZrxV4Ddf8Isng?pwdsiwq 提取码: siwq

相关新闻

【Spring Cloud Alibaba】Nacos(一)

【Spring Cloud Alibaba】Nacos(一)

【Spring Cloud Alibaba】Nacos0. Spring Cloud Alibaba 组件1. 什么是Nacos,它都能干什么?1.1 注册中心演变及其思想1.2 Nacos Discovery1.3 远程调用流程图1.4 一个微服务的流程1.4 常用注册中心对比2. Nacos Server部署3. Nacos Client搭建4. Nacos管…

2026/8/16 2:27:28 阅读更多 →
超越4位与5位!GLM-4.1V-9B-Thinking-8bit填补Apple Silicon多模态模型精度空白

超越4位与5位!GLM-4.1V-9B-Thinking-8bit填补Apple Silicon多模态模型精度空白

超越4位与5位!GLM-4.1V-9B-Thinking-8bit填补Apple Silicon多模态模型精度空白 【免费下载链接】GLM-4.1V-9B-Thinking-8bit 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/GLM-4.1V-9B-Thinking-8bit GLM-4.1V-9B-Thinking-8bit是一款专为Ap…

2026/8/16 3:19:07 阅读更多 →
完整指南:使用npm-g_nosudo配置无sudo的Node.js开发环境

完整指南:使用npm-g_nosudo配置无sudo的Node.js开发环境

完整指南:使用npm-g_nosudo配置无sudo的Node.js开发环境 【免费下载链接】npm-g_nosudo A shell script which will fix the problem where you want to stop using sudo for npm -g on Ubuntu. 项目地址: https://gitcode.com/gh_mirrors/np/npm-g_nosudo n…

2026/8/17 6:43:47 阅读更多 →

最新新闻

零基础搭建Qwen3.5-9B-w4a16-asym-torchao-v0.17.0运行环境:PyTorch 2.11与ZenDNN 6.0完整安装指南

零基础搭建Qwen3.5-9B-w4a16-asym-torchao-v0.17.0运行环境:PyTorch 2.11与ZenDNN 6.0完整安装指南

零基础搭建Qwen3.5-9B-w4a16-asym-torchao-v0.17.0运行环境:PyTorch 2.11与ZenDNN 6.0完整安装指南 【免费下载链接】Qwen3.5-9B-w4a16-asym-torchao-v0.17.0 项目地址: https://ai.gitcode.com/hf_mirrors/amd/Qwen3.5-9B-w4a16-asym-torchao-v0.17.0 本文是…

2026/8/18 16:15:38 阅读更多 →
Drawnix 架构深度解析:插件化白板框架的设计之美

Drawnix 架构深度解析:插件化白板框架的设计之美

Drawnix 架构深度解析:插件化白板框架的设计之美 【免费下载链接】drawnix 开源白板工具(SaaS),一体化白板,包含思维导图、流程图、自由画等。All in one open-source whiteboard tool with mind, flowchart, freehand…

2026/8/18 16:15:38 阅读更多 →
XCOM 2模组管理器新手完整指南:5步上手Alternative Mod Launcher告别启动崩溃

XCOM 2模组管理器新手完整指南:5步上手Alternative Mod Launcher告别启动崩溃

XCOM 2模组管理器新手完整指南:5步上手Alternative Mod Launcher告别启动崩溃 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gi…

2026/8/18 16:15:38 阅读更多 →
BlockHook 单元测试完全指南:从零搭建 Hook 代码的自动化测试体系

BlockHook 单元测试完全指南:从零搭建 Hook 代码的自动化测试体系

BlockHook 单元测试完全指南:从零搭建 Hook 代码的自动化测试体系 【免费下载链接】BlockHook Hook Objective-C blocks. A powerful AOP tool. 项目地址: https://gitcode.com/gh_mirrors/bl/BlockHook BlockHook 是一个基于 libffi 的 Objective-C Block …

2026/8/18 16:15:38 阅读更多 →
让AI控制电脑成为日常:UI-TARS Desktop零代码自动化工具完整上手攻略

让AI控制电脑成为日常:UI-TARS Desktop零代码自动化工具完整上手攻略

让AI控制电脑成为日常:UI-TARS Desktop零代码自动化工具完整上手攻略 【免费下载链接】UI-TARS-desktop The Open-Source Multimodal AI Agent Stack: Connecting Cutting-Edge AI Models and Agent Infra 项目地址: https://gitcode.com/GitHub_Trending/ui/UI-T…

2026/8/18 16:15:38 阅读更多 →
把Maya模型变成网页可用的glTF,只需5分钟:maya-glTF插件完整实战指南

把Maya模型变成网页可用的glTF,只需5分钟:maya-glTF插件完整实战指南

把Maya模型变成网页可用的glTF,只需5分钟:maya-glTF插件完整实战指南 【免费下载链接】maya-glTF glTF 2.0 exporter for Autodesk Maya 项目地址: https://gitcode.com/gh_mirrors/ma/maya-glTF 下午五点,你刚把一只贴好 StingrayPBS…

2026/8/18 16:14:36 阅读更多 →

日新闻

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 如果你还停留在"看网课 不停暂停 截图 …

2026/8/18 0:00:57 阅读更多 →
思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 你是不是也经历过这种时刻:设计稿里…

2026/8/18 0:00:58 阅读更多 →
华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, …

2026/8/18 0:00:59 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/18 9:15:35 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/18 9:06:28 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/18 9:04:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/17 18:54:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/17 18:55:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/17 18:55:55 阅读更多 →