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

相关文章

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

Python验证码识别方式(使用pytesseract库)

《Python验证码识别方式(使用pytesseract库)》:本文主要介绍Python验证码识别方式(使用pytesseract库),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1、安装Tesseract-OCR2、在python中使用3、本地图片识别4、结合playwrigh

MySQL精准控制Binlog日志数量的三种方案

《MySQL精准控制Binlog日志数量的三种方案》作为数据库管理员,你是否经常为服务器磁盘爆满而抓狂?Binlog就像数据库的“黑匣子”,默默记录着每一次数据变动,但若放任不管,几天内这些日志文件就... 目录 一招修改配置文件:永久生效的控制术1.定位my.cnf文件2.添加核心参数不重启热更新:高手应

Python 异步编程 asyncio简介及基本用法

《Python异步编程asyncio简介及基本用法》asyncio是Python的一个库,用于编写并发代码,使用协程、任务和Futures来处理I/O密集型和高延迟操作,本文给大家介绍Python... 目录1、asyncio是什么IO密集型任务特征2、怎么用1、基本用法2、关键字 async1、async

Python中edge-tts实现便捷语音合成

《Python中edge-tts实现便捷语音合成》edge-tts是一个功能强大的Python库,支持多种语言和声音选项,本文主要介绍了Python中edge-tts实现便捷语音合成,具有一定的参考价... 目录安装与环境设置文本转语音查找音色更改语音参数生成音频与字幕总结edge-tts 是一个功能强大的

使用Python和PaddleOCR实现图文识别的代码和步骤

《使用Python和PaddleOCR实现图文识别的代码和步骤》在当今数字化时代,图文识别技术的应用越来越广泛,如文档数字化、信息提取等,PaddleOCR是百度开源的一款强大的OCR工具包,它集成了... 目录一、引言二、环境准备2.1 安装 python2.2 安装 PaddlePaddle2.3 安装

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.

SpringBoot请求参数接收控制指南分享

《SpringBoot请求参数接收控制指南分享》:本文主要介绍SpringBoot请求参数接收控制指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring Boot 请求参数接收控制指南1. 概述2. 有注解时参数接收方式对比3. 无注解时接收参数默认位置

Spring Security+JWT如何实现前后端分离权限控制

《SpringSecurity+JWT如何实现前后端分离权限控制》本篇将手把手教你用SpringSecurity+JWT搭建一套完整的登录认证与权限控制体系,具有很好的参考价值,希望对大家... 目录Spring Security+JWT实现前后端分离权限控制实战一、为什么要用 JWT?二、JWT 基本结构

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络