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

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

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

基于树莓派和YS-LDV7语音识别模块实现声控灯_第1张图片

2.打开串口调试助手

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

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

1.添加关键词和识别码

打开程序工程,在 LDChip.C 文件中找到 uint8 LD_AsrAddFixed() 函数,在该函数里面可以找到如下图所示内容:
基于树莓派和YS-LDV7语音识别模块实现声控灯_第3张图片
----根据关键词的数量和长度修改宏定义 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 文件中找到如下图所示:
基于树莓派和YS-LDV7语音识别模块实现声控灯_第4张图片
—此处即为识别码的添加和修改,用户可以根据自己的需要和喜好任意定义识别码和宏名,但必须和前面所使用的识别码配对,否则会提示未定义错误。识别码的参数范围为 01-FF 随意选择,没有具体意义,只要不存在重复的即可。

3.修改处理函数

打开程序,在 main.c 文件中找到 void User_handle(uint8 dat)函数,在该函数中可以看到如下图所示内容:
基于树莓派和YS-LDV7语音识别模块实现声控灯_第5张图片
—用户可以根据自己的使用情况在相对应的识别码后添加识别成功后的操作。那么在设备到某句话后就会执行相应的动作,实际上此段程序是判断识别到那个识别码然后执行相应的动作,属单片机的程序应用处理部分。

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

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

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

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

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

基于树莓派和YS-LDV7语音识别模块实现声控灯_第7张图片

树莓派编程

#include 
#include 
#include 
#include 
#include 

#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/

你可能感兴趣的:(编程小项目,树莓派,树莓派,嵌入式,linux,单片机)