上一章给大家介绍了SYN6288语音识别模块的使用方法,它的作用是播报声音信息,所以这章教大家使用LD3320语音识别模块,让毕设能够“听懂”我们在说什么。

下图是我经常使用的一款LD3320语音识别模块,这个模块与STM32之间是通过SPI总线来进行通讯的(不懂SPI的同学,可以在B站搜索“野火STM32”去补补课),本公众号的只是教会大家使用模块,所以关于SPI我就不细说了。建议感兴趣的同学,可以说服舍友集资买一块研究一下,模块淘宝链接已放在文章底部的资料链接里。

如图,LD3320语音识别模块总共有8个引脚,分别是3.3V、GND、负责协调通讯的CLK时钟引脚、数据输出的DO引脚、数据输入的DI引脚、片选CS、RST和IRQ。大家按照资料链接里的接线图,用杜邦线将这些引脚与STM32一一连接起来即可。

接下来讲解STM32F103C8T6与LD3320语音识别模块的通讯的代码。

delay_init( )  初始化延时函数,执行这条语句后,延时效果才会准确。

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2)设置中断优先级分组。

LD3320_GPIO_Init( ) 初始化与LD3320模块相连接的GPIO口;

LD3320_EXTIX_Init( ) 初始化PB8引脚外部中断;执行完这行代码后,LD3320接收到音频信号时,就会通过PB8通知STM32。

LD3320_Reset( ) 复位LD3320模块。第12行代码到第16行代码都不需要改动。

ASR_Status变量是当前语音识别的状态,当识别状态处于LD_ASR_FOUNDOK时(第35行),说明识别结束,运行第37行的LD3320_GetResult( )函数,获取识别结果赋值给变量nASR_Res,第38行的User_Modification( )函数拿着这个识别结果去执行相应的自定义操作。

这里说一下,LD3320只能识别我们设定好的关键词语句,每个关键词语句对应一个识别码(也就是上方红色字体的识别结果),当语音识别模块识别到某个关键词语句时,其对应的识别码将存入内部寄存器中,供第37行的LD3320_GetResult( )获取。关键词语句是我们在代码中用中文拼音的方式去设置的,那我们在哪里设置这些关键语句和关键语句对应的识别码呢?下图所示,在LDChip.c的第204行的LD_AsrAddFixed( )函数内,二维数组sRecog存放识别关键词语句拼音,DATE_A设置关键词语句拼音的条数为14条,从“xiao jie”到“hou tui”总共14条。DATE_B 设置每条关键词语句拼音最大长度(包括空格)为20,(例:"xiao jie"长度为8)。pCode存放的则是每条关键词语句的识别码,"xiao jie"对应识别码是CODE_CMD,"ni hao ya"对应识别码是CODE_DMCS,"zai gan ma ne"对应识别码是CODE_CSWB,"kai deng"对应识别码是CODE_1KL1,以此类推,往下一一对应。

而识别码其实是一个个十六进制数,如下图所示。

所以我们拿到代码后,只要在上图的sRecog数组里增加自己想要识别的关键词语句的中文拼音A,然后在pCode数组里增加一个识别码B,再给识别码B宏定义一个与其他识别码不同的十六进制数C就可以了(DATE_A和DATE_B也要做相应调整),做完这些操作,将代码编译烧录到STM32中,LD3320就能识别增加的关键词语句并将对应的识别码存放在寄存器中,供上面提到的main.c函数中的LD3320_GetResult( )获取。至此,语音识别功能已完成,剩下的就是在main.c函数中的User_Modification( )里执行识别码相应的自定义操作,如下图所示。

(在每个case语句下面编写自定义操作的代码)

下一章,我将通过录制视频的方式,演示如何将SYN6288和DHT11的代码移植到LDD3320代码中,实现通过语音命令 “当前温湿度是多少” 就可以播报出当前温湿度的数值。(我会最先发在公众号,有兴趣的同学可以关注)

资料链接:

https://pan.baidu.com/s/1xhlMoWmeggROu-AThwf9lQ

提取码:pqr4


第三章 LD3320语音识别模块的使用相关推荐

  1. LD3320语音识别模块开发

    达者为先  师者之意 LD3320语音识别模块开发 1 LD3320语音识别模块基本参数 1.1 基本参数 1.2 识别原理 1.3 解决方案: 2 LD3320语音识别模块二次开发 2.1 源码修改 ...

  2. 基于Arduino IDE开发的LD3320语音识别模块

    基于Arduino的LD3320语音识别模块设计详解 文章目录 基于Arduino的LD3320语音识别模块设计详解 前言 一.LD3320驱动编写 step 1.0 使用Arduino的SPI库,通 ...

  3. LD3320语音识别模块分析

    LD3320语音识别模块分析   LD3320是非特定人语音识别芯片,即语音声控芯片.最多可以识别50条预先内置的指令. 识别原理  声音分帧:   声音是一种波,常见的mp3等格式都是压缩格式,必 ...

  4. 基于FPGA的LD3320语音识别模块驱动设计

    一.设计要求 以FPGA为控制核心,接收语音控制信号和识别控制信息: 通过继电器完成对热水器.加湿器.空调等三个家用电器的控制: 二次升级要求:使用无线模块完成对热水器.加湿器.空调等三个家用电器的控 ...

  5. 单片机设计:基于stm32智能语音识别蓝牙音响(ld3320语音识别模块+mp3模块+喇叭+点阵屏+OLED+蓝牙+手机app)

    单片机设计:基于stm32智能语音识别蓝牙音响(ld3320语音识别模块+mp3模块+喇叭+点阵屏+OLED+蓝牙+手机app) 一.主要功能: 1.手机app播放内存卡的音乐.同时点阵屏随音乐进行跳 ...

  6. LD3320语音识别模块+MP3-TF-16P模块实现语音交互功能

    LD3320语音识别模块+MP3-TF-16P模块实现语音交互功能

  7. STM32F103C8T6 LD3320语音识别模块非特定识别人声 离线控制 智能家居 开发板

    STM32F103C8T6 LD3320语音识别模块非特定识别人声 离线控制 智能家居 开发板 STM32F103C8T6 LD3320语音识别模块非特定识别人声 离线控制 智能家居 开发板 测试单片 ...

  8. LD3320语音识别模块:LDV7模块使用详解

    喜欢请关注微信公众号:嵌入式从0到1 公众号内容面向在校大学生.电子爱好者.嵌入式工程师: 涉及电子制作.模块使用.单片机技术.物联网相关知识分享: 软硬件全栈工程师,玩模块,学硬件,带你从0走到1 ...

  9. arduino驱动LD3320语音识别模块

    LD3320: LD3320 是一颗基于非特定人语音识别(SI-ASR:Speaker-Independent Automatic  SpeechRecognition)技术的语音识别/声控芯片.提供 ...

最新文章

  1. Do a test write by windows live writer
  2. SQLSERVER数据库经常置疑的原因
  3. CTFshow php特性 web133
  4. android -上传文件到服务器
  5. Python | 程序以字符串长度打印单词
  6. 对应的ctrl_取消单元格合并,对空白单元格填充数据,学会Ctrl+Enter五秒搞定
  7. 两个链表第一个公共节点
  8. Spring学习总结(23)——Spring Framework 5.0 新特性
  9. WEB三大攻击之—SQL注入攻击与防护
  10. ENVI5.3.1使用Landsat 8影像进行监督分类实例操作
  11. 什么是 VXLAN 技术?
  12. Java9之后显示已过时newInstance()方法
  13. Unity UGUI坐标与世界坐标转换
  14. 【PS】抠图,通道抠图
  15. 1- mongoDB安装及基础
  16. 区块链会计案例_区块链会计行业 区块链会计应用案例
  17. tar.gzh和zip的区别
  18. tpc服务器做系统,什么是TPC-C,它为什么会退出历史舞台?
  19. Mysql中查询连续一段时间内统计数据
  20. 微信小程序开发—消息推送

热门文章

  1. 【洛谷】P1425 小鱼的游泳时间
  2. C/C++语言100题练习计划 84——分数线划定(结构体+快排函数)
  3. 微信公众号 Cookie
  4. 朋友圈终于能斗表情包了,会发表情包您就多发点!
  5. Maxcompute sql 练习题
  6. Line营销机器人2019版
  7. 解读ConnectBot-1 telnet、ssh常识
  8. 地图符号库的制作方法-s52符号显示库中的矢量符号描述语言
  9. 从零接入微信公众号(Java实现 附源码)
  10. 宝贝流量高转化率低怎么办,如何提高宝贝转化率