STM32F103驱动LD3320语音识别模块
STM32F103驱动LD3320语音识别模块
- LD3320语音识别模块简介
- 模块引脚定义
- STM32F103ZET6开发板与模块接线
- 测试代码
- 实验结果
LD3320语音识别模块简介
基于 LD3320,可以在任何的电子产品中,甚至包括最简单的 51 作为主控芯片的系统中,轻松实现语音识别/声控/人机对话功能。为所有的电子产品增加 VUI(Voice User Interface)语音用户操作界面。
主要特色功能:
1.非特定人语音识别技术: 不需要用户进行录音训练可动态编辑的识别关键词语列表: 只需要把识别的关键词语以字符串的形式传送进芯片,即可以在下次识别中立即生效。比如,用户在 51 等 MCU 的编程中,简单地通过设置芯片的寄存器,把诸如“你好”这样的识别关键词的内容动态地传入芯片中,芯片就可以识别这样设定的关键词语了。
2.真正单芯片解决方案:不需要任何外接的辅助Flash 和RAM,真正降低系统成本。内置高精度A/D和D/A通道:不需要外接AD 芯片,只需要把麦克风接在芯片的AD 引脚上;可以播放声音文件,并提供550mW 的内置放大器。高准确度和实用的语音识别效果。
3.支持用户自由编辑50 条关键词语条:在同一时刻,最多在50 条关键词语中进行识别,终端用户可以根据场景需要,随时编辑和更新这50 条关键词语的内容。词组或短句,长度为不超过 10 个汉字或者 79 个字节的拼音串。
主要技术参数:
1.内置单声道mono 16-bitA/D 模数转换
2. 内置双声道stereo 16-bit D/A数模转换
3. 内置20mW 双声道耳机放大器输出
4. 内置550mW 单声道扬声器放大器输出
5. 支持并行接口或者SPI 接口
6. 内置锁相电路PLL,输入主控时钟频率为2MHz -34MHz
模块引脚定义
P1:MIC麦克风插座,板载了MIC咪头可不用接
P2:SPEAK喇叭输出
两组VCC均为3.3V,一组5V均可给模块供电,实际只需接一组即可
MO:SPI接口的MOSI
MI:SPI接口的MISO
SCK:SPI接口的时钟引脚
CS:SPI接口的片选引脚
RST:复位引脚,低电平有效
IRQ:中断输出引脚,低有效
WR:写允许共用SPI允许,低电平有效
STM32F103ZET6开发板与模块接线
STM32 | LD3320 |
---|---|
CS | PA4 |
IRQ | PB12 |
SCK | PA5 |
WR | PB13 |
MO | PA7 |
RST | PB15 |
MI | PA6 |
测试代码
用户只需修改几处代码,便可以增加新的指令。
1.LD2230_config.h 文件中,增加相应的识别码。(必须)
///识别码(客户修改处)
#define CODE_LSD 1 //流水灯
#define CODE_SS 2 //闪烁
#define CODE_AJCF 3 //按键触发
#define CODE_QM 4 //全灭
#define CODE_JT 5 //状态
2.LD2230.c 文件中,在 LD3320_main 函数中增加相印分支。(必须)
switch(nAsrRes) //对结果执行相关操作,客户修改{case CODE_LSD: //命令“流水灯”printf(" 流水灯 指令识别成功\r\n"); break;case CODE_SS: //命令“闪烁”printf(" 闪烁 指令识别成功\r\n"); break;case CODE_AJCF: //命令“按键触发”printf(" 按键触发 指令识别成功\r\n"); break;case CODE_QM: //命令“全灭”printf(" 全灭 指令识别成功\r\n");break;case CODE_JT: //命令“状态”printf(" 状态 指令识别成功\r\n");default:break;}
3.LD2230.c 文件中,在 LD_AsrAddFixed 函数中修改相应代码。(必须)DATA_A 为指令的个数, DATA_B 为指令的最大长度, sRecog 二维数组为相应指令的拼音集合(注意空格)。pCode 为指令识别码的集合。
#define DATE_A 5 //数组二维数值#define DATE_B 20 //数组一维数值//添加关键词,用户修改uint8 sRecog[DATE_A][DATE_B] = {"liu shui deng",\"shan shuo",\"an jian chu fa",\"quan mie",\"zhuang tai"\}; uint8 pCode[DATE_A] = {CODE_LSD, \CODE_SS, \CODE_AJCF, \CODE_QM, \CODE_JT \}; //添加识别码,用户修改
4.LD2230.c 文件中,在 LD3320_main 函数中修改相应代码。(建议)
///识别码(客户修改处)printf("1、流水灯\r\n"); printf("2、闪烁\r\n"); printf("3、按键触发\r\n"); printf("4、全灭\r\n"); printf("5、状态\r\n");
5.LD2230.c 文件中,在 Board_text 函数中修改相应代码。(建议)
static void Board_text(uint8 Code_Val)
{ switch(Code_Val) //对结果执行相关操作{case CODE_LSD: //命令“流水灯”Glide_LED();break;case CODE_SS: //命令“闪烁”Flicker_LED();break;case CODE_AJCF: //命令“按键触发”Key_LED();break;case CODE_QM: //命令“全灭”Off_LED();break;case CODE_JT: //命令“状态”Jt_LED();break;default:break;}
}
实验结果
通过STM32串口1通过USB转串口模块连接到电脑,打开串口助手软件,波特率设为115200,将显示以下内容,然后对着咪头说“流水灯”、“闪烁”、“按键触发”、“全灭”、“状态”命令词,串口助手显示出对应命令词识别成功。
相关文章:

STM32F103驱动LD3320语音识别模块
STM32F103驱动LD3320语音识别模块LD3320语音识别模块简介模块引脚定义STM32F103ZET6开发板与模块接线测试代码实验结果LD3320语音识别模块简介 基于 LD3320,可以在任何的电子产品中,甚至包括最简单的 51 作为主控芯片的系统中,轻松实现语音识…...
2023 最新可用Google镜像地址 长期更新
Google镜像说明 由于种种原因,国家还未开放Google搜索的使用。虽然可以通过某些技术手段实现访问,但是还是有一些同学需要借助Google搜索镜像才可以达到访问的目的;笔者特意搜集了一些2022年最新的Google搜索镜像供有需求的童鞋使用…...
MATLAB算法实战应用案例精讲-【优化算法】蝗虫优化算法(GOA)及其算法变种(附matlab和python代码实现)
目录 前言 算法原理 算法思想 GOA 算法的数学模型 迭代模型 算法流程...
数据结构与算法 顺序表、链表总结
文章目录顺序表1、顺序表的基本概念链表1 简介链表概念链表特点链表与数组的对比2 链表的类型分类链表循环单向链表1 简介概念2 数据存储和实现数据存储数据实现3 操作基本操作实现线性表(List):零个或多个数据元素的有限序列。在较复杂的线性…...
Nginx集群搭建-三台
1.使用root用户登录Linux服务器 2.创建用户 输入 adduser test 后回车 #test 为创建的用户 3.为创建的用户设置密码 输入 passwd test 后回车 输入两次密码 4.出现 passwd:所有的身份验证令牌已经成功更新。证明Linux新用户和密码创建成功 5.使用新用户test登录Linu…...

【算法】图的存储和遍历
作者:指针不指南吗 专栏:算法篇 🐾或许会很慢,但是不可以停下🐾 文章目录1. 图的存储1.1 邻接矩阵1.2 邻接表2. 图的遍历2.1 dfs 遍历2.2 bfs 遍历1. 图的存储 引入 一般来说,树和图有两种存储方式&#…...

文件如何批量复制保存在多个文件夹中
在日常工作中经常需要整理文件,比如像文件或文件夹重命名或文件批量归类,文件批量复制到指定某个或多个文件来中保存备份起来。一般都家最常用方便是手动一个一个去重命名或复制到粘贴到某个文件夹中保存,有没有简单好用的办法呢,…...

16N60-ASEMI高压MOS管16N60
编辑-Z 16N60在TO-220封装里的静态漏极源导通电阻(RDS(ON))为0.2Ω,是一款N沟道高压MOS管。16N60的最大脉冲正向电流ISM为48A,零栅极电压漏极电流(IDSS)为10uA,其工作时耐温度范围为-55~150摄氏度。16N60功耗…...
Open3D 多个点云配准(C++版本)
文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 多路配准(多个点云配准)是指在全局空间中对齐多个几何块的过程。输入的数据可以是点云或深度图像 P i P_i P...

java实现Hbase 增删改查
目录 一、新建一个maven工程 二、代码实现 2.1、配置hbase信息,连接hbase数据库 2.2、创建命名空间 2.3、创建表 2.4、删除表,删除之前要设置为禁用状态 2.5、添加数据 2.6、获取命令表空间 / tables列表 2.7、get方法查看表的内容 2.8、scan方法…...
1109. 航班预订统计 差分数组
1109. 航班预订统计 差分数组技巧适⽤于频繁对数组区间进⾏增减的场景 1.由数组a生成差分数组b{b[0]0,i0(或者b[0]a[0],i0)b[i]a[i]−a[i−1],i>01.由数组a生成差分数组b\left\{\begin{array}{l}b[0]0,i0(或者b[0]a[0],i0)\\ b[i]a[i]-a[i-1],i>0\end{array}\right. 1.由…...

图床搭建,使用typora上传
1. 准备gitee作为图床的仓库 新建仓库 准备仓库的私人令牌,后面配合使用 点击个人设置——》私人令牌 注意私人令牌,复制保存好,后面不能再看了 2. 准备PicGO,并进行相关配置 PicGo官方下载链接 下载安装好node.js,下载网址 安…...

低代码开发的优势是什么?
低代码开发的优势是什么?低代码开发这个概念这两年来经常出现在人们的视野中,市场对于低代码的需求也越来越庞大。 Gartner预测,到2025年,75%的大型企业将使用至少四种低代码/无代码开发工具,用于IT应用开发和公民开发计划。 可…...

Ip2Resion线上部署报数据越界及错误处理
上篇在本地测试调用Ip2Resigon解析行政区划 Ip2Region的Java本地实现运行正常,但部署到测试环境,抛出数组越界(java.lang.ArrayIndexOutOfBoundsException)异常。 环境信息 ip2Resion是2.7版本,对应文件后缀为 xdb。 …...

致敬我的C++启蒙老师,跟着他学计算机编程就对了 (文末赠书5本)
致敬我的C启蒙老师,跟着他学计算机编程就对了 摘要 讲述了一个故事,介绍了一位良师,一段因C而续写的回忆,希望对各位看官有所帮助和启发。 文章目录1 写在前面2 我的C启蒙老师3 谈谈老师给我的启发4 友情推荐5 文末福利1 写在前面…...

CSS中的伪元素和伪类
一直被伪类和伪元素所迷惑,以为是同一个属性名称,根据CSS动画,索性开始研究a:hover:after,a.hover:after的用法。 伪元素 是HTML中并不存在的元素,用于将特殊的效果添加到某些选择器。 对伪元素的描述 伪元素有两…...
逻辑优化基础-rewrite
简介 逻辑综合中的rewrite算法是一种常见的优化算法,其主要作用是通过对逻辑电路的布尔函数进行等效变换,从而达到优化电路面积、时序和功耗等目的。本文将对rewrite算法进行详细介绍,并附带Verilog代码示例。 一、算法原理 rewrite算法的…...

案例27-单表从9个更新语句调整为2个
目录 一:背景介绍 二:思路&方案 三:过程 1.项目结构 2.准备一个普通的maven项目,部署好mysql数据库 3.在项目中引入pom依赖 5.编写MyBitis配置文件 6.编写Mysql配置类 7.编写通用Update语句 8.项目启动类 四:总…...
Wordpress paid-memberships-pro plugins CVE-2023-23488未授权SQLi漏洞分析
目录 1.漏洞概述 2.漏洞等级 3.调试环境 4.漏洞代码 5 POC 1.漏洞概述 WordPress插件paid-memberships-pro版本<2.9.8中,容易受到REST路由“/pmpro/v1/order”的“code”参数中未验证的SQL注入漏洞的影响。攻击者可进行SQLi盲注,从而获取数据库权限。 CVE:...
【JavaWeb篇】JSTL相关知识点总结
目录 为什么会有JSTL? 什么是JSTL? 如何理解JSTL标准标签库呢? 如何使用JSTL? 第一步:引入JSTL标签库对应的jar包。 第二步:在JSP中引入要使用标签库。(使用taglib指令引入标签库。&#x…...

C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...

MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...

STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...

页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...

网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...

力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...