python之使用snowboy离线语音唤醒

介绍

snowboy 是一个开源的、轻量级语音唤醒引擎,比较好用

训练语音模型网址:

https://snowboy.hahack.com/

环境

开发环境为: ubuntu 21.04

sudo apt-get install alsa-base
sudo apt-get install alsa-utils
sudo apt-get install libasound2-dev
sudo apt-get install pulseaudio
sudo apt-get install swig
sudo apt-get install libatlas-base-dev
sudo apt-get install pyaudio
sudo apt-get install sox

swig安装不成功:

采用:swig安装

pyaudio 开始播放音乐

sudo aplay test.wav

获取snowboy

使用

git clone https://github.com/Kitt-AI/snowboy.git

git clone https://gitee.com/william_william/snowboy.git

测试使用

首先使用命令

cd ../../swig/Python3 && make

获取对应该系统的_snowboydetect.so,不是一个系统的直接copy会报错的。


打开snowboydecoder.py 文件,将代码 from * import snowboydetect 改为 import snowboydetect 即可。

进入目录 snowboy/examples/Python3 并运行以下命令:

python3 demo.py resources/models/snowboy.umdl

创建一个demo

首先创建一个demo文件夹,

然后把resources文件夹、demo.pysnowboydecoder.pysnowboydetect.py

_snowboydetect.so (_snowboydetect.so 在swig/Python3的目录下) 复制到该文件夹,还有把训练的模型也复制其中。

在该文件夹下运行以下命令:

python3 demo.py xxx.umdl

Integration

#!/bin/python3
# 直接 唤醒 并且执行某个函数
import snowboydecoder
import sys
import signal
import os
import subprocess as sub# 执行 bash 类
# pip3 install subprocess class Run():# 初始化 参数;args 为数组 ['python3','xx.py']def __init__(self,args,shell=True,encoding="utf-8"):self.args = argsself.shell = shellself.encoding =encoding# 处理 args 为一个字符串 def Handle(self):arg = ''for item in self.args:arg += item +' 'return arg# 执行 命令行def run(self):res = self.Handle()res = sub.run(res,shell=self.shell,encoding=self.encoding)#  方便以后对其进行操作return res
# 第二种: 不使用demo,直接对demo进行再封装;只需要填写model的文件名即可
class Rundev():def __init__(self,model,sensitivity=0.5,sleep_time=0.03):# 外置参数self.model = modelself.sensitivity = sensitivityself.sleep_time = sleep_time#内置参数 self.interrupted = Falsedef interrupt_callback(self):return self.interrupteddef signal_handler(self,signal, frame):self.interrupted = True    def run(self):print('正在监听中.........','按 Ctrl+C 停止运行')# capture SIGINT signal, e.g., Ctrl+Csignal.signal(signal.SIGINT, self.signal_handler)detector = snowboydecoder.HotwordDetector(self.model, sensitivity =self.sensitivity)# main loopdetector.start(detected_callback=snowboydecoder.play_audio_file,interrupt_check=self.interrupt_callback,sleep_time=self.sleep_time)# 使终止detector.terminate()# 测试
if __name__ == "__main__":# os.getcwd()获取当前工作路径args = ['python3',os.getcwd()+"/python/snowBoyDemo/demo.py",os.getcwd()+"/python/snowBoyDemo/xiaoai.pmdl"]# dev = Run(args=args)# dev.run()dev = Rundev(os.getcwd()+"/python/snowBoyDemo/xiaoai.pmdl")dev.run()

使用第二个类的可以把demo.py删除了。

成功后:

如果想添加一些唤醒后的操作,打开snowboydecoder.py,第208行:

              可以修改这里 这里是被唤醒之后运行的方法#small state machine to handle recording of phrase after keywordif state == "PASSIVE":if status > 0: #key word foundself.recordedData = []self.recordedData.append(data)silentCount = 0recordingCount = 0message = "Keyword " + str(status) + " detected at time: "message += time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time()))logger.info(message)print("执行一个测试")callback = detected_callback[status-1]if callback is not None:callback()if audio_recorder_callback is not None:state = "ACTIVE"continue

训练语音模型

https://snowboy.hahack.com/

python之使用snowboy离线语音唤醒相关推荐

  1. Python开发之路(4)— 使用 snowboy 做语音唤醒功能

    Python开发之路(4)- 使用 snowboy 做语音唤醒功能 本次开发在Ubuntu16.04虚拟机系统. 一.snowboy介绍 snowboy 是一个开源的.轻量级语音唤醒引擎,可以通过它很 ...

  2. 离线语音唤醒 SnowBoy +树莓派语音交互实现语音机器人

    离线语音唤醒引擎SnowBoy可以实现离线语音热词的检测,可发起一个安全.完整的语音交互界面. 百度云语音识别API可实现在线的语音识别和语音合成功能.结合离线语音唤醒和语音识别技术可以实现完整.安全 ...

  3. 树莓派离线语音唤醒snowboy

    语音唤醒 为了节约树莓派资源,延长使用时间,考虑使用语音唤醒服务.初步有两种解决方案,一个是使用一直在用的科大讯飞语音服务,一个是使用snowboy语音唤醒引擎,来分析比较一下两者的优劣. 科大讯飞 ...

  4. 树莓派 --- 使用snowboy实现语音唤醒功能

    目录 Snowboy,KITT.AI开发的人工智能软件工具包,是一个开源的.轻量级语音唤醒引擎,通过它可以创建类似"hey, Siri" 之类的唤醒词. github项目地址 可惜 ...

  5. python离线语音唤醒算法_python实现离线语音识别

    1.先安装PyAudio python -m pip install PyAudio-0.2.11-cp37-cp37m-win_amd64.whl 2.安装语音识别 pip install Spee ...

  6. python离线语音唤醒算法_python语音唤醒-pocketsphinx

    使用pocketsphinx模块,实现唤醒词功能. 运行环境: win10 + Python3.6.2 安装模块包: > pip install pocketsphinx C:\Users\qp ...

  7. snowboy进行语音唤醒,编译snowboy文件

    版权声明:本文为博主原创文章,未经博主允许不得转载.https://blog.csdn.net/weixin_40490238/article/details/88848335 博主环境:树莓派3B, ...

  8. 乐鑫Esp32学习之旅16 学习本地语音唤醒离线识别框架 esp-skainet ,如何修改唤醒词? 如何自定义命令词?如何做意图动作?

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

  9. 树莓派智能音响项目——snowboy语音唤醒初探

    snowboy 是一个开源的.轻量级语音唤醒引擎,可以通过它很轻松地创建属于自己的类似"hey, Siri" 的唤醒词.目前的百度的语音唤醒实际上也是使用的snowboy引擎.对于 ...

最新文章

  1. 机器视觉工程师必须了解的基础知识
  2. php中的elseif和else if
  3. cisco路由器基本实验之七 Standard Access-Lists with RIP (Boson NetSim)
  4. 怎么挪动_你真的懂iPhone上的小圆点怎么玩吗
  5. fatal error C1189: #error : Building MFC application with /MD[d]
  6. Pool多进程的加速
  7. Python 中@符号解释
  8. 设计模式之单例模式8种实现方式,其六:双重检查
  9. java语法基础总结,顺利拿到offer
  10. 读取.Properties配置文件
  11. Danfo.js专题 - Danfo.js与Dnotebook简介与入门
  12. flex转html5插件,Flexbox使用向导-flex元素排列顺序
  13. 【PCB学习笔记】绘制智能车四层板 --- PCB封装库的创建方法及现有封装调用
  14. 二叉树的层次遍历算法
  15. HEVC播放器出炉,迅雷看看支持H.265
  16. 《黑客攻防从入门到精通》:社会工程学
  17. 基于神经网络和相关性分析的数学建模思路分享
  18. iTop-4412精英版的u-boot-2017.11移植教程(二)
  19. cc2430的ram和rom的划分
  20. 【数据标准】数据指标体系建立

热门文章

  1. 电源系列1:LDO 基本 原理(一)
  2. 受到 1 万点暴击,二狗子被 DDoS 攻击的惨痛经历
  3. 【洛谷】 P1240 诸侯安置(递推)
  4. MATLAB未定义变量example,小虫求助“ 未定义函数或变量 'Beam_InputData547'。
  5. HTTP 和 Request
  6. PS 合并RGB通道 编辑单通道
  7. amoled led 排列_AMOLED屏幕为啥不用RGB排列?
  8. AMD皓龙系列服务器CPU,【彻底感悟】酷睿对AMD系列 双核CPU---皓龙Opteron 1210横向评测...
  9. Arduino 语法、函数使用、最常用函数、arduino教程、arduino笔记、参考手册
  10. linux查看进程号、端口号