语音唤醒功能篇

article/2025/9/13 5:34:06

语音唤醒功能

语音唤醒使得系统中的各个功能模块能够很好的分隔开来。用户通过唤醒词“依米”唤醒系统,发送语音指令,系统检测到语音指令中的关键词,然后去执行相对应的功能。当系统执行完成后,便进入等待下一次被唤醒状态,即等待信号状态。简而言之,用户需要使用某种功能的时候只需唤醒系统后发送语音指令即可。

语音唤醒这一功能不仅大大提升了智能家居人机交互的效率,用户还可以通过制定特定的唤醒词,让智能家居更加个性化。具体实现流程如下图所示。

在这里插入图片描述
首先需要在snowboy官网注册账号,录音并训练自己的模型,然后下载下来。这里提到一点,snowboy是开源的,可以从GitHub下载文件,文件夹目录结构如图所示:
在这里插入图片描述
图中的snowboy.umdl是官方的唤醒词文件,我们只需要把它换成自己训练好后的唤醒词文件,然后在程序中调用即可实现特定唤醒词唤醒功能。
值得注意的一点是:由于我的树莓派是3B型号的——没有声音输入模块,因此,我的树莓派还需要接入声卡和麦克风,后期的语音输入都是通过麦克风进行采集,所以当我们训练自己的唤醒词文件的时候注意把麦克风接入电脑,通过麦克风输入对唤醒词进行训练,以提高树莓派系统唤醒的精准度。

关键代码如下:

1.	global interrupted  
2.	model = '/home/pi/sheji/robot/resources/yimi.pmdl'  
3.	signal.signal(signal.SIGINT, signal_handler)  
4.	detector = snowboydecoder.HotwordDetector(model, sensitivity=0.5)  
5.	print('说出"依米"即可唤醒')      
6.	detector.start(detected_callback=callbacks,interrupt_check=interrupt_callback,sleep_time=0.03)  
7.	detector.terminate()  

其中detector.start(detected_callback=callbacks,interrupt_check=interrupt_callback,sleep_time=0.03)是开启snowboy功能,如果检测到唤醒词则执行callbacks函数,如果检测到中断则执行interrupt_callback函数,反之,则处于等待信号状态。

callbacks()函数的代码:

def callbacks():global detector  # 语音唤醒后,提示dingsnowboydecoder.play_audio_file()#  关闭snowboy功能detector.terminate()#  开启语音识别main()# 打开snowboy功能wake_up()    # wake_up —> main —> wake_up

我们会发现callbacks()函数里边还包含了main()函数,记住这个重要的函数,本系统很多功能都封装在了main()函数里边。

由于本系统的语音唤醒功能和访客功能是两个不同的检测信号,因此,需要对以上代码进行改进:

1.	global interrupted  
2.	    while True:          
3.	        detector.start(detected_callback=callbacks,interrupt_check=interrupt_callback,sleep_time=0.03)  
4.	        interrupted=False  
5.	detector.terminate()  

本系统把访客功能写入中断函数,系统通过检测不同的外部信号来决定所执行的功能,并在执行完后继续等待信号。
通过中断函数我们可以让系统同时检测两个不同的外部信号,并及时对检测到的外部信号做出相应的反映。
从某种意义上来说,这种改进使得snowboy可以同时检测多种信号,而不仅限于语音信号,可以是硬件的状态等。


http://chatgpt.dhexx.cn/article/HsaMhOVj.shtml

相关文章

语音唤醒

语音唤醒 前言一、语音唤醒相关环境搭建二、使用步骤1.使用流程2.示例代码 总结 前言 针对语音交互过程,提供了一种语音唤醒的方法供大家参考,语音交互采用snowboy离线语音唤醒引擎,snowboy已经被kitt.AI团队下架,但我们仍能够在…

语音唤醒简单说明

随着 Echo 出现,all in one 音响类产品雏形开始显现,语音交互成为最直接的控制方式,Amazon Echo作为最佳代表,智能语音交互成为互联网入口的新价值所在。ABI Research 在 2017 年収布的预测报告指出,估计到 2022 年,支持语音控制的装置出货量将达到 7500万台,其中智能喇…

语音唤醒技术的原理是什么?

https://www.toutiao.com/a6644766450860950024/ 2019-01-10 15:27:29 “天猫精灵。”“哎,在的,你说” “小爱同学,定明天早上8点的闹钟。”“好的,已经帮你定好明天早上8点的闹钟” 不少同学家里都有AI智能音箱产品&#xff0…

android系统看片软件,真正的手机看片神器 和视界手机APP评测

播放界面支持丰富的手势操作,我们可以通过上下左右的滑动手指来调整影片进度以及音量大小。和视界还可以选择不同的输出设备——只要硬件设备支持,我们可以通过手机将和视界中的视频内容投射到电视上观看。 注重影片的口碑效应,支持用户打分与…

FreeRTOS时间片调度

一、FreeRTOS时间片调度概述 FreeRTOS支持多个任务同时拥有一个优先级,这些任务的调度就可以使用时间片来进行调度。在FreeRTOS中允许一个任务允许一个时间片(一个时钟节拍的长度)后让出CPU的使用权,让拥有同优先级的下个任务运行…

MongoDB 分片集群技术

在了解分片集群之前,务必要先了解复制集技术! 1.1 MongoDB复制集简介 一组Mongodb复制集,就是一组mongod进程,这些进程维护同一个数据集合。复制集提供了数据冗余和高等级的可靠性,这是生产部署的基础。 1.1.1 复制集的…

片偏移怎么计算_计算机网络学习笔记(四)之网络层

点击蓝字关注我吧 越努力越幸运!!! 1 网络层的功能 1.1异构网络互联 网络的互联:指将两个以上的计算机网络,通过一定的方法, 用一种或多种通信处理设备(即中间设备)相互联接起来,以构成更大的网络系统。中间设备又称为中间系统或中继系统。根据中继系统所在…

IP分片浅析

一、IP分片原理 IP分片是网络上传输IP报文的一种技术手段。 IP协议在传输数据包时,将数据报文分为若干分片进行传输,并在目标系统中进行重组。 不同的链路类型规定有不同最大长度的链路层数据帧,称为链路层MTU(最大传输单元&#…

硅钢片知识点

文章目录 一、电工钢为什么选硅钢二、为什么要用硅钢“片”三、为什么电机用无取向,变压器用有取向硅钢片四、其他关于硅钢片应该了解的4.1 热轧和冷轧4.2 厚度4.3 牌号4.4 叠片系数4.5 冲片性 一、电工钢为什么选硅钢 电机和变压器的内部主要组成是铜绕组&#xf…

wireshark捕获IP分片数据包实践

一 简介 如果一个数据包超过1500个字节,就需要将该包进行分片发送。通常情况下,是不会出现这种情况的。 下面通过使用ICMP包,来产生IP分片数据包。 使用ICMP包进行测试时,如果不指定包的大小,可能无法查看被分片的数据…

mongo分片

分片 在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求。 当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量。这时,我们就可以通过在多台机器上分割数据…

IP分片报文的接收与重组

对于长度超过接口MTU的数据包,需要进行分片处理,IP报头中与分片相关的字段有如下几个: Identification - 用来确认不同的分片是否属于同一个IP报文; Flags - 其中IP_MF表示还有分片,此分片为…

数据 分片

背景 传统的将数据集中存储至单一节点的解决方案,在性能、可用性和运维成本这三方面已经难于满足海量数据的场景。 从性能方面来说,由于关系型数据库大多采用 B 树类型的索引,在数据量超过阈值的情况下,索引深度的增加也将使得磁…

MongoDB:海量存储基础-分片架构

文章目录 1.分片架构2.分片策略3.读写策略4.数据迁移 1.分片架构 分片是数据库中常用的提升存储容量的方式,它基于水平拓展的思想,将大量的数据按一定规则分配到不同的服务器中存储,比如MySQL集群可以借助Sharding-JDBC等外部框架对数据进行…

SpringBoot文件分片上传

背景 最近好几个项目在运行过程中客户都提出文件上传大小的限制能否设置的大一些,用户经常需要上传好几个G的资料文件,如图纸,视频等,并且需要在上传大文件过程中进行优化实时展现进度条,进行技术评估后针对框架文件上…

芯片的设计流程和流片成本

每天都在用,但你知道芯片的设计流程和流片成本吗? 2017-05-10 06:10 来源:半导行业观察 芯片,是无数设计工程师们烧死很多脑细胞后产生的作品,完全可以称得上是当代的艺术品。无论是电工们,还是科技小白…

华为防火墙分片缓存

分片缓存 分片缓存功能用来缓存先于首片分片报文到达的后续分片报文,避免分片报文被防火墙丢弃。 网络设备在传输报文时,如果设备上配置的MTU(Maximum Transfer Unit)小于报文长度,则会将报文分片后继续发送。 我们知道…

二三层报头及IP分片详解

一、报文数据格式 二、二层数据格式 二层以太帧格式 DMAC(6字节)SMAC(6字节)type(2字节)DATA(46-1500字节)CRC(4字节) 字段长度含义DMAC6字节目的MAC地址&am…

哈希分片总结

主要参考: 《大数据日知录》 https://zhuanlan.zhihu.com/p/34985026 什么是哈希分片 后台随着数据规约的越来越大,单机明显无法存储着庞大的数据量,只能依靠大规模集群在对数据进行存储和处理,所以系统的可扩展性也成为了很重要…

MongoDB 分片

分片 sharding 分片是指将数据拆分,将起分散到不同服务器的过程.,将数据分散到不同的服务器上,可以存储更多的数据,处理更大的负载 MongoDB分片机制允许你创建一个包含许多服务器(分片)的集群,将子数据分散在集群中.每个分片维护着一个数据集合的子集,相比单服务器和副本集&…