从零搭建一个属于自己的智慧语音“魔镜”(MagicMirro+wukong-robot)语音部分

这里我采用的是wukong-robot的开源项目,这个项目可以说是目前语音部分最好的解决方案,给大家分析下整个语音部分的构成,大致分为下面几个模块。
从零搭建一个属于自己的智慧语音“魔镜”(MagicMirro+wukong-robot)语音部分_第1张图片
这里的语音识别(ASR)和语音合成(TTS)可以使用百度大脑、阿里、腾讯云、迅飞云的,他们都有开放的api接口,但是讯飞云的语音合成ip白名单限制,你可以固定自己的外网ip来使用,注意是外网ip。或者在控制台提交工单,可以为私人取消ip白名单限制。
一、环境
麦克风:这里建议使用usb免驱麦克风,个人建议psp3 eye 这个比较好,首先是usb免驱,由于属于淘汰的产品,所以价格相对便宜。
音箱:3.5mm接口音箱,这里不建议使用蓝牙音箱。
我的设备: respeaker+3.5mm接口小音响

二、手动安装

1.克隆本仓库:

$ git clone https://github.com/wzpan/wukong-robot.git

2.安装sox,ffmpeg和PyAudio:

$ sudo apt-get install portaudio19-dev python-pyaudio python3-pyaudio sox pulseaudio libsox-fmt-all ffmpeg
$ pip3 install pyaudio

3.安装依赖的库:

cd wukong-robot
pip3 install -r requirements.txt

这里由于安装的依赖较多,我上篇博客有提到过,一定要注意网络稳定,我当时因为网络不稳定,都快把我搞疯了。
如果遇到警告可以忽略,但是如果有错误的话,一定要解决,因为有可能是你某个库没有安装成功。

4.编译_snowboydetect.so

手动编译snowboy,得到_snowboydetect.so,以支持更多的平台。

①、安装swig

挨个执行一下命令行
首先确保你的系统已经安装swig。

wget http://hahack-1253537070.file.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

wget http://hahack-1253537070.file.myqcloud.com/misc/snowboy.tar.bz2
tar -xvjf snowboy.tar.bz2
cd snowboy/swig/Python3
make
cp _snowboydetect.so ~/wukong-robot/snowboy/>

5.安装第三方技能插件库wukong-contrib

mkdir $HOME/.wukong
cd $HOME/.wukong
git clone http://github.com/wzpan/wukong-contrib.git contrib
pip3 install -r contrib/requirements.txt

6.更新唤醒词

默认自带的唤醒词是在Macbook上录制的,用的是作者的声音模型。但由于不同的人发声不同,所以不保证对于其他人都能很好的适用。

而树莓派上或者其他板子上接的麦克风可能和PC上的麦克风的声音畸变差异非常大,所以现有的模型更加不能直接在树莓派上工作,否则效果会非常糟糕。

如果您是第一次使用,需要先创建一个配置文件方便配置重启词。这个工作可以提交wukong-robot帮你完成。在wukong-robot的根目录下执行:

python3 wukong.py

第一次启动将提示你是否要到用户目录下创建一个配置文件,输入侧y即可。配置文件将会保存在~/.wukong/config.yml。
然后在wukong-robot文件夹里面,找到里面还wukong.pmdl的模型。将自己录制好的模型替换掉。这里建议把训练好的直接改名为wukong.pmdl然后直接覆盖掉原来的就ok。
注意:唤醒词在树莓派上强烈建议自己训练.snowboy建议官方在树莓派上先用rec t.wav这样的命令录制唤醒词,然后在训练的时候通过上传按钮上传到服务器中进行训练。
这里我只给大家提供一个简单的可以使用的教程,其他的插件在github上也有介绍,同时也欢迎大家来讨论。
注意:大家clone下来的配置文件,是别人的apikey之类的配置,强烈建议自己去官网申请自己的api的接口,因为免费版的一般都有次数限制,如果每天使用的人数过多就无法使用。

7、报错处理

根据我的安装经验,一般会报一个如下错误

Expression 'alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, &alsaPeriodFrames, &dir )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 924
Expression 'alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, &alsaPeriodFrames, &dir )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 924
Expression 'alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, &alsaPeriodFrames, &dir )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 934
Expression 'alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, &alsaPeriodFrames, &dir )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 934
Expression 'alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, &alsaPeriodFrames, &dir )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 934
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
Cannot connect to server socket err = No such file or directory

这个不影响功能,只是的PulseAudio的告警,可以忽略。

悟空+魔镜完整版镜像
提取码:8ro9

你可能感兴趣的:(智慧语音“魔镜”)