智能家居--语音交互部分-LD3320+JQ8900

一、前言

        这一部分暂时是用STM32F1单片机进行测试的,在STM32上测试完成后,即可移植到ESP32,非常方便,目前可以实现语音交互。用的模块是LD3320语音识别模块(串口版)+JQ8900(语音播报模块)。

二、接线方式

下图是LD3320,JQ8900,STM32三者之间的接线图。

  1. LD3320只起发送作用,所以LD3320的TXD(发送端)接至STM32单片机的RXD(接收端),LD3320的RXD(接收端)不用接线,浮空即可。
  2. JQ8900只起接收作用,所以JQ8900的RXD(接收端)接至STM32单片机的TXD(发送端),JQ8900的TXD(发送端)不用接线,浮空。
  3. STM32我用的是串口1,PA9是TXD(发送端),PA10是RXD(接收端);      

三、实现过程

1、LD3320的使用

        串口版的就是将一个51单片机集成到语音模块上,将识别到的语音通过串口发送到其他带有串口功能的设备上。

1.1、模块测试

        拿到模块后,我们首先将它和USB转TTL模块连接起来,测试模块是否正常运行,具体测试方法如下

  1. LD3320和USB转TTL模块进行连接后接入电脑
  2. 打开资料中的串口助手,其他串口助手也可以。配置如下图
  3. 通过程序中设定的词条进行呼叫,可以在串口助手中看到模块返回的信息,我们可以根据这些信息,进行相应的操作。

    1.2、自定义词条

    我们可以自定义呼叫的内容词条。

    词条可以在资料程序中的LDChip.c文件中的第275行进行修改、添加、删除,这里面的词条都是用的拼音,比如 我们想设置  打开厨房灯 的词条,那么就可以直接将其拼音输入,中间用空格隔开。

da kai chu fang deng

1.3、自定义串口发送内容

LD3320串口发送的内容非常重要,关乎到我们整个系统的控制,因此,我们要重视

这里面改的也很简单,在程序main.c文件中的221行,可以自行修改发送的内容,建议数字或者是英文,尽量不要发送中文。PrintCom("@5\r\n");  我们可以直接修改其中的内容

1.4、将修改好的程序下载到LD3320

配置好stc-isp后即可下载,详细步骤模块资料中有介绍

1.5、测试

将以上的步骤修改好之后,可以进行测试,我们将模块与STM32单片机的串口1进行连接,在STM32上下载串口实验的程序,我们即可收到数据,如下图,第一个图是通过调试器我们看到的数据,第二个图是串口上打印的数据,若此时收到的数据与上面修改过的串口发送的内容一致,那么我们就可以开始使用这个模块了。

1.6、总结

LD3320模块修改完成,我们可以连接JQ8900进行播报了。

注意!如果1.5测试的时候,串口收到的数据一直是0,或者收不到数据,那么检查一下STM32程序和LD3320模块程序中,两个程序的波特率是否一致,建议将STM32程序中的波特率设置为9600。

2、JQ8900的使用

此模块资料中有详细介绍,且使用简单,就不做过多描述,只需注意合成语音是的命名正确即可。

四、测试

将JQ8900资料中的JQ8x00.c和.h文件移植到STM32的串口实验中,然后调用这个函数即可。函数第二个参数对应合成语音时候的名称,2代表02。

JQ8x00_Command_Data(AppointTrack,2)

main.c

#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "JQ8X00.h"
#include "led.h" 

 int main(void)
 {		
 	u16 t;  
	u16 len;	
	u16 times=0;
	delay_init();	    	 //延时函数初始化	  
	JQ8x00_Init();
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
	uart_init(9600);	 //串口初始化为115200
	LED_Init(); 
	JQ8x00_Command_Data(SetVolume,30);         //设置音量
 	while(1)
	{
		if(USART_RX_STA&0x8000)
		{					   
			switch(USART_RX_BUF[1])
		    {
			case '2':JQ8x00_Command_Data(AppointTrack,2);break;      //播放曲目2
			case '3':JQ8x00_Command_Data(AppointTrack,3);break;
			case '4':JQ8x00_Command_Data(AppointTrack,4);break;
			case '5':JQ8x00_Command_Data(AppointTrack,5);break;
			case '6':JQ8x00_Command_Data(AppointTrack,6);break;
			case '7':JQ8x00_Command_Data(AppointTrack,7);break;
			case '8':JQ8x00_Command_Data(AppointTrack,8);break;
			case '9':JQ8x00_Command_Data(AppointTrack,9);break;
			case 'a':JQ8x00_Command_Data(AppointTrack,10);break;
			case 'b':JQ8x00_Command_Data(AppointTrack,11);break;
			case 'c':JQ8x00_Command_Data(AppointTrack,12);break;
			case 'd':JQ8x00_Command_Data(AppointTrack,13);break;
		    }
			USART_RX_STA=0;
		}
	}	 
 }

到目前语音交互功能已经完成,下面一篇是在ESP32是上实现,篇幅应该不长。在这里我会上传两个模块的资料和我修改过的程序

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小杨同学在摸鱼

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

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

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

打赏作者

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

抵扣说明:

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

余额充值