概 述
该模块采用了全新的离线语音识别芯片。内置150条常用的固定命令词条,新增命令词自学习功能,自学习命令词可以不是一段语音,可以是一段口哨、一个响指、一声猫叫等,支持17条自学习命令词。采用双麦克风收音使模块有更好的抗噪音能力和更远的识别距离。模块自带一个喇叭和外接喇叭的接口,能实时语音反馈识别结果。模块采用I2C和UART两种通讯方式,Gravity接口,兼容Arduino Uno、Arduino leonardo、Arduino MEGA、FireBeetle 系列控制器,树莓派,ESP32等主控。
模块特点
- Arduino兼容控制器:Arduino Uno、Arduino leonardo、Arduino MEGA、FireBeetle 系列控制器,树莓派,ESP32
- 通过 Gravity 连接,简化方便,且兼容 3.3V 与 5V
- 命令词自学习功能:通过语音控制模块学习命令词,可以使用任何音频作为命令
- 内置150条常用的固定命令词条
- 模块自带一个喇叭和外接喇叭的接口,能实时语音反馈识别结果
- 采用I2C和UART两种通讯方式,Gravity接口。
- 板载电源指示灯(红)和识别状态指示灯(蓝)
- 双麦克风收音更好的抗噪音能力和更远的识别距离
产品参数
- 工作电压:3.3~5V
- 最大工作电流:≤370 mA(5V)
- 通信方式:I2C/UART
- I2C地址:0x64
- 固定命令词条数:135条
- 学习命令词条数:17条
- 学习唤醒词条数:1条
- 板载麦克风灵敏度:-28db
- 模块尺寸:49 * 32 mm
接口与引脚
学习命令词
唤醒词
唤醒词是指将产品从待机状态切换到工作状态的词语,是用户与语音互动产品的第一个接触点。
学习唤醒词
首先用默认的唤醒词唤醒语音助手,然后说出“学习唤醒词”,根据提示来学习唤醒词(每次学习命令词前需删除前一次学习的唤醒词,请参考删除唤醒词和命令词删除)
提示:学习状态中,保持安静,请说出需要学习的唤醒词!
需学习的唤醒词(以理想同学为例):理想同学
提示:学习成功,请再说一次!
需学习的唤醒词:理想同学
提示:学习成功,请再说一次!
需学习的唤醒词:理想同学
提示:学习完成
就可以使用学习过的唤醒词来唤醒语音助手!
固定命令词条
命令词是指用户对语音互动产品发出一定的指令,以此与其进行沟通的词语。
学习命令词
用唤醒词(默认或已学习的)唤醒语音助手,然后说出“学习命令词”,根据提示来学习命令词(每次学习命令词前需删除前一次学习的命令词,请参考删除唤醒词和命令词删除)
提示:学习状态中,保持安静,请按提示学习命令词!请说出第一条要学习的指令!
需学习的命令词(以打开红灯为例):打开红灯
提示:学习成功,请再说一次!
需学习的命令词:打开红灯
提示:学习成功,请再说一次!
需学习的命令词:打开红灯
提示:恭喜你第一条指令学习成功,请说出第二条要学习的指令
………… (继续学习即可)
或者使用“退出学习”来退出当前的学习状态。
学习结束后会自动生成一个ID详情见下文命令词/唤醒词ID对照表,通过这个ID编写程序来控制即可。
删除唤醒词和命令词
用唤醒词(默认或已学习的)唤醒语音助手,然后说出“我要删除”,根据提示来学习命令词
提示:请问需要删除的是学习的唤醒词还是命令词
删除命令词:删除学习过的命令词
删除唤醒词:删除学习过的唤醒词
全部删除:删除学习过的唤醒词和命令词
退出删除
使用说明
准备
-
硬件
SEN0539 Gravity: 语音识别模块 - I2C & UART
-
软件
如何安装库文件,点击链接
样例代码1-使用IIC通讯
接线图:
演示代码:
请将通讯模式开关拨到了I2C方向,代码所需库文件DFRobot_DF2301Q库
/*!
* @file i2c.ino
* @brief 通过I2C控制语音识别模块
* @n 可以获取识别的命令ID, 通过命令ID播放其对应的答复音频;
* @n 可以获取唤醒状态的持续周期, 也可以设置唤醒状态的持续周期
* @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
* @licence The MIT License (MIT)
* @author [qsjhyy](yihuan.huang@dfrobot.com)
* @version V1.0
* @date 2022-04-02
* @url https://github.com/DFRobot/DFRobot_DF2301Q
*/
#include "DFRobot_DF2301Q.h"
#define Led 8
//I2C communication
DFRobot_DF2301Q_I2C asr;
void setup() {
Serial.begin(115200);
pinMode(Led, OUTPUT); //初始化LED引脚为输出模式
digitalWrite(Led, LOW); //LED引脚低电平
// Init the sensor
while (!(asr.begin())) {
Serial.println("Communication with device failed, please check connection");
delay(3000);
}
Serial.println("Begin ok!");
/**
* @brief Set voice volume
* @param voc - Volume value(1~7)
*/
asr.setVolume(4);
/**
@brief 设置静音模式
@param mode - 静音模式; 设置值 1: mute, 0: unmute
*/
asr.setMuteMode(0);
/**
@brief 设置唤醒持续时间
@param wakeTime - 唤醒持续时间(0~255)
*/
asr.setWakeTime(20);
/**
@brief 获取唤醒持续时间
@return 当前设置的唤醒周期
*/
uint8_t wakeTime = 0;
wakeTime = asr.getWakeTime();
Serial.print("wakeTime = ");
Serial.println(wakeTime);
// asr.playByCMDID(1); // 唤醒指令
/**
@brief 根据命令词ID播放对应的答复音
@param CMDID - 命令词ID
*/
//asr.playByCMDID(23); // 普通词ID
}
void loop() {
/**
@brief 获取命令词对应的ID
@return 返回获取的命令词ID, 返回0表示未获取到有效id
*/
uint8_t CMDID = asr.getCMDID();
switch (CMDID) {
case 117: //若是指令“打开灯光”
digitalWrite(Led, HIGH); //点亮LED
Serial.println("received'打开灯光',command flag'117'"); //串口发送received"打开灯光",command flag"117"
break;
case 118: //若是指令“关闭灯光”
digitalWrite(Led, LOW); //熄灭LED
Serial.println("received'关闭灯光',command flag'118'"); //串口发送received"关闭灯光",command flag"118"
break;
default:
if (CMDID != 0) {
Serial.print("CMDID = "); //打印命令ID
Serial.println(CMDID);
}
}
delay(300);
}
使用固定或学习的唤醒词唤醒语音识别模块,然后使用“打开灯光”或“关闭灯光”控制发光模块。
样例代码2-使用UART通讯
接线图:
演示代码:
请将通讯模式开关拨到了UART方向,代码所需库文件DFRobot_DF2301Q库
/*!
* @file uart.ino
* @brief 通过UART控制语音识别模块
* @n 可以获取识别的命令ID, 通过命令ID播放其对应的答复音频;
* @n 可以设置唤醒状态的持续周期, 设置静音模式, 设置音量, 进入唤醒状态, 复位模块
* @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
* @licence The MIT License (MIT)
* @author [qsjhyy](yihuan.huang@dfrobot.com)
* @version V1.0
* @date 2022-04-02
* @url https://github.com/DFRobot/DFRobot_DF2301Q
*/
#include "DFRobot_DF2301Q.h"
#define Led 8
/**
@brief DFRobot_URM13_RTU constructor
@param serial - serial ports for communication, supporting hard and soft serial ports
@param rx - UART 接收数据的引脚
@param tx - UART 发送数据的引脚
*/
#if (defined(ARDUINO_AVR_UNO) || defined(ESP8266)) // 使用软串口
SoftwareSerial softSerial(/*rx =*/4, /*tx =*/5);
DFRobot_DF2301Q_UART asr(/*softSerial =*/&softSerial);
#elif defined(ESP32) // 使用 可重映射引脚的 硬串口 : Serial1
DFRobot_DF2301Q_UART asr(/*hardSerial =*/&Serial1, /*rx =*/D3, /*tx =*/D2);
#else // 使用硬串口 : Serial1
DFRobot_DF2301Q_UART asr(/*hardSerial =*/&Serial1);
#endif
void setup() {
Serial.begin(115200);
pinMode(Led, OUTPUT); //初始化LED引脚为输出模式
digitalWrite(Led, LOW); //LED引脚低电平
// Init the sensor
while (!(asr.begin())) {
Serial.println("Communication with device failed, please check connection");
delay(3000);
}
Serial.println("Begin ok!");
/**
@brief 复位模块
*/
// asr.resetModule();
/**
@brief 设置模块的命令
@param setType - 设置类型
@n DF2301Q_UART_MSG_CMD_SET_VOLUME : 设置音量, 设置值范围1~7
@n DF2301Q_UART_MSG_CMD_SET_ENTERWAKEUP : 进入唤醒状态; 设置值 0
@n DF2301Q_UART_MSG_CMD_SET_MUTE : 静音模式; 设置值 1: mute, 0: unmute
@n DF2301Q_UART_MSG_CMD_SET_WAKE_TIME : 唤醒持续时间; 设置值范围0~255秒
@param setValue - 设置值, 范围参见上述设置类型
*/
asr.settingCMD(DF2301Q_UART_MSG_CMD_SET_MUTE, 0);
asr.settingCMD(DF2301Q_UART_MSG_CMD_SET_VOLUME, 7);
asr.settingCMD(DF2301Q_UART_MSG_CMD_SET_WAKE_TIME, 20);
//asr.settingCMD(DF2301Q_UART_MSG_CMD_SET_ENTERWAKEUP, 0);
/**
@brief 根据命令词ID播放对应的答复音
@param CMDID - 命令词ID
*/
asr.playByCMDID(23);
}
void loop() {
/**
@brief 获取命令词对应的ID
@return 返回获取的命令词ID, 返回0表示未获取到有效id
*/
uint8_t CMDID = asr.getCMDID();
switch (CMDID) {
case 117: //若是指令“打开灯光”
digitalWrite(Led, HIGH); //点亮LED
Serial.println("received'打开灯光',command flag'117'"); //串口发送received"打开灯光",command flag"117"
break;
case 118: //若是指令“关闭灯光”
digitalWrite(Led, LOW); //熄灭LED
Serial.println("received'关闭灯光',command flag'118'"); //串口发送received"关闭灯光",command flag"118"
break;
default:
if (CMDID != 0) {
Serial.print("CMDID = "); //打印命令ID
Serial.println(CMDID);
}
}
delay(300);
}
使用固定或学习的唤醒词唤醒语音识别模块,然后使用“打开灯光”或“关闭灯光”控制发光模块。
命令词/唤醒词ID对照表
唤醒词 | ID | 固定命令词条 | ID | 固定命令词条 | ID | 固定命令词条 | ID |
---|---|---|---|---|---|---|---|
学习的唤醒词 | 1 | 物体识别 | 42 | 关闭摄像头 | 84 | 最低色温 | 126 |
小智你好 | 2 | 巡线追踪 | 43 | 打开风扇 | 85 | 日光模式 | 127 |
小爱同学 | 3 | 颜色识别 | 44 | 关闭风扇 | 86 | 月光模式 | 128 |
学习的命令词 | ID | 标签识别 | 45 | 风速一档 | 87 | 采光模式 | 129 |
第一个自定义 | 5 | 物体分类 | 46 | 风速二档 | 88 | 设置为红色 | 130 |
第二个自定义 | 6 | 二维码识别 | 47 | 风速三档 | 89 | 设置为橙色 | 131 |
第三个自定义 | 7 | 条形码识别 | 48 | 开启摇头 | 90 | 设置为黄色 | 132 |
第四个自定义 | 8 | 常规设置 | 49 | 停止摇头 | 91 | 设置为绿色 | 133 |
第五个自定义 | 9 | 清屏 | 50 | 归位 | 92 | 设置为青色 | 134 |
第六个自定义 | 10 | 学习一次 | 51 | 舵机十度 | 93 | 设置为蓝色 | 135 |
第七个自定义 | 11 | 遗忘 | 52 | 舵机三十度 | 94 | 设置为紫色 | 136 |
第八个自定义 | 12 | 加载模型 | 53 | 舵机四十五度 | 95 | 设置为白色 | 137 |
第九个自定义 | 13 | 保存模型 | 54 | 舵机六十度 | 96 | 打开空调 | 138 |
第十个自定义 | 14 | 拍照并保存 | 55 | 舵机九十度 | 97 | 关闭空调 | 139 |
第十一自定义 | 15 | 保存并返回 | 56 | 舵机一百七十度 | 98 | 温度调高 | 140 |
第十二自定义 | 16 | 显示数字零 | 57 | 舵机一百八十度 | 99 | 温度调低 | 141 |
第十三自定义 | 17 | 显示数字一 | 58 | 打开蜂鸣器 | 100 | 制冷模式 | 142 |
第十四自定义 | 18 | 显示数字二 | 59 | 关闭蜂鸣器 | 101 | 制热模式 | 143 |
第十五自定义 | 19 | 显示数字三 | 60 | 打开喇叭 | 102 | 自动模式 | 144 |
第十六自定义 | 20 | 显示数字四 | 61 | 关闭喇叭 | 103 | 除湿模式 | 145 |
第十七自定义 | 21 | 显示数字五 | 62 | 播放音乐 | 104 | 通风模式 | 146 |
固定命令词条 | ID | 显示数字六 | 63 | 停止播放 | 105 | 打开上下扫风 | 147 |
前进 | 22 | 显示数字七 | 64 | 上一曲 | 106 | 关闭上下扫风 | 148 |
后退 | 23 | 显示数字八 | 65 | 下一曲 | 107 | 打开左右扫风 | 149 |
停车 | 24 | 显示数字九 | 66 | 单曲循环 | 108 | 关闭左右扫风 | 150 |
左转九十度 | 25 | 显示笑脸 | 67 | 列表循环 | 109 | 打开窗户 | 151 |
左转四十五度 | 26 | 显示哭脸 | 68 | 随机播放 | 110 | 关闭窗户 | 152 |
左转三十度 | 27 | 显示爱心 | 69 | 增大音量 | 111 | 打开窗帘 | 153 |
右转九十度 | 28 | 关闭所有点阵 | 70 | 减小音量 | 112 | 关闭窗帘 | 154 |
右转四十五度 | 29 | 读取当前姿态 | 71 | 最大音量 | 113 | 开门 | 155 |
右转三十度 | 30 | 读取环境光 | 72 | 最小音量 | 114 | 关门 | 156 |
增速一档 | 31 | 读取指南针 | 73 | 中等音量 | 115 | 学习词 | ID |
减速一档 | 32 | 读取温度 | 74 | 播放古诗 | 116 | 学习唤醒词 | 200 |
打开车灯 | 33 | 读取加速度 | 75 | 打开灯光 | 117 | 学习命令词 | 201 |
关闭车灯 | 34 | 读取声音强度 | 76 | 关闭灯光 | 118 | 重新学习 | 202 |
巡线模式 | 35 | 读取按键A | 77 | 调高亮度 | 119 | 退出学习 | 203 |
追光模式 | 36 | 读取按键B | 78 | 调低亮度 | 120 | 我要删除 | 204 |
蓝牙遥控模式 | 37 | 读取P0 | 79 | 最高亮度 | 121 | 删除唤醒词 | 205 |
避障模式 | 38 | 读取P1 | 80 | 最低亮度 | 122 | 删除命令词 | 206 |
固件烧录 | 39 | 读取P2 | 81 | 调高色温 | 123 | 退出删除 | 207 |
人脸识别 | 40 | 校准电子陀螺 | 82 | 调低色温 | 124 | 全部删除 | 208 |
物体追踪 | 41 | 打开摄像头 | 83 | 最高色温 | 125 |
Mind+使用教程
说明
使用Mind+1.7.3及以上版本,打开扩展,在用户库中搜索SEN0539或语音识别模块。
程序示例
-
Arduino模式uno:
-
Python模式行空板:
MakeCode模块使用教程
MakeCode简介
MakeCode 是一个免费开源平台,旨在打造有吸引力的计算机科学学习体验,为实际编程奠定基础。网页版可以在线编程和下载固件。点击进入专为micro:bit打造的makecode网页版。
MakeCode加载voiceRecognition插件
- 在MakeCode网页版中新建一个项目,然后,点击右上方的“更多”按钮(齿轮图标),在其下拉菜单中选择“扩展”,打开扩展界面。
- 在搜索框中输入"https://github.com/DFRobot/pxt-DFRobot_voiceRecognition.git "
,然后点击搜索按钮(搜索框右边的放大镜按钮),就能看到voiceRecognition插件(如下图),然后点击它,就能把voiceRecognition的插件加载进来了。
- 编程界面中,你就能看到语音识别(SEN0539)模块,点击它,就会弹出指令积木块。
makecode案例:控制micro:bit点阵屏
本案例演示如何把语音识别模块连接到micro:bit主板,然后micro:bit主板从语音识别模块读取语音识别结果。micro:bit控制点阵屏显示笑脸、哭脸、爱心。
语音识别(SEN0539)与micro:bit的通信接口采用I2C接口。
准备材料
-
硬件
- micro:bit主板 x 1
- micro:bit扩展板 x1
- Gravity: 语音识别模块 - I2C & UART x 1
- 4Pin连接线(或杜邦线)
-
软件
硬件连线图
将micro:bit主板与IO扩展板正确连接,将语音识别模块通讯方式选择开关拨至I2C端按下图与扩展板连接。
样例代码
预期结果
说出固定唤醒词或学习的唤醒词唤醒语音识别模块,说出“显示笑脸”micro:bit上的点阵将显示笑脸,说出“显示哭脸”micro:bit上的点阵将显示哭脸,说出“显示爱心”micro:bit上的点阵将显示爱心,说出“关闭所有点阵”micro:bit上的点阵将全部关闭。
MakeCode模块说明
模块 | 说明 |
---|---|
初始化。只需要执行一次,放在主程序开始位置。需将语音识别模块通讯方式选择开关拨至I2C端。 | |
设置模块音量,范围0~7,数值越大音量越高 | |
设置模块是否为静音模式 | |
设置模块唤醒后重新进入休眠的时间,单位是秒,每成功识别一次命令时间都会刷新 | |
获取唤醒后重新进入休眠的时间 | |
播放命令词对应的回答语 | |
选择唤醒词ID | |
获取语音识别的识别结果并保存至识别结果模块中 | |
判断语音识别是否识别到命令 | |
选择学习的命令词ID | |
选择固定命令词ID | |
选择学习词ID |
常见问题
还没有客户对此产品有任何问题,欢迎通过 qq 或者论坛联系我们!
更多问题及有趣的应用,可以访问论坛进行查阅或发帖