Rpi Zero W做的老头乐声控灯

祭图__|\0==>历经各种尝试,最后选了docker 里装个rhasspy,配上paho-mqtt搞出了这个奇葩夜灯。各种曲折就不说了,直接分享捷径思路。

这个绿板子是respeaker hat with 2 mic 用的是seeed-voicecard,跟着github编译,不废话。上图Rhasspy中开3个模块足够了。

intent recognition或者intent handling模块真不建议。喵的说个词,它后台运行十几秒,还开个毛线灯。有尝试在pocketsphinx下用mfa和praat自己编个迷你g2p.fst去找,做到textgrid file之后,再打包成customized model.zip 居然还要用kaldi,然后这个kaldi软件死活要配置好显卡参数才能装,终于成功在这里把我劝退了。

此时恍悟,不如直接用唤醒词试试,发现唤醒词敏感度很好且误报率又低,于是直接用这个思路来了个歪招。而且后来一看htop的情况,也觉得rpi zero 也撑到极限了,想上点花里胡哨的,1Ghz内核不答应(运算能力),armv6也不会答应(软件多样性)。

代码结构上,就俩文件一个订阅对应频道,响应唤醒词。另一个是监控对应gpio,长时间高电平,我就给你关了。

import RPi.GPIO as GPIO
import paho.mqtt.client as mqtt
import timeGPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)LED=21
GPIO.setup(LED, GPIO.OUT)
GPIO.output(LED,GPIO.LOW)flag = 0def on_connect(client, userdata, flags, rc):print("Connected with result code "+str(rc))#client.subscribe("hermes/intent/ChangeLightState") #subcribed channelclient.subscribe("hermes/hotword/bumblebee_raspberry-pi/detected")#client.subscribe("hermes/asr/textCaptured")#def on_message(client, userdata, msg,ledpin=LED):
#  mypay = msg.payload.decode("utf-8")
#  print ("message received:",msg.topic,mypay)
#  if mypay=="1":
#    GPIO.output(ledpin,GPIO.HIGH)
#  if mypay=="0":
#    GPIO.output(ledpin,GPIO.LOW)def on_message(client,userdata,msg,ledpin=LED):print("message: ",msg.topic)global flag#if flag % 2 == 1 and GPIO.input(ledpin) == 0: #单数但低电平,说明时间程序关了gpio,实际应用其实可以不加,喊多一声而已。#    flag = 0#else:#    flag = flag + 1flag = flag + 1if flag % 2 == 1: #单数开灯flag = 1 #重置一下flag,不让它变很大GPIO.output(ledpin,GPIO.HIGH)start_time = int(time.time())else:flag = 0GPIO.output(ledpin,GPIO.LOW)client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_messageclient.connect("localhost", 1883)
#client.loop_forever()
try:client.loop_forever()
except:GPIO.output(LED,GPIO.LOW)
import time
import RPi.GPIO as GPIOGPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
LED = 21
GPIO.setup(LED,GPIO.OUT)while True:if GPIO.input(LED) == 1:a = 0while GPIO.input(LED) == 1:time.sleep(1)a = a + 1if a > 59:GPIO.output(LED,GPIO.LOW)time.sleep(3)

rhasspy中有用的配置也就红绿框,

docker 跑rhasspy 针对pi zero是要选择平台参数才能pull的。然后运行命令如下

docker run -p 12101:12101  --network host    --name rhasspy --restart unless-stopped -v "$HOME/.config/rhasspy/profiles:/profiles" -v "/etc/localtime:/etc/localtime:ro" -v "/etc/asound.conf:/etc/asound.conf" --device /dev/snd:/dev/snd --ipc="host" rhasspy/rhasspy --user-profiles /profiles --profile vv

#这个vv profile是customized profile,是我照抄标准en后,对字典做了缩减,但是因为没有用intent类型的功能,这玩意儿也不重要。

接下来太阳能部分用到的工具(还在犯懒,此刻没有焊上去),除了那块太阳能板,你还需要一个mppt和一个稳压电路。

等试运行了看下实际不实际吧,嘎嘎。

最后吐槽一下pocketsphinx以及与它沆瀣一气的那些个科研工具,mfa和praat。喵了个咪的,我就想说有点装。搞一个自己的音频模型,过程里的其他软件使用很多。截图一下mfa alignment的基本使用和Textgrid的生成。然后再截图一个praat软件,对于说话识别的使用方式。万一没头脑以后还要用,这里可以提示一下用法。

图中参数有点错了,我其实应该选single speaker。

下图为praat,音频对应的语音标注。注意最初这个textgrid,无中生有是从wav变出来的,下拉菜单里有个叫annotation的东西,点了之后把默认的bell改成pitch。图中是人工标注,保存后再会由mfa根据标准字典,矫正好并在english_output文件夹里输出最终版的Textgrid 文件。

总之就是遭老罪。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/51404.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序开发(百货商战)实战项目的购物车和个人中心的创建

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

玩转usbserver之usbserver日志报警

一、graylog 介绍 graylog是一个简单易用、功能较全面的日志管理工具,graylog也采用Elasticsearch作为存储和索引以保障性能,MongoDB用来存储少量的自身配置信息,master-node模式具有很好的扩展性,UI上自带的基础查询与分析功能比…

JAVAWeb实战(后端篇)

因为前后端代码内容过多,这篇只写后端的代码,前端的在另一篇写 项目实战一: 1.创建数据库,表等数据 创建数据库 create database schedule_system 创建表,并添加内容 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ---------…

向日葵RCE复现(CNVD-2022-10270/CNVD-2022-03672)

一、环境 1.1 网上下载低版本的向日葵<2022 二、开始复现 2.1 在目标主机上打开旧版向日葵 2.2 首先打开nmap扫描向日葵主机端口 2.3 在浏览器中访问ip端口号cgi-bin/rpc?actionverify-haras &#xff08;端口号&#xff1a;每一个都尝试&#xff0c;直到获取到session值…

动手学深度学习V2每日笔记(权重衰退+Dropout)

本文主要参考沐神的视频教程 https://www.bilibili.com/video/BV1UK4y1o7dy/vd_sourcec7bfc6ce0ea0cbe43aa288ba2713e56d 文档教程 https://zh-v2.d2l.ai/ 本文的主要内容对沐神提供的代码中个人不太理解的内容进行笔记记录&#xff0c;内容不会特别严谨仅供参考。 1.函数目录…

科普文:万字详解Kafka基本原理和应用

一、Kafka 简介 1. 消息引擎系统ABC Apache Kafka是一款开源的消息引擎系统&#xff0c;也是一个分布式流处理平台。除此之外&#xff0c;Kafka还能够被用作分布式存储系统&#xff08;极少&#xff09;。 A. 常见的两种消息引擎系统传输协议&#xff08;即用什么方式把消息…

【机器学习】探索图神经网络 (GNNs): 揭秘图结构数据处理的未来

&#x1f48e; 欢迎大家互三&#xff1a;2的n次方_ ​ &#x1f48e;1. 引言 图结构数据在现实世界中无处不在&#xff0c;从社交网络中的用户关系&#xff0c;到推荐系统中的用户-物品交互&#xff0c;再到生物信息学中的分子结构。传统的机器学习模型在处理这些数据时常常力…

【Unity插件】Editor Console Pro:提升开发效率的神器

在 Unity 开发过程中&#xff0c;控制台&#xff08;Console&#xff09;是我们排查错误、获取信息的重要窗口。而 Editor Console Pro 则是 Unity 编辑器控制台的强大替代品&#xff0c;为 Unity 的控制台带来了更多实用的功能和改进&#xff0c;极大地提升了开发效率。 一、…

力扣刷题----42. 接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图&#xf…

TCP程序设计

TCP概述 建立连接 客户端和服务器端在建立连接时&#xff1a; 服务端是典型的监听接受连接的模式&#xff0c;就是ListenAccept 客户端是主动建立连接的模式&#xff0c;就是Dial Go语言中使用 net包实现网络的相关操作&#xff0c;包括我们TCP的操作。 用于建立连接的典型…

【JavaEE】阻塞队列

目录 一.阻塞队列(Blocking Queue) 1.什么是阻塞队列 2.特性 二.生产者消费者模型 1.什么是生产者消费者模型&#xff1f; 2.生产者消费模型的好处 2.1解耦合 2.2削峰填谷 三.如何在java中使用阻塞队列 四.模拟实现阻塞队列 1.加锁 2.阻塞等待实现 3.解决interru…

学习c语言第十三天(结构体)

一.结构体声明 结构是一些值的集合&#xff0c;这些值称为成员变量。结构的每个成员可以是不同类型的变量。 描述复杂对象。 结构体成员可以是标量、数组、指针、结构体。 定义和初始化&#xff1a; struct peo {char namer[20];char tele[12];char sex[5];int high; }; s…

git 迁移仓库的方法

git Git是一个开源的分布式版本控制系统&#xff0c;由Linus Torvalds在2005年创建&#xff0c;用于有效、高速地处理从小到大的项目管理。它最初是为Linux内核开发而设计的&#xff0c;但很快被广泛用于各种项目。 以下是Git的一些主要特性&#xff1a; 分布式架构&#xff…

Python设计模式 - 工厂方法模式

定义 工厂方法模式是一种创建型设计模式&#xff0c;它定义一个创建对象的接口&#xff0c;让其子类来处理对象的创建&#xff0c;而不是直接实例化对象。 结构 抽象工厂&#xff08;Factory&#xff09;&#xff1a;声明工厂方法&#xff0c;返回一个产品对象。具体工厂类都…

4.JAVA-运算符

算数运算符 隐式类型转换 强制转换 字符串操作 字符相加 小结 自增自减运算符 赋值运算符 关系运算符 逻辑运算符 短路逻辑运算 三元运算符 运算符优先级 这里小括号优先于所有&#xff0c;所以想要哪一个优先运算&#xff0c;就可以将哪一个用小括号扩起来&#xff0c;比较方便…

酒店押金原路退回系统开通方法,手机查看报表

一、酒店押金管理有哪些&#xff1f; 1.渠道有银行预授权 2.微信押金支付 3.酒店押金系统 4.支付押金管理 二、专业酒店押金管理VS银行 序号功能专业押金系统银行预授权1收款方式支持微信、支付宝、银联app、信用卡、花呗需要带银行卡刷卡2资金安全区分房费和押金&#x…

PermissionError: [Errno 13] Permission denied

PermissionError: [Errno 13] Permission denied 目录 PermissionError: [Errno 13] Permission denied 【常见模块错误】 【错误原因】 【解决方案】 检查文件或目录的权限 确保文件路径正确 关闭其他占用文件的程序 运行程序时提升权限 更改 Python 的工作目录 示例代…

什么是职场?如何在职场中提升自己的情商?

职场这一概念&#xff0c;实质上是指在工作场所中&#xff0c;员工与员工之间、员工与组织之间相互发生作用和影响的一个特定环境。它不仅仅局限于办公室&#xff0c;还延展到会议室、休息室、餐厅等场所&#xff0c;这些场所交织成了一个错综复杂的职场生态系统。在这个系统中…

哪里可以查找短视频素材?6个素材查找下载渠道分享!

在短视频的风靡浪潮中&#xff0c;不少创作者纷纷投身于这一领域&#xff0c;无论是分享生活点滴还是进行商业宣传&#xff0c;高质量的短视频内容总能吸引众多观众的目光。然而&#xff0c;精良的短视频制作离不开优质的素材支持。本文将为大家介绍6个优秀的高质量短视频素材下…

POJ2739.Sum of Consecutive Prime Numbers

欧拉筛处理2-1e4的质数&#xff0c;再用尺取法即可 // Problem: Sum of Consecutive Prime Numbers // Contest: POJ - Japan 2005 // URL: http://poj.org/problem?id2739 // Memory Limit: 65 MB // Time Limit: 1000 ms // // Powered by CP Editor (https://cpeditor.or…