用"树莓派"打造一款智能音响
智能音箱,是一个音箱升级的产物,是家庭消费者用语音进行上网的一个工具,比如点播歌曲、播报新闻、或是了解天气预报,它也可以对智能家居设备进行控制,比如打开窗帘、设置冰箱温度、提前让热水器升温等。
1 硬件
1.1 音箱
把音箱插到树莓派的3.5mm接口上。
card 0是树莓派自带的声卡,3.5mm接口的音箱设备,接入的音箱,用的就是这个声卡,其设备编号为device 0。
headphones 耳机; 头戴式受话器
1.2 麦克风
$ alsamixer
Capture:拾音器
$ arecord -d 3 temp.wav录音
$ aplay temp.wav播放
树莓派如果新增了麦克风的输入设备,需要进行如下操作,改配置文件让usb声卡作为默认的音频输入
#在/home/pi目录下新增如下文件
sudo vim .asoundrc
#新增如下内容 (这个地方根据自己的来,默认按照如下情况,特殊情况特殊对待)
pcm.!default {
type asym
playback.pcm {
type plug
slave.pcm “hw:0,0”
}
capture.pcm {
type plug
slave.pcm “hw:1,0”
}
}
2 软件
2.1 wukong-robot
安装wukong-robot
wukong-robot 只支持 Python 3.x
$ cd /home/pi/
**********************************************************************
(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
$ pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simplepyyaml>=4.2b1
requests==2.21.0
baidu-aip==2.0.0.1
pydub==0.23.1
python-dateutil==2.7.5
watchdog==0.9.0
pytz==2018.9
fire==0.1.3
tornado==5.1.1
markdown==3.0.1
semver==2.8.1
websocket==0.2.1
websocket-client==0.56.0
pypinyin
jieba
**********************************************************************
(4)手动编译snowboy得到_snowboydetect.so以支持更多的平台
(4-1)安装swig
$ sudo apt-get -y update
$ sudo apt-get install -y libpcre3 libpcre3-dev
$ sudo apt-get install python3-dev
$ cd /home/pi
$ 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
$ ./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
(4-2)构建snowboy
$ cd /home/pi/
$ wget http://hahack-1253537070.file.myqcloud.com/misc/snowboy.tar.bz2 # 使用我fork出来的版本以确保接口兼容
$ tar -xvjf snowboy.tar.bz2
$ cd snowboy/swig/Python3
$ make
$ cp _snowboydetect.so <wukon-robot的根目录/snowboy/>
$ cp _snowboydetect.so /home/pi/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
2.2 树莓派必须更新唤醒词
默认自带的唤醒词是在 Macbook 上录制的,用的是作者的声音模型。但由于不同的人发声不同,所以不保证对于其他人都能很好的适用。
而树莓派上或者其他板子上接的麦克风可能和 PC 上的麦克风的声音畸变差异非常大,所以现有的模型更加不能直接在树莓派上工作,否则效果会非常糟糕。
如果你是第一次使用,需要先创建一个配置文件方便配置唤醒词。这个工作可以交给 wukong-robot 帮你完成。在 wukong-robot 的根目录下执行:
$ cd /home/pi/wukong-robot/
$ python3 wukong.py
第一次启动将提示你是否要到用户目录下创建一个配置文件,输入 y 即可。配置文件将会保存在 ~/.wukong/config.yml 。
在浏览器中输入 localhost:5000 ,即可进入登陆页面,账号默认 wukong ,密码默认:wukong@2019
登录进后台之后,就可以对 wukong-robot 的 API 进行修改和配置了。
2.3 树莓派安装docker
根据官网建议,我们最好是使用,docker官方提供的便捷脚本来一键安装。
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
$ docker -v【20.10.5】
2.4 修改唤醒词
本地部署一个 snowboy-seasalt 服务
$ sudo docker pull rhasspy/snowboy-seasalt
$ sudo docker run -it -p 8000:8000 rhasspy/snowboy-seasalt