语音模块实现语音识别功能

来源:so.csdn.net 发布时间:Nov 30, 2020, 4:04:57 AM 原地址:https://blog.csdn.net/qq_48850403/article/details/110390932

用树莓派实现语音模块的识别功能

这里是简单的用语音开关灯来测试树莓派、继电器和语音模块之间相互的联系。
代码如下:

#include <stdio.h>
#include <wiringPi.h>
#include <wiringSerial.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

#define SWIT1 7

int main()
{
   
	int fd;//文件描述符
	char cmd[128] = {
   '\0'};//用来存放语音传来的数据
	int nread;//读到多少个数据

	pinMode(SWIT1,OUTPUT);//让引脚变成输出引脚 
	
	digitalWrite(SWIT1,HIGH);//给引脚一个高电平,程序运行的时候先让继电器处于断开状态

	wiringPiSetup();//端口初始化
	fd = serialOpen("/dev/ttyAMA0",9600);//打开并初始化串口,波特率9600
	if(fd == -1){
   
		printf("打开串口失败\n");
		exit(-1);
	}
	while(1){
   
		nread = read(fd,cmd,sizeof(cmd)/sizeof(char));//读cmd数组里的数据。
		if(strlen(cmd) == 0){
   //如果cmd里的没收到数据一直在等待,等系统自动返回一个值再打印超时
			printf("超时\n");
			continue;
		}
		if(strstr(cmd,"open") != NULL){
   //如果open是cmd的子串则走if里面的程序
            printf("open light\n");
            digitalWrite(SWIT1,LOW);//给引脚一个低电平让继电器闭合
        }
        if(strstr(cmd,"close") != NULL){
   //如果close是cmd的子串则走if里面的程序
            printf("close light\n");
            digitalWrite(SWIT1,HIGH);//给引脚一个高电平让继电器断开
        }
		memset(cmd,'\0',sizoef(cmd));//每次读取之后初始化数组, 
	}
	
	return 0;
}

以上就是语音控制开灯与关灯的代码简称语音点灯咯。当然了想要更深的更细的控制的话在此基础上进行改造,并且要对语音模块以及C语言进行更深的了解。