树莓派Pico开发板与Gravity语音识别模块接口及其语音控制MicroPython编程

本文主要是介绍树莓派Pico开发板与Gravity语音识别模块接口及其语音控制MicroPython编程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

**摘要:**介绍Gravity语音识别模块的主要功能及其特性,讲述树莓派Pico与Gravity语音识别模块接口连接的基本方法,介绍使用Gravity语音识别模块学习语音唤醒词/命令词并给出I2C通信接口语音识别MicroPython库,以及基于树莓派Pico开发板和Gravity语音识别模块的语音控制MicroPython测试程序。
一、Gravity语音识别模块介绍
1.模块简介

Gravity语音识别模块是DFRobo推出的一款新颖语音识别智能硬件传感器模块,Gravity语音识别模块如图1所示。
在这里插入图片描述
图1 Gravity语音识别模块
Gravity语音识别模块采用了最新的离线语音识别芯片,它内置了150条常用的固定命令词,新增命令词自学习功能,自学习命令词可以是一段语音,也可以是一段口哨、一声狗叫等,支持17条自学习命令词;模块采用双麦克风获取语音使其有更好的抗噪能力和更远的识别距离;模块自带一个喇叭SPK1和外接喇叭SPK2的接口,能实时语音反馈识别结果;模块使用Gravity接口(3.3~5V直流供电电压),采用I2C接口和UART接口两种通讯方式,通信接口支持Arduino Uno、树莓派、ESP32、树莓派、树莓派Pico等开发板;模块板载电源指示灯(红)和唤醒状态指示灯(蓝)。
Gravity语音识别模块(简称Gravity模块)接口与引脚如图2所示。
在这里插入图片描述
图2 Gravity语音识别模块接口信号
在图2的Gravity模块中,Gravity接口信号有D/T(I2C-SDA, UART-TxD)、C/R(I2C-SCL, UART-RxD)、GND、(VCC(3.3V~5V)。Gravity接口支持I2C和UART两种通信方式,当通讯模式开关拨到I2C一侧时模块工作于I2C通信方式,通讯模式开关拨到UART一侧时模块工作于UART通信方式。当喇叭开关拨到SPK1一侧时使用模块板载喇叭输出,当喇叭开关拨到SPK2一侧时使用外接喇叭输出。
2. Gravity模块主要参数
(1)工作电压:3.3~5V
(2)最大工作电流:≤370 mA(5V)
(3)通信方式:I2C/UART
(4)I2C地址:0x64
(5)固定命令词条数:135条
(6)学习命令词条数:17条
(7)学习唤醒词条数:1条
(8)板载麦克风灵敏度:-28db
(9)模块尺寸:49×32 mm
三、树莓派Pico开发板Gravity语音识别模块接口
Gravity模块与MCU的通信接口有两种,分别是I2C通信接口方式和UART通信接口方式。(1)I2C通信接口方式信号连接:MCU的I2C接口信号引脚SDA连到Gravity模块的接口信号引脚D/T,MCU的I2C接口信号引脚SCL连接到Gravity模块的接口信号引脚C/R,GND接到Gravity模块的GND,3.3v~5v直流电源 (一般为5V或3.3V,取决于所选用的MCU)接Gravity模块的VCC;(2)UART通信接口方式信号连接:MCU的UART接口信号引脚RxD连到Gravity模块的接口信号引脚D/T,MCU的UART接口信号引脚TxD连接到Gravity模块的接口信号引脚C/R,GND接到Gravity模块的GND,3.3~5v直流电源接Gravity模块的VCC。
这里以树莓派Pico开发板与Gravity语音识别模块I2C通信接口工作方式为例进行介绍。
1.所需实验设备和元器件清单
• PC机(或笔记本)×1
• 树莓派Pico开发板×1
• Micro-USB数据线×1
• Gravity语音识别模块×1
• 470Ω色环电阻×1
• LED灯×1
• 面包板×1
• 公对公跳线×5
2.树莓派Pico开发板与Gravity语音识别模块硬件接口
在Gravity语音识别模块I2C通信方式下,树莓派Pico开发板与Gravity语音识别模块硬件接口原理图如图3所示,Pico开发板与Gravity语音识别模块接口硬件面包板接线实物图如图4所示。
在这里插入图片描述
图3 树莓派Pico开发板与Gravity语音识别模块硬件接口原理图
在这里插入图片描述
图4 树莓派Pico开发板与Gravity语音识别模块接口硬件面包板接线实物图
从图3和图4可知,这里的树莓派Pico开发板与Gravity语音识别模块I2C通信接口信号引脚连接如下:
(1) I2C0 SDA(Pico开发板Pin1,GP0)- D/T(Gravity模块)
(2) I2C0 SCL (Pico开发板Pin2,GP1)-C/R(Gravity模块)
(3) GND(Pico开发板Pin38)-GND(Gravity模块)
(4) VBus(Pico开发板Pin40,即+5v)-VCC(Gravity模块, 3.3v~5v)
树莓派Pico开发板与Gravity语音识别模块接口硬件按照图4面包板接线实物图接好后,将Gravity模块的通讯模式开关拨到I2C一侧让设备工作于I2C通信方式,喇叭开关拨到SPK1一侧让模块的板载喇叭SPK1输出声音。打开电脑,将Micro-USB数据线插入Pico开发板和电脑USB接口接通电源后,Gravity语音识别模块内置喇叭SPK1将发出“欢迎使用语音识别助手”语音。接下来,可根据语音控制实际应用需要,先使用Gravity模块学习语音唤醒词与命令词,然后进行语音控制相关软件应用的开发。
四、基于树莓派Pico开发板与Gravity语音识别模块接口的MicroPython语音控制实践
**语音控制编程实践任务:**针对图4中已连接并设置好的树莓派Pico开发板与Gravity语音识别模块接口硬件(以下简称语音识别设备),编制满足以下要求的语音控制MiroPython测试程序。
(1)当对语音识别设备说出默认的唤醒词如[小爱同学]或者说出自定义唤醒词[小雨同学]时,Gravity模块的唤醒状态指示灯亮,语音助手被唤醒;
(2)在语音助手唤醒状态下,当对语音识别设备说出固定命令词[打开灯光]或自定义命令词[开灯]时LED灯点亮,当说出固定命令词[关闭灯光]或自定义命令词[关灯]时LED灯点熄灭。
1.学习唤醒词与命令词
唤醒词是指将语音识别设备从待机状态切换到工作状态的词语,是用户与语音识别设备互动的第一个接触点。命令词是指用户对语音识别设备发出一定的指令,以此与语音识别设备进行交互或者沟通的词语。当Gravity模块加电(3.3~5V)后,就可以学习自定义的唤醒词与命令词,学习的自定义唤醒词有1个,学习的自定义命令词最多有17个。
(1)学习唤醒词
首先用默认的语音唤醒词唤醒Gravity模块[语音识别助手],然后说出[学习唤醒词],根据语音提示来学习语音唤醒词(注意,每次学习命令词前需删除前一次学习的唤醒词,请参考后面介绍的删除唤醒词和删除命令词)
语音提示:学习状态中,保持安静,请说出需要学习的唤醒词!
待学习的唤醒词{以[小雨同学]为例说明}:[小雨同学]
语音提示:学习成功,请再说次!
待学习的唤醒词:[小雨同学]
语音提示:学习成功,请再说一次!
待学习的唤醒词:[小雨同学]
语音提示:学习完成
就可以使用学习过的唤醒词来唤醒语音助手!
(2)学习命令词
用默认或已学习的语音唤醒词{这里为[小雨同学] }唤醒Gravity模块[语音识别助手],然后说出[学习命令词],根据语音提示来学习命令词(每次学习命令词前需删除前一次学习的命令词,请参考下面(3)中的删除唤醒词和删除命令词)
语音提示:学习状态中,保持安静,请按提示学习命令词!请说出第一条要学习的指令!
待学习的命令词{以[开灯]为例说明}:[开灯]
语音提示:学习成功,请再说一次!
待学习的命令词:[开灯]
语音提示:学习成功,请再说一次!
待学习的命令词:[开灯]
语音提示:恭喜你第一条指令学习成功!请说出第二条要学习的指令!
待学习的命令词{以[关灯]为例说明}:[关灯]
语音提示:学习成功,请再说一次!
待学习的命令词:[关灯]
语音提示:学习成功,请再说一次!
待学习的命令词:[关灯]
语音提示:恭喜你第二条指令学习成功!请说出第三条要学习的指令!
…… (如果后面还有更多待学习的命令词,重复以上步骤继续学习即可)
这里仅学习两个命令词,两条命令词学习完成后接着说出[退出学习]即可退出当前的学习状态。
学习结束后会自动生成一个语音命令词ID,表1所示中是Gravity模块的部分唤醒词/命令词ID对照表,通过该命令ID编制语音控制程序即可对要控制对象进行语音控制。
表1 Gravity模块的部分唤醒词/命令词ID对照表
在这里插入图片描述
从表1可以看出,上面“学习的唤醒词”[小雨同学]ID号为1,“学习的第1个自定义命令词”[开灯]ID号为5,“学习的第2个自定义命令词”[关灯]ID号为6;默认的唤醒词[小爱同学]ID号为3,固定命令词[打开灯光]ID号为117,固定命令词[关闭灯光]ID号为118。
(3)删除唤醒词和命令词
用唤醒词(默认或已学习的)唤醒[Gravity模块语音识别助手],然后说出[我要删除],根据提示删除命令词。
提示:请问需要删除的是学习的唤醒词还是命令词!
[删除唤醒词]:删除学习过的唤醒词!
[删除命令词]:删除学习过的命令词!
[全部删除]:删除学习过的唤醒词和命令词!
[退出删除]:退出当前的删除状态。
2.使用MicroPython编写语音控制测试程序
(1) Gravity语音识别模块I2C通信方式MicroPython库
Gravity语音识别模块I2C通信方式MicroPython语音识别库程序清单如下:

# Filename: Gravity_DF2301Q_I2C.py
from micropython import const

这篇关于树莓派Pico开发板与Gravity语音识别模块接口及其语音控制MicroPython编程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1048804

相关文章

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

AOP编程的基本概念与idea编辑器的配合体验过程

《AOP编程的基本概念与idea编辑器的配合体验过程》文章简要介绍了AOP基础概念,包括Before/Around通知、PointCut切入点、Advice通知体、JoinPoint连接点等,说明它们... 目录BeforeAroundAdvise — 通知PointCut — 切入点Acpect — 切面

C#异步编程ConfigureAwait的使用小结

《C#异步编程ConfigureAwait的使用小结》本文介绍了异步编程在GUI和服务器端应用的优势,详细的介绍了async和await的关键作用,通过实例解析了在UI线程正确使用await.Conf... 异步编程是并发的一种形式,它有两大好处:对于面向终端用户的GUI程序,提高了响应能力对于服务器端应

C# async await 异步编程实现机制详解

《C#asyncawait异步编程实现机制详解》async/await是C#5.0引入的语法糖,它基于**状态机(StateMachine)**模式实现,将异步方法转换为编译器生成的状态机类,本... 目录一、async/await 异步编程实现机制1.1 核心概念1.2 编译器转换过程1.3 关键组件解析

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

浅析Spring如何控制Bean的加载顺序

《浅析Spring如何控制Bean的加载顺序》在大多数情况下,我们不需要手动控制Bean的加载顺序,因为Spring的IoC容器足够智能,但在某些特殊场景下,这种隐式的依赖关系可能不存在,下面我们就来... 目录核心原则:依赖驱动加载手动控制 Bean 加载顺序的方法方法 1:使用@DependsOn(最直

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

Spring如何使用注解@DependsOn控制Bean加载顺序

《Spring如何使用注解@DependsOn控制Bean加载顺序》:本文主要介绍Spring如何使用注解@DependsOn控制Bean加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录1.javascript 前言2. 代码实现总结1. 前言默认情况下,Spring加载Bean的顺

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间