玩这个真的要感谢头条的强大推荐,清明节回家的大巴车上,无聊的刷着头条,很智能的给我推荐了一款语音识别模块,一直很想自己试着玩一把的我,按奈不住,点开视频看到了介绍,接着我就淘宝一下,加入了购物车,事后感觉我被套路了,是不是商家自己制作的视频推广发到头条,不管怎样,模块已经在手上了,那就利用起来吧,然后网上又搜了一款语音播放模块,自己设计不了硬件,买现成的模块玩玩拼凑吧

材料: LD3320语音识别模块

           JQ8900-TF语音播放模块

           串口,杜邦线,1k电阻,扬声器

硬件连接图

原理图如下 

 硬件连接完成,接下来就要做软件部分的了

购买两种模块,店家会把简单的示例代码发放,只要我们简单修改就可以使用

LD3320语音识别模块,利用stc系列单片机操作,模块识别到与程序内指令相同时,发送播放语音指令,使JQ9800播放已经录入好的语音文件,作为语音识别的应答

LD3320在口令模式基础上修改,内容如下:

main.c内添加需要播放的音频文件指令

uint8_t code PrevFile[] = {0xAA, 0x05, 0x00, 0xAF};/* 上一曲*/
uint8_t code NextFile[] = {0xAA, 0x06, 0x00, 0xB0}; /* 下一曲 */
uint8_t code FirstCmd[] = {0xAA, 0x07, 0x02, 0x00, 0x0B, 0xBE}; //我在
uint8_t code AlreadyOpen[] = {0xAA, 0x07, 0x02, 0x00, 0x0C, 0xBF}; //灯已打开
uint8_t code p_nextcmd[]={0xAA, 0x07, 0x02, 0x00, 0x0D, 0xC0}; //有什么吩咐
uint8_t code p_OK[]={0xAA, 0x07, 0x02, 0x00, 0x0E, 0xC1}; //好的
uint8_t code p_respeak[]={0xAA, 0x07, 0x02, 0x00, 0x0F, 0xC2}; //请重说


void 	User_handle(uint8 dat)
{
		 if(0==dat)
		 {
		  	G0_flag=ENABLE;
			LED=0;
			 
			PrintCom("收到\r\n");
			 UartSendData(FirstCmd, 6);
			 delay(10000);
			 UartSendData(p_nextcmd, 6);
		 }
		 else if(ENABLE==G0_flag)
		 {	
		 		G0_flag=DISABLE;
				LED=1;
			 switch(dat)		   /*对结果执行相关的操作,客户可删除 printcom输出语句*/
			  {
					case CODE_OPENLIGHT:					
					case CODE_OPENLIGHTA:										
					case CODE_OPENLIGHTB:				
						UartSendData(AlreadyOpen, 6);
						break;
					case CODE_CLOSE:									
					case CODE_CLOSEA:				
					case CODE_CLOSEB:					
						UartSendData(p_OK, 6);
						break;																											
					default:
						PrintCom("请重新识别发口令\r\n");
						UartSendData(p_respeak, 6);
						break;
				}	
			}	
			else 	
			{
				PrintCom("请说出一级口令\r\n");	
			}
}	 

LDChip.c

uint8 code sRecog[DATE_A][DATE_B] = { "tian tian",\		
				"da kai deng",\
				"kai deng",\
				"ba deng da kai",\
				"guan diao deng",\
				"guan deng",\ 
				"ba deng guan diao", \
				"chong dian"
			};	
	uint8 code pCode[DATE_A] = {
				CODE_CMD,\
				CODE_OPENLIGHT,\
				CODE_OPENLIGHTA,\
				CODE_OPENLIGHTB,\
		                CODE_CLOSE,\
				CODE_CLOSEA,\
				CODE_CLOSEB,\
				CODE_GZ
			};		

将修改后的程序重新编译烧写到LD3320模块,使用“”天天“”口令唤醒,说“开灯”,“关灯”指令

JQ8900 语音播放,使用官方提供的调试工具,将文字转换为语音文件存储大sd卡,将sd卡插入模块,使用调试工具确认播放文件对应的指令,将指令写到LD3320程序内,使用串口发送指令播放语音

因为使用的都是开发好的code,只要简单修改,就可以玩转简单的语音交互控制

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐