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

相关文章

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

使用Python实现文本转语音(TTS)并播放音频

《使用Python实现文本转语音(TTS)并播放音频》在开发涉及语音交互或需要语音提示的应用时,文本转语音(TTS)技术是一个非常实用的工具,下面我们来看看如何使用gTTS和playsound库将文本... 目录什么是 gTTS 和 playsound安装依赖库实现步骤 1. 导入库2. 定义文本和语言 3

Python异步编程中asyncio.gather的并发控制详解

《Python异步编程中asyncio.gather的并发控制详解》在Python异步编程生态中,asyncio.gather是并发任务调度的核心工具,本文将通过实际场景和代码示例,展示如何结合信号量... 目录一、asyncio.gather的原始行为解析二、信号量控制法:给并发装上"节流阀"三、进阶控制

使用PyTorch实现手写数字识别功能

《使用PyTorch实现手写数字识别功能》在人工智能的世界里,计算机视觉是最具魅力的领域之一,通过PyTorch这一强大的深度学习框架,我们将在经典的MNIST数据集上,见证一个神经网络从零开始学会识... 目录当计算机学会“看”数字搭建开发环境MNIST数据集解析1. 认识手写数字数据库2. 数据预处理的

使用DrissionPage控制360浏览器的完美解决方案

《使用DrissionPage控制360浏览器的完美解决方案》在网页自动化领域,经常遇到需要保持登录状态、保留Cookie等场景,今天要分享的方案可以完美解决这个问题:使用DrissionPage直接... 目录完整代码引言为什么要使用已有用户数据?核心代码实现1. 导入必要模块2. 关键配置(重点!)3.

Pytorch微调BERT实现命名实体识别

《Pytorch微调BERT实现命名实体识别》命名实体识别(NER)是自然语言处理(NLP)中的一项关键任务,它涉及识别和分类文本中的关键实体,BERT是一种强大的语言表示模型,在各种NLP任务中显著... 目录环境准备加载预训练BERT模型准备数据集标记与对齐微调 BERT最后总结环境准备在继续之前,确

SpringSecurity 认证、注销、权限控制功能(注销、记住密码、自定义登入页)

《SpringSecurity认证、注销、权限控制功能(注销、记住密码、自定义登入页)》SpringSecurity是一个强大的Java框架,用于保护应用程序的安全性,它提供了一套全面的安全解决方案... 目录简介认识Spring Security“认证”(Authentication)“授权” (Auth

python之流程控制语句match-case详解

《python之流程控制语句match-case详解》:本文主要介绍python之流程控制语句match-case使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录match-case 语法详解与实战一、基础值匹配(类似 switch-case)二、数据结构解构匹