第三章 LD3320语音识别模块的使用

上一章给大家介绍了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


 

  • 44
    点赞
  • 323
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 32
    评论
LD3320识别芯片介绍: LD3320 是一颗基于非特定人语音识别 (SI-ASR:Speaker-Independent Automatic Speech Recognition)技术的语音识别/声控芯片。提供了真正的单芯片语音识别解决方案。 LD3320 芯片上集成了高精度的 A/D 和 D/A 接口,不再需要外接辅助的Flash 和 RAM,即可以实现语音识别/声控/人机对话功能。并且,识别的关键词语列表是可以动态编辑的。 基于 LD3320,可以在任何的电子产品中,甚至包括简单的 51 作为主控芯片的系统中,轻松实现语音识别/声控/人机对话功能。为所有的电子产品增加 VUI(Voice User Interface)语音用户操作界面。 LD3320语音识别模块视频演示: 语音识别LD3320模块主要特色功能: 非特定人语音识别技术:不需要用户进行录音训练 可动态编辑的识别关键词语列表:只需要把识别的关键词语以字符串的形式传送进芯片,即可以在下次识别中立即生效。比如,用户在 51 等 MCU 的编程中,简单地通过设置芯片的寄存器,把诸如“你好”这样的识别关键词的内容动态地传入芯片中,芯片就可以识别这样设定的关键词语了。 真正单芯片解决方案:不需要任何外接的辅助 Flash 和 RAM,真正降低系统成本。 内置高精度 A/D和D/A通道:不需要外接 AD 芯片,只需要把麦克风接在芯片的AD 引脚上;可以播放声音文件,并提供 550mW 的内置放大器。 高准确度和实用的语音识别效果。 支持用户自由编辑 50 条关键词语条:在同一时刻,最多在 50 条关键词语中进行识别,终端用户可以根据场景需要,随时编辑和更新这 50 条关键词语的内容。 LD3320与Arduino实物连接图: 相关链接:LD3320 在Arduino上的应用 LD3320模块主要技术参数内置单声道mono 16-bit A/D 模数转换 内置双声道stereo 16-bit D/A 数模转换 内置 20mW 双声道耳机放大器输出 内置 550mW 单声道扬声器放大器输出 支持并行接口或者 SPI 接口 内置锁相电路 PLL,输入主控时钟频率为 2MHz - 34MHz 工作电压:(VDD: for internal core) 3.3V 48pin 的 QFN 7*7 标准封装 省电模式耗电:1uA 内置单声道mono 16-bit A/D 模数转换 内置双声道stereo 16-bit D/A 数模转换 内置 20mW 双声道耳机放大器输出 内置 550mW 单声道扬声器放大器输出 支持并行接口或者 SPI 接口 内置锁相电路 PLL,输入主控时钟频率为 2MHz - 34MHz 工作电压:(VDD: for internal core) 3.3V 48pin 的 QFN 7*7 标准封装 省电模式耗电:1uA LD3320示例程序截图(具体的演示详见附件内容): 技术文档截图: 实物购买链接:https://www.waveshare.net/shop/LD3320-Board.htm

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式实验社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值