使用手册
如何使用
在树莓派原始镜像上配置环境运行程序
1. 安装树莓派镜像
如果需要配置好的镜像,请稍等,目前正在配置
-
将树莓派镜像写入到 TF 卡中,在 TF 卡根目录下新建一个名为 SSH 的空白文件开启 SSH, 编辑 TF 卡根目录下的 config.txt 文件设置屏幕分辨率。在 config.txt 文件末尾添加:
hdmi_group=2hdmi_mode=82hdmi_cvt 1920 1080 60 6 0 0 0必须确保等号两边没有空格。
-
保存并将 TF 卡插入树莓派,Magic Mirror 接上网线,树莓派上电后正常等待几秒后可正常显示。
-
树莓派正常启动后可以通过鼠标键盘操作,也可以通过 SSH 或 VNC 操作。
2. 检查 USB 声卡驱动
检测声卡
- 检查播放:aplay -l
- 检查录音:arecord -l
3. 安装 Magic Mirror
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt install -y nodejs
git clone https://github.com/MichMich/MagicMirror
cd MagicMirror/
npm install
安装成功后运行如下命令显示
DISPLAY=:0 npm start
屏幕显示如图

添加 MMM-VoiceAssistant 模块
cd ~/MagicMirror/modules
git clone https://github.com/waveshare/MMM-VoiceAssistant.git
cd MMM-VoiceAssistant
cp config/config.js.en ~/MagicMirror/config/config.js #显示英文
#cp config/config.js.cn ~/MagicMirror/config/config.js #显示中文
cd ~/MagicMirror
DISPLAY=:0 npm start
屏幕显示如图

4. 安装 Python3 虚拟环境
sudo apt-get update
sudo apt-get install python3-dev python3-venv
python3 -m venv env
env/bin/python -m pip install --upgrade pip setuptools wheel
source env/bin/activate
注意:之后的所有操作都是在虚拟环境中进行,重新打开终端需运行如下命令进入到虚拟环境中。
source ~/env/bin/activate
5.snowboy 安装
安装依赖库
sudo apt-get install swig
sudo apt-get install libatlas-base-dev
sudo apt-get install portaudio19-dev
sudo apt-get install flac
pip3 install PyAudio
pip3 install SpeechRecognition
下载编译 snowboy
git clone https://github.com/Kitt-AI/snowboy.git
cd snowboy/swig/Python3
make
cd ../../examples/Python3
修改 snowboydecoder.py 文件,将 from . import snowboydetect 改为 import snowboydetect,去掉 from . 测试 snowboy 唤醒
cd ~/snowboy/examples/Python3
python3 demo.py resources/models/smart_mirror.umdl
说 smart_mirror,如果有检测到则会显示类似这样的信息,同时会响 ding 的一声
INFO:snowboy:Keyword 1 detected at time: 2019-12-03 11:30:16
6.Google Assistant Service 安装
注意:在中国,无法直接使用 Google 的服务。需要科学上网,必须搭建可以访问 google 的路由器,然后树莓派连接到路由器。 注意:自 2019 年 6 月 28 日起,不再支持 Python 的 Google Assistant Library 。只能用 Google Assistant Service。
在主目录 (/home/pi) 中新建 .asoundrc 文件,确保 Google Assistant 可以使用正确的麦克风和扬声器。
nano .asoundrc
新建 .asoundrc 文件,将以下配置添加到文件中保存。
pcm.!default {
type asym
capture.pcm "mic"
playback.pcm "speaker"
}
pcm.mic {
type plug
slave {
pcm "hw:0,0"
}
}
pcm.speaker {
type plug
slave {
pcm "hw:0,0"
}
}
在开始使用 Google Assistant 之前,需要将 Google Assistant Service 安装到树莓派中。以下是 Google 官方指导的链接。
https://developers.google.com/assistant/sdk/guides/service/python
请根据指南第三步,配置开发人员项目和配置账户,并创建一个 OAuth Client ID JSON 文件。 不要忘记将 JSON 文件复制到您的 Raspberry Pi。
请根据指南第四步,注册设备模型。
安装 Google Assistant SDK
(env) $ sudo apt-get install portaudio19-dev libffi-dev libssl-dev
(env) $ python -m pip install --upgrade google-assistant-sdk[samples]
授权 Google Assistant SDK 安装或更新授权工具
(env) $ python -m pip install --upgrade google-auth-oauthlib[tool]
生成凭据以运行示例代码和工具。将下载的 JSON 文件复制到设备,不要重命名文件。将以下命令中的 /path/to/client_secret_CLIENT_ID.json 替换为该文件的实际完整路径,保留路径两侧的双引号。
(env) $ google-oauthlib-tool --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless --client-secrets "/path/to/client_secret_CLIENT_ID.json"
可以在终端中看到一个 URL:
Please visit this URL to authorize this application: https://...
复制 URL 并将其粘贴到浏览器中(可以在任何计算机上完成)。该页面将要求您登录您的 Google 帐户。登录到上一步中创建开发人员项目的 Google 帐户 。 从 API 批准许可请求后,浏览器中将显示一个代码,例如“ 4 / XXXX”。将此代码复制并粘贴到终端中:
Please go to this URL: https://...
Enter the authorization code:
如果授权成功,您将看到类似于以下的响应。如果您看到 InvalidGrantError,则输入了无效的代码。请重试,请小心复制并粘贴整个代码。
credentials saved: /path/to/.config/google-oauthlib-tool/credentials.json
运行如下命令测试 my-dev-project 为创建的 Actions Console 项目的 Google Cloud Platform 项目 ID。要在 Actions Console 中找到项目 ID 、 my-model 为在上一步中注册设备模型的名称。
googlesamples-assistant-pushtotalk --project-id my-dev-project --device-model-id my-model
按 Enter 键,然后尝试以下一些查询 Who am I? What time is it? 正常情况 Google Assitant 会回应。
7. 设置开机启动
安装 PM2
sudo npm install -g pm2
设置 PM2 开机启动
pm2 startup
运行此命令后会显示一个类似如下的命令,复制此命令到终端运行。
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u pi --hp /home/pi
使用 PM2 启动 MagicMirror
cd MagicMirror/modules/MMM-VoiceAssistant/pi
pm2 start mm.sh
使用 PM2 启动 snowboy 语音助手程序
cd MagicMirror/modules/MMM-VoiceAssistant/pi
pm2 start snowboy.sh
设置开机启动 PM2 脚本
pm2 save
可以运行下面语句关闭对应的脚本服务。注意,需要使用 Pi 用户,不能使用管理员用户。
pm2 stop mm
pm2 stop snowboy
8. 设置屏幕常亮
打开 lightdm.conf
sudo vi /etc/lightdm/lightdm.conf
修改 lightdm.conf 找到 [SeatDefaults] 段下的’xserver-command’, 取消注释,修改为如下:
#xserver-command=X
修改为
xserver-command=X -s 0 -dpms
- -s # –设置屏幕保护不启用
- dpms 关闭电源节能管理
重启
sudo reboot
注意事项
-
程序中唤醒词采用的是公有模型,理论上对所有人都有效,但是如果实际不能唤醒可以到 snowboy 官方注册账号训练自己的模型或者更改其他唤醒词。
登录 snowboy:https://snowboy.kitt.ai 网站,找到需要设置的唤醒词,或者添加新的唤醒词。

点击录音和下载图标录音声音,录制三次然后最后检测声音模型是否可用。

下载生成的私有模型,.pmdl 后缀的文件,例如 Alexa.pmdl. 将文件复制到~/MagicMirror/modules/MMM-VoiceAssistant/pi 目录下。注意文件名要用英文,如果不是英文则修改文件名。 打开启动脚本文件修改。
vi snowboy.sh替换脚本中的文件名,其中第一个 smart_mirror.umdl 为中文唤醒,第二个 snowboy.umdl 为引文唤醒词。
cd ~/MagicMirror/modules/MMM-VoiceAssistant/pi~/env/bin/python3 demo.py smart_mirror.umdl snowboy.umdl -
国内用户不能显示新闻,一直显示 loading
系统默认英文显示,国内需要科学上网才能显示,更改配置显示中文即可以显示。cd ~/MagicMirror/modules/MMM-VoiceAssistant/configcp config.js.cn ~/MagicMirror/config/config.js #显示中文#cp config.js.en ~/MagicMirror/config/config.js #显示英文sudo reboot #重启 -
科大讯飞服务每天只有 500 次申请次数,超过将不再响应。可申请账户,修改程序 ID 和 KEY。
程序中用到语音合成 tts 和 aiui 两种服务。打开~/MagicMirror/modules/MMM-VoiceAssistant/pi/aiui.py。可以看到如下程序

修改对应的值替换账户,注释中有文档中心连接。
- Google Assistant Service 每天只有 500 次申请次数,超过将不再响应。可申请账户,修改程序 ID。
打开~/MagicMirror/modules/MMM-VoiceAssistant/pi/audiofileinput.py。可以如下代码

按照前面 6.Google Assistant Service 安装部分操作,注册账户,设备模型,安装授权。
最后将程序中的 DEVICE_ID,DEVICE_MODEL_ID 替换为对应的值
RS232
在/boot/config.txt 添加 dtoverlay=uart3
sudo nano /boot/config.txt
dtoverlay=uart3
#设备号 /dev/ttyAMA1
RS485
打开树莓派终端,输入以下指令进入配置界面
sudo raspi-config
#选择 Interfacing Options -> Serial,关闭 shell 访问,打开硬件串口
#设备号 /dev/ttyS0