Ubuntu系统入门教程-整合wukong-robot中文语音对话机器人
Ubuntu系统入门教程-整合wukong-robot中文语音对话机器人
说明:
- 介绍如何整合wukong-robot中文语音对话机器人
- 环境:ubuntu 20.04
步骤:
- 安装依赖
sudo apt-get install portaudio19-dev python3-pyaudio sox pulseaudio libsox-fmt-all ffmpeg
pip3 install pyaudio fire
- 安装wukong
git clone https://github.com/wzpan/wukong-robot.git
cd ~/wukong-robot
pip3 install -r requirements.txt
- 安装swig
wget https://wzpan-1253537070.cos.ap-guangzhou.myqcloud.com/misc/swig-3.0.10.tar.gz
tar xvf swig-3.0.10.tar.gz
cd swig-3.0.10
sudo apt-get -y update
sudo apt-get install -y libpcre3 libpcre3-dev
./configure --prefix=/usr --without-clisp --without-maximum-compile-warnings
make
sudo make install
sudo install -v -m755 -d /usr/share/doc/swig-3.0.10
sudo cp -v -R Doc/* /usr/share/doc/swig-3.0.10
sudo apt-get install -y libatlas-base-dev
- 安装snowboy
# 使用我fork出来的版本以确保接口兼容
wget https://wzpan-1253537070.cos.ap-guangzhou.myqcloud.com/misc/snowboy.tar.bz2
tar -xvjf snowboy.tar.bz2
cd snowboy/swig/Python3
make
cp _snowboydetect.so ~/wukong-robot/snowboy/
- 安装第三方库
mkdir $HOME/.wukong
cd $HOME/.wukong
git clone http://github.com/wzpan/wukong-contrib.git contrib
pip3 install -r contrib/requirements.txt
测试:
- 运行前声卡检查和设置
- 测试录音
arecord test.wav
- 录制一段之后, ctrl + c 终止即可
- 测试播放
aplay test.wav
如果能正常播放录音内容,说明配置正确
运行
cd ~/wukong-robot
python3 wukong.py
- 使用唤醒词
hotword:全局唤醒词。默认为 “snowboy” (snowboy.umdl)
/do_not_bother/on_hotword:让 wukong-robot 进入勿扰模式的唤醒词。默认为 “悟空别吵” (悟空别吵.pmdl)
/do_not_bother/off_hotword:让 wukong-robot 结束勿扰模式的唤醒词。默认为 “悟空醒醒” (悟空醒醒.pmdl)
- 访问后台
默认地址:http://localhost:5000
默认账户名:wukong
默认密码:wukong@2019
源码版本更新唤醒词
cd ~
git clone https://gitee.com/ncnynl/snowboy-new
virtualenv -p python2 venv/snowboy
source venv/snowboy/bin/activate
#编译swig的python3版本
cd ~/snowboy-new/swig/Python3
make
#编译swig的python2版本
cd ~/snowboy-new/swig/Python
make
cd ~/snowboy-new/examples/Python
pip install -r requirements.txt
- 录制 3 个 wav 文件(16000 采样率,16 位,1 通道),每个文件有都是同一个唤醒词"芝麻开门",并保存在示例/Python 下,例如
rec -r 16000 -c 1 -b 16 -e signed-integer -t wav record1.wav
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
- 技巧:录制语音的唤醒词,只说一次就可以.你怎么录制语音的和识别时候读的方法和发音要一致.才能很好识别.
- 运行以下命令来训练您的个人模型
cd ~/snowboy-new/examples/Python
#使用英文
python generate_pmdl.py -r1=record1.wav -r2=record2.wav -r3=record3.wav -lang=en -n=hotword.pmdl
#使用中文
python generate_pmdl.py -r1=record1.wav -r2=record2.wav -r3=record3.wav -lang=zh -n=hotword.pmdl
python2测试
- 执行命令
cd ~/snowboy-new/examples/Python
python demo.py hotword.pmdl
- 启动程序后,对着麦克风喊唤醒词”芝麻开门”,成功唤醒会有”ding”的一声和一条唤醒成功的打印语句
Listening... Press Ctrl+C to exit
INFO:snowboy:Keyword 1 detected at time: 2021-04-11 20:49:35
python3测试
- 执行命令
cd ~/snowboy-new/examples/Python3
cp ../Python/hotword.pmdl .
python3 demo.py hotword.pmdl
docker版本更新唤醒词
- 1.生成英文唤醒词docker的镜像
- 从此 repo 中基于 Dockerfile 构建一个新的 docker 镜像:
cd ~/snowboy-new/docker/en
docker build -t snowboy-pmdl .
- 在你的主机(Ubuntu 18 或其他)上创建一个名为 model 的目录,并将你的三个音频文件放在那里。
- 目录应该看起来像这样(注意:wav 文件需要如下的确切名称,否则它将不起作用):
$ mkdir -p ~/snowboy-new/model
$ ls ~/snowboy-new/model
record1.wav record2.wav record3.wav
- 技巧:录制语音的唤醒词,只说一次就可以.你怎么录制语音的和识别时候读的方法和发音要一致.才能很好识别.
- 最后可以调用docker(注意:需要在model的父目录下):
cd ~/snowboy-new
docker run -it -v $(pwd)/model:/snowboy-new-master/examples/Python/model snowboy-pmdl
- 这个生成的模型,适合英文的唤醒词.
- 此命令将模型目录安装在 docker 容器中并运行一个调用 generate_pmdl.py 的脚本
- 如果一切顺利,您现在应该在模型目录中有一个名为 hotword.pmdl 的文件。
- 2.生成英文唤醒词docker的镜像
- 从此 repo 中基于 Dockerfile 构建一个新的 docker 镜像:
cd ~/snowboy-new/docker/zh
docker build -t snowboy-pmdl-zh .
- 在你的主机(Ubuntu 18 或其他)上创建一个名为 model 的目录,并将你的三个音频文件放在那里。
- 目录应该看起来像这样(注意:wav 文件需要如下的确切名称,否则它将不起作用):
$ mkdir -p ~/snowboy-new/model
$ ls ~/snowboy-new/model
record1.wav record2.wav record3.wav
- 技巧:录制语音的唤醒词,只说一次就可以.你怎么录制语音的和识别时候读的方法和发音要一致.才能很好识别.
- 最后可以调用docker(注意:需要在model的父目录下):
cd ~/snowboy-new
docker run -it -v $(pwd)/model:/snowboy-new-master/examples/Python/model snowboy-pmdl-zh
在线版本
- 访问:https://snowboy.hahack.com/
参考:
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号