1024 CSDN 程序员节-知存科技-基于存内计算芯片开发板验证语音识别

news2024/11/26 2:45:58

前言

在今年的 CSDN 程序员节上,我参与了这次知存科技举办的一个 AI Workshop 小活动——“基于存内计算芯片开发板验证语音识别”,并且有幸成为完成任务的学习者之一XD。上一次参与类似的活动是算能公司举办的“千校万里行”AIGC 大模型编译部署活动,感觉虽然只是简单的烧录现成代码,经历这几次活动后 AI 小白也能有一个小小的成就感。趁着这股新鲜感还没冷却,我打算写一篇博文来记录下这次活动的一些经历,也供后续参与的童鞋参考~

任务目标

AISHELL-WakeUp-1 数据集是中英文唤醒词语音数据库,命令词为“你好,米雅” “hi, mia” ,语音数据库中唤醒词语音 3936003 条,1561.12 小时,邀请 254 名发言人参与录制。录制过程在真实家居环境中,设置 7 个录音位,使用 6 个圆形 16 路 PDM 麦克风阵列录音板做远讲拾音(16kHz,16bit)、1 个高保真麦克风做近讲拾音(44.1kHz, 16bit)。此数据库可用于声纹识别、语音唤醒识别等研究使用。

本 demo 以该数据集为例,用不同网络结构展示模型训练及移植过程。

我们最终想要通过语音“你好,米雅”唤醒开发板。具体步骤如下:

  1. 训练得到模型,并转换为知存科技开发板相应格式模型。
  2. 工具链编译模型,得到模型权重表。
  3. 烧写模型权重。
  4. 烧写代码。
  5. 成功运行后,当我们对着开发板说出“你好,米雅”时,开发板就会通过串口发送“已唤醒”的信息。

开发板信息如下:

WTMDK2101-X3 是针对 WTM2101 AI SOC 设计的评估板,包含:

(1) WTM2101 核心板,即我们的存算芯片。

(2) 和 I/O 板:WTM2101 运行需要的电源、以及应用 I/O 接口等.

1697902980727

任务步骤

  1. 首先,本机上下载训练数据和训练代码并运行。这样我们就得到要烧录到知存开发板上的对应格式的模型。

1697903539984

​ 这一步结束后,我们可以得到以下模型+运行代码:

image-20231022000006828

  1. 将代码放入 docker 工具链环境中,编译运行,得到输出的模型权重表:

    image-20231022000134927

    image-20231022000148379

  2. 开发板连接好跳线帽、数据线如下图:

    image-20231022000351823

    image-20231022000432949

  3. 通过烧写工具 WitinProgramTool 将模型权重烧录到开发板上:

    image-20231022000517615

  4. 通过知存 IDE Witmem Studio,烧录提供好的工程代码。

    image-20231022000803161

    14169562a32b5d2f8e11d1bcc0cd9b5

  5. 打开串口调试助手(波特率115200,数据位8,停止位1,无校验位)。若成功运行,此时当我们对着开发板说出“你好,米雅”或 “Hi, Mia” 时,串口便会输出“已唤醒” 的提示信息。

    1697904883940

总结

对我个人而言,我接触 AI 非常少,只在前后端、嵌入式领域有过一些涉猎。因此,这次活动虽然在 AI 领域前辈来看可能是比较轻松的一个小任务,不过这份成就感让我很满足,我也大致能理解各个流程的作用。

从今年5月的 ST 峰会上大力推广的边缘AI,7月 RV 峰会上百家争鸣的 AI 应用,这两次算能和知存科技的 AI 硬件体验活动,我逐渐也能感觉到 AI (特别是当下的 AIGC)对嵌入式领域同样不容小觑的影响。现阶段自己的学习还停留在一些简单的控制,RTOS 这些。也许加深一些学习后,未来也可能在嵌入式深度学习领域有所学习~

3ef355ca5f80fb77b87451e4de36d87

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1122850.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

logging日志改造---自定义参数传递到格式中

目录 一:需求二:实现方式三:存在的问题3.1: 问题描述3.2: 源码分析3.3: 解决方案 四:相关链接 一:需求 需求:将自定义的参数,放在日志的指定格式中。 二:实现方式 例如&#xff1…

三维模型表面积计算方法

【版权声明】 本文为博主原创文章,未经博主允许严禁转载,我们会定期进行侵权检索。 更多算法总结请关注我的博客:https://blog.csdn.net/suiyingy,或”乐乐感知学堂“公众号。 本文章来自于专栏《Python三维模型处理基础》的系列文…

【RocketMQ系列十】RocketMQ的核心概念说明

您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。 💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精…

【计网 DNS】计算机网络 DNS协议详解:中科大郑烇老师笔记 (六)

目录 0 引言1 DNS概述1.1 定义1.2 DNS域名结构1.2 域名解析步骤 🙋‍♂️ 作者:海码007📜 专栏:计算机四大基础专栏📜 其他章节:网络快速入门系列、计算机网络(一)、计算机网络&…

初始Redis 分布式结构的发展演变

目录 Redis的特点和使用场景 分布式系统的引入 单机系统 分布式系统 应用服务器的增多(处理更多的请求) 数据库读写分离(数据服务器的增多) 引入缓存 应对更大的数据量 业务拆分:微服务 Redis的特点和使用场景 我们先来…

使用 Rust 和 cURL 库下载程序

以下是一个使用 Rust 和 cURL 库的下载器程序,用于下载 图像。此程序使用了 https://www.duoip.cn/get_proxy 的代码。 extern crate curl; ​ use std::io::{self, Read}; use std::error::Error; ​ fn main() {let url "https://www.baidu.com";let …

04-HotSpot 垃圾收集器

HotSpot 垃圾收集器 HotSpot 虚拟机提供了多种垃圾收集器,每种收集器都有各自的特点,虽然我们要对各个收集器进行比较,但并非为了挑选出一个最好的收集器。我们选择的只是对具体应用最合适的收集器。 新生代垃圾收集器 Serial 垃圾收集器&…

如何将表格内容拆分至多列内容

如何将表格内容拆分至多列内容 需求示例步骤1.找到“分列”2.选择“分隔符号(D)”3.设置分隔符号4.完成5.分隔后的内容 总结 需求 表格的某一列里有很多内容,想将该列内容拆分到多列里,并能准确的显示拆分后的每一列内容 示例 …

【Java 进阶篇】Java XML约束:确保数据一致性和有效性

XML(可扩展标记语言)是一种常用的数据交换格式,用于存储和交换数据。然而,为了确保数据的一致性和有效性,通常需要定义XML约束。XML约束是一种规则集,定义了XML文档的结构、元素、属性和数据类型。本篇博客…

RobotRules 和UserAgent来下载文件

以下是一个使用WWW::RobotRules和LWP::UserAgent来下载文件的Perl程序: #!/usr/bin/perl ​ use strict; use warnings; use WWW::RobotRules; use LWP::UserAgent; use HTTP::Request; use HTTP::Response; ​ my $url http://www.people.com.cn/; my $agent LW…

结构体学习

struct是结构体关键字 我们用C语言中通常都是用关键字来定义类型变量。例如我们的整型变量,int book;是用整型关键字定义出来的。同样的,struct book同样是一个类型,不过我们叫他结构体。我认为的结构体的作用,无外乎是将一些毫…

APU的Vsense引脚的作用

开关电源PCB布局注意事项 开关电源PCB布线注意事项 一.Sense电压检测(FB) “Sense+”和“Sense-”,就是四线制中的电压检测线,high-sense 和low-sense分别连接远端负载的正负极,监测电源电压,抵消长距离传输线引起的电压损耗。这两个Sense接线端的作用简而言之就是调整Ou…

centos如何根据端口号查询程序路径

centos如何根据端口号查询程序路径 如果是半路接受的应用,上个人只给你说了程序的端口号,别的都没,那怎么找程序的路径哪?一是给上上个人要,二是自己找(我是自己找的) 小白教程,一…

链表的中间结点-力扣

1、题目描述 给你单链表的头结点 head ,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台备战技术面试?力扣提供海…

【STM32】标准库与HAL库对照学习系列教程大全

【STM32】标准库与HAL库对照学习系列教程大全 一、前言二、准备工作三、基础篇四、进阶篇五、特别篇六、外设篇 一、前言 前言:开始工作后,学习的时间变少了很多,但是今年的1024节,还是打算送个福利给大家,将之前的STM…

PR BeatEdit 节奏卡点神器 的报错 beat detection error: IBT failed 和解决路径

环境:DELL Latitude 笔记本 16G内衬,Win10,PR 2021,BeatEdit Pr 2.1.003 安装PR BeatEdit 节奏卡点神器没有问题,可以调出。 导入音频时报错:beat detection error: IBT failed 根据 BeatEdit for Premi…

【Unity程序技巧】 资源加载管理器

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

ScrapeKit 和 Swift 编写程序

以下是一个使用 ScrapeKit 和 Swift 编写的爬虫程序,用于爬取 图片。同时,我们使用了proxy 这段代码来获取代理。 import ScrapeKit ​ class PeopleImageCrawler: NSObject, ScrapeKit.Crawler {let url: URLlet proxyUrl: URL ​init(url: URL, proxy…

概率论_概率公式中的分号(;)、逗号(,)、竖线(|) 及其优先级

目录 1.概率公式中的分号(;)、逗号(,)、竖线(|) 2.各种概率相关的基本概念 2.1 联合概率 2.2 条件概率(定义) 2.3 全概率(乘法公式的加强版) 2.4 贝叶斯公式 贝叶斯定理的公式推导 1.概率公式中的分号(;)、逗号(,)、竖线(|) ; 分号代表前后是两类…

uview1.0部分机型u-input组件禁用后无法触发click事件

最近,线上的一个 App 收到用户反馈,输入框禁用状态下点击无法拉起模态框。找了一下身边可用机型进行了测试,起初所有机型都没有复现这个问题,突然有一天 Redmi K30S Ultra 出现了异常,点击输入框无法触发点击事件&…