基于树莓派和YS-LDV7语音识别模块实现声控灯

LDV7语音识别模块验货测试方法

1.按下图接线之后,串口插入电脑

在这里插入图片描述

2.打开串口调试助手

在这里插入图片描述
(另外我们打开软件串口后,我们可以拔下 GND 再把 GND 插上,这样重新上电可以看到接收串口会打印出相关的识别口令。)
以上步骤都准备好后,我们距离模块的麦克风 50cm 左右,以正常的发音速度和音量进行识别,第一句喊口令为:小杰 如识别正确,则模块 D1 指示灯将亮起,软件也将输出”收到”二字。 如没有任何反应可以尝试再次发音,注意手不要碰到模块的线路。可以夹住板边。

LDV7语音识别模块配套程序识别语句修改方法

1.添加关键词和识别码

打开程序工程,在 LDChip.C 文件中找到 uint8 LD_AsrAddFixed() 函数,在该函数里面可以找到如下图所示内容:
在这里插入图片描述
----根据关键词的数量和长度修改宏定义 DATE_ADATE_B ,例如您要添加10 个关键词,在这些关键词中最长的一句长度为 30,那么定义如下:

#define DATE_A 10
#define DATE_B 30

sRecog[ ][ ] 数组为关键词数组,添加内容为拼音输入方式,例如想添加“开灯”命令,则写入“kai deng”,每个汉字间的拼音用空格隔开。
pCode[ ] 数组为识别码数组,所添加的识别码为预先定义好的宏定义常量值,同时必须和关键词一一对应,如上图所示,“da ma ce shi”命令对应的识别码为 CODE_DMCS

2.定义识别码

打开程序,在 LDChip.h 文件中找到如下图所示:
在这里插入图片描述
—此处即为识别码的添加和修改,用户可以根据自己的需要和喜好任意定义识别码和宏名,但必须和前面所使用的识别码配对,否则会提示未定义错误。识别码的参数范围为 01-FF 随意选择,没有具体意义,只要不存在重复的即可。

3.修改处理函数

打开程序,在 main.c 文件中找到 void User_handle(uint8 dat)函数,在该函数中可以看到如下图所示内容:
在这里插入图片描述
—用户可以根据自己的使用情况在相对应的识别码后添加识别成功后的操作。那么在设备到某句话后就会执行相应的动作,实际上此段程序是判断识别到那个识别码然后执行相应的动作,属单片机的程序应用处理部分。

LDV7语音识别模块程序下载方法

本模块的程序下载实际为 STC 单片机的程序下载方法,首先我们需要安装USB 转 TTL 驱动(如已安装无需再安装),然后接好 USB 转 TTL。

打开“STC-ISP 下载软件”,根据下图的箭头指示选择好各个选项
在这里插入图片描述
(注意:单片机型号在 STC11F60XE 的系列里;串口号不一定是 COM4,根据软件识
别的是什么就选什么,有 USB-SERTAL CH340 字样的哪一个; 打开程序文件即打开源程序–OBJ 文件夹里面后缀为 .hex 的文件
最后我们先将语音模块那边的 GND 那根线拔下,然后点击 下载/编程 按钮,接着再把 GND 插上,这是软件底部将有进度条显示,会提示下载完成。

基于树莓派和YS-LDV7语音识别模块声控灯的实现

语音模块与树莓派声控灯的总接线图

在这里插入图片描述

树莓派编程

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

#define SWIT 26

int main(){
        int fd;
        char cmd[32] = {'\0'};
        int nread;

        wiringPiSetup();
        fd = serialOpen("/dev/ttyAMA0", 9600);

        pinMode(SWIT, OUTPUT);
        digitalWrite(SWIT, HIGH);

		while(1){

                nread = read(fd, cmd, sizeof(cmd));

                if(strlen(cmd) == 0){
                        printf("chaosi\n");
                        continue;
                }
                if(strstr(cmd, "open") != NULL){
                        printf("open light\n");
                        digitalWrite(SWIT, LOW);
                }
                if(strstr(cmd, "close") != NULL){
                        printf("close light\n");
                        digitalWrite(SWIT, HIGH);
                }
                memset(cmd, '\0', sizeof(cmd)/sizeof(char));
        }

        return 0;
}

演示视频

https://v.douyin.com/NUrQtn9/

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

从入门到捕蛇者说

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

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

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

打赏作者

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

抵扣说明:

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

余额充值