LD3320A Voice Recognition Module
|
|
|
|
|
|
产品概述
- LD3320 是一颗基于非特定人语音识别(SI-ASR:Speaker-Independent Automatic Speech Recognition)技术的语音识别/声控芯片。提供了真正的单芯片语音识别解决方案。LD3320 芯片上集成了高精度的 A/D 和 D/A 接口,不再需要外接辅助的 Flash 和 RAM,即可以实现语音识别/声控/人机对话功能。并且,识别的关键词语列表是可以动态编辑的。基于 LD3320,可以在任何的电子产品中,甚至包括最简单的 51 作为主控芯片的系统中,轻松实现语音识别/声控/人机对话功能。为所有的电子产品增加 VUI(Voice User Interface)语音用户操作界面。
- 语音模块有串口通信和SPI通信两种版本(本产品为串口通信版本):
- SPI接口的就是把LD3320以及外围电路做成一个模块,需要外接单片机使用,单片机可以是51、STM32、Arduino。
- 串口通信版本就是将一个51单片机(STC11L16XE)集成到语音模块上,将识别到的语音通过串口发送出来,可外接其他任意有串口的单片机或设备使用,并且模块有16路IO口引出,可以单独使用。
- 两者的相同之处是词条在程序里都是拼音的形式,修改拼音即可修改词条。
- 两者的不同之处是与SPI版本相比,串口通信版使用上更加方便。由于LD3320是驱动方式比较复杂,控制比较繁琐,所以串口版本使用的是STC单片机+LD3320控制的控制方式,将控制LD3320复杂的方式都让STC单片机来完成。例如要用51单片机控制LD3320达到控制LED灯亮灭的功能:
- 若是SPI版本则需要使用51单片机和LD3320模块(不含单片机的)2个模块,通过使用并口通信,IO口还要做电平转换,然后在51单片机调试程序,非常复杂,非常难以实现。
- 串口版本则可以将需要识别的关键词在给模块的例程中改好,通过串口输出灯亮或者灯灭的关键词提示或者通过IO口给出高低电平来提示识别到灯亮或者灯灭,51单片机只需要和STC11单片机的串口相接或者和对应的IO口相接,通过接受到灯亮和灯灭的提示或者是IO口的高低电平就可以知道识别到了指定的关键词,然后用51单片机的IO口来控制灯的亮灭,这样就实现了要求,将复杂的并口通信及复杂的程序提示,转换成串口通信或者IO口高低电平检测。
产品说明
产品特点
- 语音识别模块可识别所有普通话的中文,但不具有语音播报功能。
- 采用LD3320语音识别芯片,该芯片集成语音信号采集、识别算法。
- 模块上有一个单片机(STC11L16XE),单片机和LD3320语音模块进行SPI通信,和LD3320硬件接线在PCB板上完成,通过对STC单片机进行编程驱动LD3320实现识别语音的功能,使用上更加方便。
- 单片机共引出16个单片机10口,无需配套其他单片机独自完成工作。
- 可配合其他单片机、开发板使用,可以利用模块的串口输出功能。
- 直接修改模块上单片机程序里的拼音,即可修改语音识别的词条。一级口令、二级口令均可修改。
- 模块尺寸:30*42mm
产品介绍

- 供电:板子支持5V或者3.3V供电,推荐使用 5V 供电。当使用5V供电时,该板可以输出3.3V。
- 单片机程序下载:UART接口,TXD、RXD与USB-TTL模块接线时。
- 要交叉接线。即TXD->RXD,RXD->TXD。
- 板载咪头:用于检测声信号,可将声信号转换为电信号。
- 用户LED:板子角上的LED灯是用户可控LED灯,连接单片机的P4.2引脚。
- LD3320状态指示灯:可用来提示LD3320复位情况(复位成功灯亮,不成功灯灭),也可用此 LED 灯作为电源指示灯。
- 单片机预留的 IO 口:从单片机引出的空闲的IO口,共16个,可用于控制外设电路。
- 注:由于有些IO口特殊如不能输出高电平,故在使用这些IO时,请先查询单片机IO口的说明。使用IO口驱动外设时,注意配置IO口为推挽模式,否则可能造成无法驱动的问题。
- 单片机:板载STC11L16XE单片机,只需要对STC单片机进行编程加入自己的识别语句和控制程序即可驱动LD3320芯片。
- LD3320预留IO口:在使用LD3320预留的IO口时,请查询具体的板子的焊接情况,有些IO口可能不能使用。
- MICP:麦克风输入正极,LD3320引脚
- MICN:麦克风输入负极,LD3320引脚
- LINL:立体声左端,LD3320引脚
- LINR:立体声右端,LD3320引脚
- SPOP:喇叭输出正极,LD3320引脚
- SPON:喇叭输出负极,LD3320引脚
- MONP:单声道输入,LD3320引脚
使用说明
修改例程
- 打开工程文件
- 打开keil4 APP文件夹,然后点击YS-V0.7.uvproj快速打开所有源码


- 添加关键词和识别码
- 在LDChip.C文件中找到uint8 LD_AsrAddFixed()函数,在该函数里面可以找到如下图所示内容:

- 根据关键词的数量和长度修改宏定义DATE_A和DATE_B,
- 例如您要添加8个关键词,在这些关键词中最长的一句长度为30,那么定义如下:
#define DATE_A 8
#define DATE_B 30
- sRecog[ ][ ]数组为关键词数组,添加内容为拼音输入方式,例如想添加“开灯”命令,则写入“kai deng”,每个汉字间的拼音用空格隔开。
- pCode[ ]数组为识别码数组,所添加的识别码为预先定义好的宏定义常量值,同时必须和关键词一一对应,如上图所示,“da ma ce shi”命令对应的识别码为CODE_DMCS。
- 根据关键词修改相应识别码
- 在LDChip.h文件中找到如下图所示内容,此处即为识别码的添加和修改,用户可以根据自己的需要和喜好任意定义识别码和宏名,但必须和前面所使用的识别码配对,否则会提示未定义错误。识别码的参数范围为 01-FF 随意选择,没有具体意义,只要不存在重复的即可。

- 测试命令
- 在main.c文件中找到如下图所示内容,TEST为测试命令宏,添加TEST则运行其中代码,此处代码为向串口打印相应数据,不希望执行测试命令,可以把内容去掉。

- 修改处理函数
- 在main.c文件中找到void User_handle(uint8 dat)函数,在该函数中可以看到如下图所示内容,用户可以根据自己的使用情况在相对应的识别码后添加识别成功后的操作。

- 灵敏度(识别距离)调节说明
- 在LDChip.h文件中找到如下图所示内容,根据描述的范围自行适当调节,最大灵敏度的识别距离可以达到 5 米以上,最小灵敏度适合靠近嘴边喊话,对远距离的声音干扰就非常小了。根据自己的使用情况进行适当调节。

下载执行
- 硬件准备:
- LD3320语音模块 1个
- USB转TTL模块 1个
- 母对母杜邦线 4根
- 硬件连接:
- 根据USB转TTL模块所用芯片安装好对应的驱动。将接好线的USB转TTL模块插入电脑USB口。
- 打开STCISP软件,找到对应的单片机型号(STC11F60XE 系列 -> STC11L16XE)。

- 若不确定单片机型号,可先检测MCU选项,然后在右边查看单片机型号。
- 选择好单片机型号(STC11L16XE)、COM 口、打开需要下载的HEX文件后点击下载,给 LD3320语音模块重新上电(先断电后上电),软件右下侧一般就会提示下载成功。
- 测试:
- 打开串口软件,选择对应的com口,以波特率为9600,数据位为8,停止位为1,校验位为none的配置打开串口。

- 对着语音模块的板载咪头喊出一级口令小石(参考例程),此时语音模块的用户LED灯亮起,串口软件接收到收到字样。

- 然后对着语音模块的板载咪头喊出任意二级口令,如开灯(参考例程),此时语音模块的用户LED灯熄灭,串口软件接收到“开灯”命令识别成功字样。

- 在每次对着语音模块的板载咪头喊出任意二级口令前需要先喊出以及口令激活设备,否则无法正确执行口令后的动作。

参考资料
FAQ
答复:
|
- 1米以内识别率较好。
- 1米以内,无明显噪音识别率85%以上。
|
|
答复:
|
可以的,修改程序里的拼音重新烧录即可(keil软件编译)。懂单片机的都会这个,但还是有一定难度,自行斟酌。
|
|
问题:
|
可以接STM32、Arduino、51单片机吗?
|
|
答复:
|
可以的,此模块有串口模式,串口可以接任意单片机,需要自己写对应单片机的程序。
|
|
答复:
|
16个,模块上单片机的每一个1/0口都可以接一个继电器。一共引出 16个
|
|
答复:
|
- 在设定好要识别的关键词语后,可以再添加一些其他的任意词汇进识别列表,用来吸收错误识别,从而达到降低误识别率的目的。
- 例如在某个应用场景中,需要识别的关键词语是 4 条:“前进”,“后 退”,“开门”,“关门”。那么可以在把这4个关键词语设置进LD3320后,可以再另外设置10~30个词语进LD3320,比如“前门”,“后门”,“阿阿阿”,“呜呜”等等。最好是一些拟声词或者容易混淆的词语。这样只有识别结果是4个关键词语之内的,才会进行有效输出。如果识别结果是其他关键词,则识别后不进行输出。产品应该重新开始一次识别过程。这样,可以非常有效地降低误识别率。
|
|
|
联系 丢石头
我们的工作时间是: 09:00-18:00 (UTC+8 周一到周六)
|
|