当前位置: 首页 > news >正文

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

前言

在今年的 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

相关文章:

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

前言 在今年的 CSDN 程序员节上,我参与了这次知存科技举办的一个 AI Workshop 小活动——“基于存内计算芯片开发板验证语音识别”,并且有幸成为完成任务的学习者之一XD。上一次参与类似的活动是算能公司举办的“千校万里行”AIGC 大模型编译部署活动&a…...

【备考网络工程师】如何备考2023年网络工程师之错题集篇(3)

一、写在前面 其实做模拟或真题时候,总是会在关键的地方丢分,因此我也冷静下来思考一下,首先我们对做过的题涉及的知识进行一个梳理,其次就是再针对知识去做一些题目,这次只考了38分,表示很伤心&#xff0…...

密码学-SHA-1算法

实验七 SHA-1 一、实验目的 熟悉SHA-1算法的运行过程,能够使用C语言编写实现SHA-1算法程序,增 加对摘要函数的理解。 二、实验要求 (1)理解SHA-1轮函数的定义和工作过程。 (2)利用VC语言实现SHA- 1算法。 (3)分析SHA- 1算法运行的性能。 三、实验…...

Android View拖拽/拖放DragAndDrop自定义View.DragShadowBuilder,Kotlin(2)

Android View拖拽/拖放DragAndDrop自定义View.DragShadowBuilder,Kotlin(2) import android.graphics.Canvas import android.graphics.Point import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.util…...

翻页视图ViewPager

ViewPager控件允许页面在水平方向左右滑动,就像翻书、翻报纸,Android提供了已经分装好的控件。对于ViewPager来说,一个页面就是一个项(相当于ListView的一个列表项),许多页面组成ViewPager的页面项。 List…...

【可视化Java GUI程序设计教程】第4章 布局设计

4.1 布局管理器概述 右击窗体,单击快捷菜单中的Set Layout 4.1.2 绝对布局(Absolute Layout) 缩小窗口发现超出窗口范围的按钮看不见 Absolute Layout 4.1.2 空值布局(Null Layout) 4.1.3 布局管理器的属性和组件布…...

Elasticsearch配置文件

一 前言 在elasticsearch\config目录下,有三个核心的配置文件: elasticsearch.yml,es相关的配置。jvm.options,Java jvm相关参数的配置。log4j2.properties,日志相关的配置,因为es采用了log4j的日志框架。这里以elasticsearch6.5.4版本为例,并且由于版本不同,配置也不…...

运维:mysql常用的服务器状态命令

目录 1、查询当前服务器运行的进程 2、查询最大链接数 3、查询当前链接数 4、展示当前正在执行的sql语句 5、查询当前MySQL当中记录的慢查询条数 6、展示Mysql服务器从启动到现在持续运行的时间 7、查询数据库存储占用情况 8、查询服务器启动以来的执行查询的总次数 9…...

k8s中kubectl陈述式资源管理

1、 理论 1.1、 管理k8s核心资源的三种基本方法 : 1.1.1陈述式的资源管理方法: 主要依赖命令行工具kubectl进行管理 1.1.1.1、优点: 可以满足90%以上的使用场景 对资源的增、删、查操作比较容易 1.1.1.2、缺点: 命令冗长&…...

11 个最值得推荐的 Windows 数据恢复软件

您可能已经尝试过许多免费的恢复程序,但它们都不起作用,对吧?这就是您正在寻找最好的数据恢复软件的原因。 个人去过那里。根据个人的经验,大多数免费软件并不能解决这个问题。有时,当个人在 PC 上运行恢复程序时&…...

Docker从入门到实战

Docker基本概念 1、解决的问题 1、统一标准 应用构建 ○ Java、C、JavaScript ○ 打成软件包 ○ .exe ○ docker build … 镜像应用分享 ○ 所有软件的镜像放到一个指定地方 docker hub ○ 安卓,应用市场应用运行 ○ 统一标准的 镜像 ○ docker run 容器化技术 …...

UE4 材质实操记录

TexCoord的R通道是从左到右的递增量,G通道是从上到下的递增量,R通道减去0.5,那么左边就是【-0.5~0】区间,所以左边为全黑,Abs取绝对值,就达到一个两边向中间的一个递减的效果,G通道同理&#xf…...

http协议和Fiddler

文章目录 一、http协议的报文结构1.1http请求和http响应之间的区别1.2http请求1.2.1URL1.2.2方法1.2.3请求头1.2.3.1Host1.2.3.2Content-Length、Content-Type1.2.3.3User-Agent(简称UA)1.2.3.4Referer1.2.3.5Cookie 1.3http响应1.3.1响应状态码1.3.2响应头1.3.2.1Content-Leng…...

李宇航

该篇文章仅用作能直接在百度搜索到我的csdn,进入我的主页,没有实际意义. 进入李宇航博客方法 通过百度搜索"李宇航" 链接: https://blog.csdn.net/llllyh812 1.电脑端进入方法 输入网址链接: https://blog.csdn.net/llllyh812 或者 进入csdn主页,搜索"李宇…...

【JAVA学习笔记】38 - 单例设计模式-静态方法和属性的经典使用

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter10/src/com/yinhai/final_ 一、什么是设计模式 1.静态方法和属性的经典使用 2.设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格以及解决问题的思考方式。设计模式就像是…...

m1 安装 cocoapods

其实最终解决问题很简单,麻烦的是如果找到解决问题的答案。 前提条件: 命令行工具,不能以rosetta方法打开。 首先安装homebrew 这里不多说了,自行解决。 使用brew安装cocoapods brew install cocoapods, pod --ver…...

【大数据】Kafka 实战教程(一)

Kafka 实战教程(一) 1.Kafka 介绍1.1. 主要功能1.2. 使用场景1.3 详细介绍1.3.1 消息传输流程1.3.2 Kafka 服务器消息存储策略1.3.3 与生产者的交互1.3.4 与消费者的交互 2.Kafka 生产者3.Kafka 消费者3.1 Kafka 消费模式3.1.1 At-most-once(…...

求臻医学:肺癌患者就诊指南及基因检测意义

2023年国家癌症中心公布的最新的数据显示,中国癌症新发病例数前十的癌症分别是:肺癌82万,结直肠癌56万,胃癌48万,乳腺癌42万,肝癌41万,食管癌32万,甲状腺癌22万,胰腺癌12…...

【项目管理】项目中如何进行风险管理

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…...

【算法题】得到K个半回文串的最小修改次数

题目: 给你一个字符串 s 和一个整数 k ,请你将 s 分成 k 个 子字符串 ,使得每个 子字符串 变成 半回文串 需要修改的字符数目最少。 请你返回一个整数,表示需要修改的 最少 字符数目。 注意: 如果一个字符串从左往…...

C# 通过IP获取Mac地址(ARP)

C# 通过IP获取Mac地址 [DllImport("Iphlpapi.dll")] private static unsafe extern int SendARP(Int32 dest, Int32 host, ref Int32 mac, ref Int32 length);[DllImport("Ws2_32.dll")] private static extern Int32 inet_addr(string ip);public static…...

【QT】信号和槽

一、前置示例代码 main.cpp #include "widget.h"#include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv); // 应用程序对象a&#xff0c;在Qt中&#xff0c;应用程序对象&#xff0c;有且仅有一个。Widget w; // 窗口对…...

有话则长,无话则短

有话则长&#xff0c;无话则短...

云台/稳定器/无人机姿态控制之欧拉角与四元数控制优缺点分析

基于欧拉角的姿态控制简述&#xff1a; 通过陀螺仪数据解算出姿态&#xff1a;pitch,roll,yaw(相对航向)&#xff0c;根据目标 姿态:dst_pitch,dst_roll,dst_yaw计算出误差姿态pitch_err,roll_err,yaw_err。将误差姿态转换为目标速度e_pitch_rate,e_roll_rate,e_yaw_rate。然后…...

Go 工具链详解(六):依赖管理神器

go mod 是 Golang 的官方依赖管理工具&#xff0c;从 Go 1.11 版本开始引入。go mod 使用一种被称为模块&#xff08;modules&#xff09;的方式来管理依赖&#xff0c;每个模块都包含了一组 Golang 包。一个 Go 程序可以由多个模块组成&#xff0c;每个模块都可以有自己的 go.…...

C语言解决约瑟夫环问题

约瑟夫环问题是一个经典的数学问题&#xff0c;它的描述如下&#xff1a;有n个人围成一圈&#xff0c;从第1个人开始报数&#xff0c;数到第m个人出列&#xff0c;然后从出列的下一个人开始重新报数&#xff0c;数到第m个人出列&#xff0c;如此循环&#xff0c;直到最后一个人…...

6.6 Elasticsearch(六)京淘项目改造

文章目录 1.项目准备2.基础配置2.1 添加pom.xml依赖2.2 yml配置es服务器地址列表 3.具体实现3.1 item实体类封装3.2 添加接口3.3 SearchController 4.search.jsp界面4.1 搜索内容展示4.2 高亮内容样式设置4.3 搜索框内容回填4.4 添加上下页按钮 1.项目准备 我们切换回到此前的…...

Socks5代理:数字化时代的技术支柱

随着数字化时代的到来&#xff0c;技术不仅改变了我们的日常生活&#xff0c;还重新定义了商业、通信、娱乐和全球互联。在这一浪潮中&#xff0c;Socks5代理技术崭露头角&#xff0c;成为跨界电商、爬虫数据分析、企业出海和游戏体验的关键推动力。这项技术不仅在实现数字化愿…...

基本微信小程序的汽车租赁公司小程序

项目介绍 任何系统都要遵循系统设计的基本流程&#xff0c;本系统也不例外&#xff0c;同样需要经过市场调研&#xff0c;需求分析&#xff0c;概要设计&#xff0c;详细设计&#xff0c;编码&#xff0c;测试这些步骤&#xff0c;基于Java语言、微信小程序技术设计并实现了汽…...

Leetcode刷题详解——搜索插入位置

1. 题目链接&#xff1a;35. 搜索插入位置 2. 题目描述&#xff1a; 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。…...