树莓派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

相关文章

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

如何正确识别一台POE交换机的好坏? 选购可靠的POE交换机注意事项

《如何正确识别一台POE交换机的好坏?选购可靠的POE交换机注意事项》POE技术已经历多年发展,广泛应用于安防监控和无线覆盖等领域,需求量大,但质量参差不齐,市场上POE交换机的品牌繁多,如何正确识... 目录生产标识1. 必须包含的信息2. 劣质设备的常见问题供电标准1. 正规的 POE 标准2. 劣质设

MySQL的JDBC编程详解

《MySQL的JDBC编程详解》:本文主要介绍MySQL的JDBC编程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、前置知识1. 引入依赖2. 认识 url二、JDBC 操作流程1. JDBC 的写操作2. JDBC 的读操作总结前言本文介绍了mysq

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 关键组件解析