搭建简单的语音控制系统:自己家用

  • 为什么要整个这玩意
  • 思路
  • 开干
  • 最后

为什么要整个这玩意

~!对,您没看错,就是因为是进步的关键因素,哈哈。因为卧室灯的开关距离的比较远,每次睡觉都感觉不远万里去关掉灯,最崩溃的是已经躺下了,还是会被媳妇吼起来关灯,5555555,于是乎,整了个这玩意

思路

前提:语音控制或者app,再或者web页面控制灯的亮灭,反正就是我不动也能控制,另外原来电路仍然可用。

硬件:树莓派+esp8266+麦克风
软件:语音唤醒+语音转文字+语义判断

树莓派:自己有个3,现状已经出到4了,好像也不贵,选3,3b+都行 。主要用来跑服务的程序,其实用自己家电脑也可以,但一直开着比较费电。
esp8266:用它来控制继电器的开闭,就能实现灯的亮灭啦,单片子几块钱就能买,对于新手还是直接买现成的(20多块钱连app都带了,按上直接能用,但我偏偏要自己写个程序烧进去,哈哈)

开干

1.树莓派装系统:百度一堆,很简单,官网下img镜像,然后软件烧进去就行
2.安装home-assistant:主要是省去了自己写web节面,安装参考:home-asistantan安装

3.语音唤醒:目前比较出名的snowboy,但我在github上新发现了个ZouWu(驺吾,又是一神兽),Readme里宣称不必snowboy差,看了代码,是非常简洁易上手,提供了c和python的调用例子,不过缺点在于需要自己用树莓派录制三段唤醒词音频发到指定邮箱,没能像snowboy可以直接在网站录制生成模型,很意外的是我发过去没几分钟,模型就给我发回来了,比较赞,分享点其中python录音例子代码,其他的可以去GitHub上看:驺吾。

import argparse
import struct
import os
import sys
import numpy as np
import pyaudio
from datetime import datetime
from threading import Thread
from zouwu import ZouWuclass ZouWuDemo(Thread):              def __init__(self,library_path,model_path,sensitivities,mdl_id):super(ZouWuDemo, self).__init__()self._library_path = library_pathself._model_path = model_pathself._sensitivities = sensitivitiesself._mdl_id = mdl_idself._CHUNK = 512def rundemo(self):zouwu = Nonep = Nonestream = Nonetry:zouwu = ZouWu(self._library_path)            p = pyaudio.PyAudio()stream = p.open(rate=16000,channels=1,format=pyaudio.paInt16,input=True,frames_per_buffer=2048)#load modelzouwu.LoadModel(self._model_path)#set sensitivityzouwu.SetParam(self._sensitivities,self._mdl_id)            while True:#pcm = stream.read(self._CHUNK,exception_on_overflow = False)pcm = stream.read(self._CHUNK)data = struct.unpack_from("h" * self._CHUNK, pcm)result = zouwu.Proc(data)if result  > 0:print('[%s] detected keyword %d'  % (str(datetime.now()),result))           except KeyboardInterrupt:print('demo exiting ...')finally:if zouwu is not None:zouwu.release()if stream is not None:stream.close()if p is not None:p.terminate()                       if __name__ == '__main__':parser = argparse.ArgumentParser()parser.add_argument('--library_path',help="Zouwu's dynamic library path",type=str,default=os.path.join(os.path.dirname(__file__), '../../lib/rpi/libZouwu.so'))parser.add_argument('--model_path',help='model path',type=str,default=os.path.join(os.path.dirname(__file__), '../../resources/model/mdl'))parser.add_argument('--sensitivities', help='detection sensitivity [0, 1]', default=0.3)args = parser.parse_args()mdl_id = 1ZouWuDemo(library_path=args.library_path,model_path=args.model_path,sensitivities=args.sensitivities,mdl_id=mdl_id).rundemo()

4.语音转文字STT:讯飞和百度都能实现语音转文字,效果应该差不多,百度有账户就用百度了,讯飞还的注册,没去折腾,下面是调用的代码,这里是读文件的,可以直接录音传过去识别,自己根据情况改吧,参数数码可以看百度官网文档说明。

RATE = "16000"
FORMAT = "wav"
CUID="wate_play"
DEV_PID="1536"  #普通话识别
framerate=16000
NUM_SAMPLES=2000
channels=1
sampwidth=2
TIME=2def get_token():server = "https://openapi.baidu.com/oauth/2.0/token?"grant_type = "client_credentials"#API Keyclient_id = "写自己的key"#Secret Keyclient_secret = "写自己的key" #拼urlurl ="%sgrant_type=%s&client_id=%s&client_secret=%s"%(server,grant_type,client_id,client_secret)#获取tokenres = requests.post(url)token = json.loads(res.text)["access_token"]return token
#def get_word(token):
def get_word(token,wav):with open(wav, "rb") as f:speech = base64.b64encode(f.read()).decode('utf8')size = os.path.getsize(wav)headers = { 'Content-Type' : 'application/json'} url = "https://vop.baidu.com/server_api"data={"format":FORMAT,"rate":RATE,"dev_pid":DEV_PID,"speech":speech,"cuid":CUID,"len":size,"channel":1,"token":token,}req = requests.post(url,json.dumps(data),headers)result = json.loads(req.text)print(result)ret=result["result"][0]return ret

5.对返回的文字进行简单的逻辑判断,对灯是开是关,然后封装MQTT协议发出去。
6.esp8266控制继电器程序:我是用arduino写的,然后串口烧到板子里,就是接受的mqtt主题消息进行相关操作,方法见,arduino环境搭建
7.把esp8266节点以开关传感器添加到home-assistant的配置文件中,然后重启下home-assistant,界面就会有控制按钮啦。

最后

使用唤醒词的目的是不希望百度翻译一直听着,什么声音都传百度去了。这个驺吾唤醒的效果我还挺满意,还不错。
发现可以用苹果的siri控制了,貌似网上有教程。

搭建简单的智能家居语音控制系统:树莓派+唤醒词+esp8266相关推荐

  1. python语音控制智能家电_基于树莓派的智能家居语音控制系统

    2018-10 基于树莓派的智能家居语音控制系统 Intelligent home voice control system based on raspberry Pi 刘 华 , 田占生 , 冯宇飞 ...

  2. 智能家居语音控制系统的硬件设备详情

    看到很多小伙伴私信问我,本科毕业设计做的智能家居语音控制系统用到了哪些硬件设备,我在这篇文章做一个补充说明,以下就是我购买的部分硬件,树莓派买的是3B型号的. (https://img-blog.cs ...

  3. 基于STM32的物联网智能家居语音控制系统设计

    目录 第1章 引言 7 1.1 选题的背景及意义 7 1.2 智能家居技术的发展历程 8 1.2.1 国内智能家居技术发展情况 9 1.2.2 国外智能家居技术的发展情况 9 1.3 本课题研究目标及 ...

  4. 智能家居语音控制及人脸识别报告设计(树莓派)

    智能家居语音控制及人脸识别 目录 摘要................................................................................. ...

  5. 智能家居语音控制及摄像头人脸识别(含代码)

    智能家居语音控制及摄像头人脸识别 1.使用的软件及过程 2.python 人脸代码讲解 3.主函数代码讲解 1.使用的软件及过程 使用到的软件有secureSRT,filezilla,Visual S ...

  6. DIY 智能家居语音助理 —— 语音控制万物

    本文作者:默. 开源电子平台兴起以来,诞生了不少的创客们,他们用天马行空的想象力,创造出各种新鲜有趣的作品,他们热衷于改变千篇一律的生活,享受科技创造带来的乐趣.其中与我们的生活息息相关的就包括智能家 ...

  7. 开源项目搭建私有物联网智能家居接入天猫精灵控制

    开源项目搭建私有物联网智能家居接入天猫精灵控制 最近几年随着物联网的高速发展,众多智能硬件厂商都开发出自己的智能家居产品,都想在物联网智能家居市场上占有自己的一席之地,而随着众多智能音箱的问世,智能家 ...

  8. AHURATUS智能家居语音助手

    AHURATUS智能家居语音助手 (AHURATUS Smart Home Voice Assistant) Ehsan ShaghaeiEhsan Shaghaei开发 Innopolis Univ ...

  9. 智能家居设计原理c语言,详解智能家居的控制系统工作原理

    智能家居控制系统简介 是以住宅为平台,家居电器及家电设备为主要控制对象,利用综合布线技术.网络通信技术.安全防范技术.自动控制技术.音视频技术将家居生活有关的设施进行高效集成,构建高效的住宅设施与家庭 ...

  10. 智能家居终端控制系统毕业设计报告

    毕业设计报告 题目:智能家居终端控制系统 专 业:物联网应用技术班 级:12届物联网1班指导教师: 无 学生姓名: 02,04,23,45 答辩日期: 2014.11.26 佛山职业技术学院 目 录 ...

最新文章

  1. jquery操作select取值赋值与设置选中[转]
  2. python中ThreadLocal的理解与使用
  3. 对python的认识作文500字_对阅读新认识作文500字
  4. python 对链表进行插入排序
  5. 安装phpstudy之后发现80端口被占用
  6. JS中闭包的应用自定义JS模块2
  7. 河北师范大学计算机应用技术分数线,2019年河北师范大学各专业录取分数线
  8. Java学习四步曲,助你成长!
  9. php退款申请源码,PHP实现微信申请退款功能
  10. QTP自动化测试最佳实践
  11. Discuz论坛验证码破解
  12. 01GOF23-创建模型式
  13. python三张照片画面拼接
  14. 自治,甲骨文继续领先的开始?
  15. 2022数据库系统工程师 下午 真题答案
  16. win10右键菜单没有新建Excel选项的解决方法
  17. Matlab数学建模(八):评价型模型
  18. 浙大版《C语言程序设计(第3版)》题目集
  19. 5G新空口关键技术之--信道编码
  20. 依赖树(dependecyTree)-语义边、两个词语之间的依赖边路径

热门文章

  1. threejs第十三用 简单堆积木
  2. 按下()快捷键 可以迅速锁定计算机,电脑锁定的快捷键
  3. 天翼云服务器80、443等特殊端口无法访问原因记录
  4. 金融分析与风险管理——投资组合的绩效评估
  5. 钛资本研究院:医疗人工智能与未来医院信息化建设
  6. 详解冯诺依曼体系结构与操作系统
  7. 【图像处理技术】 | 黑科技解读 之 PS检测、弯曲拉平、切边增强、摩尔纹
  8. 小米Air3笔记本拆机踩坑教程
  9. uni-app 启动手机模拟器
  10. 如何在直播、会议、视频中使用虚拟形象