可自定义修改唤醒词的离线语音唤醒实现方案(ubuntu 22.04)sonwboy
文章目录
目标实现功能:
-
指定唤醒词可随时唤醒目标
-
唤醒词可自定义修改
实验方案一:使用 Snowboy Hotword Detection
1. 安装依赖(python3):
$ $ sudo apt-get update
$ sudo apt-get install python3-pyaudio swig libatlas-base-dev
$ cd examples/Python3
$ pip install -r requirements.txt
2. 拉取代码编译
-
使用git拉取
$ git clone https://github.com/Kitt-AI/snowboy.git
-
编译
$ cd snowboy/swig/Python3 $ make
3. 测试
-
代码修改
$ cd snowboy/examples/Python3 $ vim snowboydecoder.py #!/usr/bin/env python import collections import pyaudio #from . import snowboydetect 修改为 import snowboydetect import snowboydetect import time import wave import os import logging from ctypes import * from contextlib import contextmanager
-
功能测试
$ cd ~ $ cd snowboy/examples/Python3 $ python3 demo.py resources/models/snowboy.umdl # snowboy.umdl 是官方提供的语音唤醒音频模型
-
测试结果
$ python3 demo.py resources/models/snowboy.umdl Listening... Press Ctrl+C to exit INFO:snowboy:Keyword 1 detected at time: 2024-03-07 09:56:36 # 每当监测到唤醒词回复 INFO:snowboy:Keyword 1 detected at time: 2024-03-07 09:56:39
4. 自定义唤醒词
snowboy自定义唤醒词需要使用3个wav音频文件音频文件生成语音模型,例如snowboy.umdl就是生成的模型
wav音频采样:
4.1 本地生成pmdl模型
由于sonwboy停止更新已久,只支持python2进行本地唤醒模型生成
$ python --version
Python 2.7.18
$ cd snowboy/examples/Python
$ rec -r 16000 -c 1 -b 16 -e signed-integer -t wav record1.wav # 录制 3 段语音
$ rec -r 16000 -c 1 -b 16 -e signed-integer -t wav record2.wav
$ rec -r 16000 -c 1 -b 16 -e signed-integer -t wav record3.wav
$ python generate_pmdl.py -r1=record1.wav -r2=record2.wav -r3=record3.wav -lang=zh -n=hotword.pmdl
$ python generate_pmdl.py -r1=record1.wav -r2=record2.wav -r3=record3.wav -lang=zh -n=hotword.pmdl
Traceback (most recent call last):
File "generate_pmdl.py", line 7, in <module>
from pmdl.snowboy_pmdl import SnowboyPersonalEnroll, SnowboyTemplateCut
File "/home/asu/test/sonwboy/snowboy/examples/Python/pmdl/snowboy_pmdl.py", line 12, in <module>
raise ImportError("pmdl generator only runs on OSX or Ubuntu 16.04.")
ImportError: pmdl generator only runs on OSX or Ubuntu 16.04.
pmdl 只能能使用 ubuntu 16.04 或者 OSX (MacOS)进行生成;(我也尝试了很多方法不行,修改系统未验证)
4.2 网页生成pmdl模型
官方训练网站(已经打不开了):
https://snowboy.kitt.ai/dashboard
某位大佬做的训练网站:
https://snowboy.hahack.com/
# 根据提示录制3段语音进行生成pmdl模型
4.3 唤醒灵敏度调节
$ cd snowboy/examples/Python3
$ vim demo.py
# detector = snowboydecoder.HotwordDetector(model, sensitivity=0.5)
# sensitivity用来调节灵敏度,根据个人需要调节
$ python3 demo.py bing.pmdl