语音识别播放程序
正点原子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);
如果有写的不对的地方,欢迎大家批评指正,共同进步