语音识别测试

语音识别播放程序

正点原子STM32F407+LD3320+JQ8900

1

链接:https://pan.baidu.com/s/1SondnCTNUqt6BsO4XeL1Tg
提取码:0xot
以上连接中有JQ8900 LD3320的资料还有我的测试视频大家可以看一下
上述两个模块主要用到串口与STM32通信,用到USART1 USART2
如果大家有兴趣可以在这个基础上修改,做出一个智能垃圾桶,能够识别垃圾并且进行播报
也可以加继电器做一个语音开关

以下是我的测试指令
我:亲
STM32:在呢
我:开灯
STM32:电灯打开了 亲 (视频中的黄灯打开了)
还有测试指令:
我是谁
你是谁
你是猪吗
放首歌
讲个笑话

2

部分核心代码:

#include "jq8900.h"
u8 soundup[] = {0xAA, 0x14, 0x00, 0xBE};
u8 sounddown[] = {0xAA, 0x15, 0x00, 0xBF};

u8 rank1[] = {0xAA, 0x16, 0x03, 0x02, 0x00, 0x01, 0xC6};
u8 rank2[] = {0xAA, 0x16, 0x03, 0x02, 0x00, 0x02, 0xC7};
u8 rank3[] = {0xAA, 0x16, 0x03, 0x02, 0x00, 0x03, 0xC8};
u8 rank4[] = {0xAA, 0x16, 0x03, 0x02, 0x00, 0x04, 0xC9};
u8 rank5[] = {0xAA, 0x16, 0x03, 0x02, 0x00, 0x05, 0xCA};
u8 rank6[] = {0xAA, 0x16, 0x03, 0x02, 0x00, 0x06, 0xCB};
u8 rank7[] = {0xAA, 0x16, 0x03, 0x02, 0x00, 0x07, 0xCC};
u8 rank8[] = {0xAA, 0x16, 0x03, 0x02, 0x00, 0x08, 0xCD};
u8 rank9[] = {0xAA, 0x16, 0x03, 0x02, 0x00, 0x09, 0xCE};
u8 rank10[] = {0xAA, 0x16, 0x03, 0x02, 0x00, 0x0A, 0xCF};
u8 rank11[] = {0xAA, 0x16, 0x03, 0x02, 0x00, 0x0B, 0xD0};
u8 rank12[] = {0xAA, 0x16, 0x03, 0x02, 0x00, 0x0C, 0xD1};
u8 rank13[] = {0xAA, 0x16, 0x03, 0x02, 0x00, 0x0D, 0xD2};
u8 rank14[] = {0xAA, 0x16, 0x03, 0x02, 0x00, 0x0E, 0xD3};
u8 rank15[] = {0xAA, 0x16, 0x03, 0x02, 0x00, 0x0F, 0xD4};

u8 mode[] = {0xAA, 0x18, 0x01, 0x02, 0xC5};
void speaker(u8 k)                            \\播放第几条消息
{
	u8 t;
	rank1[5]=k+0x00;
	rank1[6]=k+0xC5;
	for(t=0;t<7;t++)
	{
		USART_SendData(USART1,rank1[t]);         //向串口1发送数据
		while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
	}
}
void Tmode(void)					\\设置模式为单曲停止
{
	u8 t;
	for(t=0;t<5;t++)
	{
		USART_SendData(USART1,mode[t]);         //向串口1发送数据
		while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
	}
}

void UPsound(u8 k)						\\音量加
{
	u8 t;
	u8 i;
	for(i=0;i<k;i++)
	{
		for(t=0;t<4;t++)
		{
			USART_SendData(USART1,soundup[t]);         //向串口1发送数据
			while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
		}
	}
}
void DOWNsound(u8 k)						\\音量减
{
	u8 t;
	u8 i;
	for(i=0;i<k;i++)
	{
		for(t=0;t<4;t++)
		{
			USART_SendData(USART1,sounddown[t]);         //向串口1发送数据
			while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
		}
	}
}

switch(IDsound())
		{
			case '0':
			speaker(0x03);
			break;
			case '1':
				LED1=0;
			speaker(0x04);
			break;
			case '2':
				LED1=1;
			speaker(0x05);
			break;
			
			case '3':
			speaker(0x07);
			break;
			case '4':
			speaker(0x06);
			break;
			case '5':
			speaker(0x01);
			break;
			
			case '6':
			speaker(0x02);
			break;
			case '7':
			speaker(0x08);
			break;
			default:break;
			
		}
		delay_ms(1000);
		

如果有写的不对的地方,欢迎大家批评指正,共同进步

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值