语音助手的使用与搭建指南
1. Platypush语音控制基础
在使用语音助手时,Platypush提供了强大的功能。你可以在短语属性中使用
${name}
语法,将短语中的文本提取到同名变量中,该变量会作为参数传递给钩子函数。还能通过正则表达式让短语检测更强大,例如,在钩子中指定事件短语为 “(turn|switch) on (the?) ${color} light”,那么 “turn on the red light”、“turn on red light” 和 “switch on red light” 等短语都会触发钩子。
重启Platypush后,说 “turn on the light”,相应的灯就会打开。若语音识别事件匹配用户规则,助手的默认响应会被省略,但你可以使用Platypush中的文本转语音(TTS)集成轻松创建自定义语音响应。
2. 以编程方式控制助手
Platypush提供了简单的Web界面和基于Web的API,方便你从自己的脚本中自动化操作。当Platypush运行时,在浏览器中打开
http://your-rpi:8008/
。首次登录时,会看到用户注册屏幕,输入你喜欢的用户名和密码即可进入应用面板。当通过配置文件添加更多集成时,面板的各个部分会被填充。
Web面板有个不错的特性,它会自动连接到助手事件,在对话过程中显示带有你的短语和助手响应记录的模态屏幕。你还能看到 “Execute” 选项卡,可使用该选项卡探索可用的函数及其参数。例如,有
assistant.google.start_conversation
和
assistant.google.stop_conversation
等操作,可用于以编程方式启动和停止与助手的对话,无需说 “OK Google” 唤醒词,通过点击按钮或脚本就能控制。
要以编程方式使用这些功能,可按以下步骤操作:
1. 点击导航面板底部的 “Settings” 选项卡,选择 “Generate Token”。
2. 确认你的密码,选择令牌的有效期(默认:无过期时间),然后点击 “Generate” 按钮。
3. 使用生成的令牌通过API调用以编程方式执行Platypush请求,示例代码如下:
curl -XPOST \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '
{
"type":"request",
"action":"assistant.google.start_conversation"
}' http://your-rpi:8008/execute
你还可以创建新的事件钩子,对自定义事件(如按钮按下、MQTT主题上的消息或新的传感器数据)做出反应,使用之前示例中的
run
API以编程方式触发助手,例如:
run('assistant.google.start_conversation')
。
目前,大多使用的是基于在线的语音助手,它们有优化的AI模型,语音识别效果好,但对于注重隐私的用户来说可能存在问题,因为它们会将语音数据存储在云端,若处理不当容易被黑客攻击。接下来介绍一些可直接作为附加组件安装在Home Assistant中的离线语音助手。
3. 离线语音助手的选择
有几种注重隐私的语音助手可供选择,它们可直接添加到Home Assistant平台,也能安装在Raspberry Pi OS上。
| 语音助手名称 | 特点 | 安装说明 |
| ---- | ---- | ---- |
| Rhasspy | 开源、完全离线的语音助手服务集,支持多种人类语言,与Home Assistant、Node-Red、OpenHAB等配合良好。有漂亮的Web界面,可远程配置、编程和测试语音助手,有多个用于语音识别的TTS和STT引擎。 | 可作为附加组件安装到Home Assistant,具体步骤参考文档页面:https://rhasspy.readthedocs.io 。 |
| Almond | 由斯坦福开放虚拟助手实验室开发的开放、注重隐私的虚拟助手,允许使用自然语言控制Home Assistant。可作为附加组件安装,通过Lovelace(HASS UI)右上角的麦克风图标使用,是控制Home Assistant连接设备最简单的语音助手附加组件。由斯坦福开发的先进神经网络LUInet提供支持。 | 更多信息可访问Home Assistant网站上的Almond集成页面。 |
| Jasper | 开源的基于Python的平台,用于创建语音控制应用程序。Rhasspy受其启发,始终开启并监听命令,可在数米外说话。专为Raspberry Pi设计,可编写Python模块执行特定任务,有多个可安装在Raspberry Pi上的STT和TTS引擎,还能设置自己的唤醒词发起对话,可集成MQTT模块通过语音命令控制WiFi连接的设备。 | 支持Raspberry Pi型号B和B+以及Raspbian Wheezy OS,可从Raspberry Pi官方网站下载Wheezy,使用Etcher工具将镜像闪存到SD卡。 |
4. 安装和设置Almond附加组件
Almond集成在Home Assistant 0.102中引入,最初功能有限,只能处理文本输入和输出,不支持语音输入输出。后来引入了Ada附加组件来补充语音转文本集成,但现在有了自带TTS和STT引擎的Almond Edge附加组件,它仍在开发中并不断改进。安装步骤如下:
1. 打开Home Assistant,进入 “Supervisior ➤ Add-on Store”,搜索 “Almond Edge”。若只找到 “Almond”,需添加存储库获取Almond Edge。点击右上角的三个垂直点,然后点击 “Repositories”,输入
https://github.com/stanford-oval/almond-hassio-repository
并点击 “Add”。
2. 再次点击三个点,选择 “Reload”,会出现一个名为 “Almond Home Assistant OS Addon” 的新部分,可在此找到Almond Edge。若未看到该部分,重启Home Assistant。
3. 点击 “Almond Edge” 磁贴并安装,安装完成后,附加组件即可启动。启用 “Show in Sidebar” 以便快速访问Almond界面,最后点击 “Start”。确保已将麦克风和扬声器连接到Raspberry Pi。
4. 附加组件启动后,若扬声器已连接到Raspberry Pi,你会听到Almond说 “Hello, How can I help you?”,这表示Almond助手正在运行。
5. 若扬声器没有声音,可在Almond Edge附加组件的 “Configuration” 设置中设置音频输入和输出。
6. 转到 “Overview” 面板,右上角有一个麦克风按钮。此时,Almond尚未与Home Assistant集成,不能通过语音交互,但可以通过文本输入命令。点击麦克风按钮,输入 “turn on switch”,应该会看到相应的响应。
7. 启用与Home Assistant的集成。点击主部分的 “OPEN WEB UI” 或侧边栏中的 “Almond - Edge”。
8. 网页界面打开后,点击 “Click To Access”,会在浏览器中打开一个新标签页。为Almond界面设置密码,你将看到Almond界面。
9. 转到 “Configuration Panel ➤ Integrations”,Almond的集成将出现在Home Assistant中。要完成集成,点击 “Configure” 然后点击 “Submit”。
10. 重启你的Raspberry Pi。打开Almond UI并点击 “My Skills”,你将看到所有可通过Almond控制的Home Assistant设备。
设置好Almond语音助手后,你可以使用 “Computer” 唤醒词唤醒助手,例如说 “Computer, turn on office lamp” 或询问温度和湿度,能控制所有设备,无论Almond连接的是ESP-Home、MQTT还是Raspberry Pi GPIO。接下来将介绍在Raspberry Pi OS上安装和设置Jasper。
graph LR
A[打开Home Assistant] --> B[进入Add-on Store]
B --> C{找到Almond Edge?}
C -- 否 --> D[添加存储库]
C -- 是 --> E[点击Almond Edge安装]
D --> E
E --> F[启用Show in Sidebar并启动]
F --> G{扬声器有声音?}
G -- 否 --> H[设置音频输入输出]
G -- 是 --> I[进入Overview面板输入命令]
I --> J[启用与Home Assistant集成]
J --> K[设置密码打开界面]
K --> L[完成集成设置]
L --> M[重启Raspberry Pi查看设备]
5. 安装和配置Jasper
Jasper是一个开源的模块化平台,能将多个组件系统组合起来,创建强大的数字助理。目前,它仅支持带有Raspbian Wheezy OS的Raspberry Pi型号B和B +,麦克风和扬声器的设置保持不变。Jasper在2014年发布的操作系统上经过测试,较新的版本可能也适用。你可以从Raspberry Pi官方网站下载Wheezy,然后使用Etcher工具将该镜像闪存到SD卡中。
Jasper可以通过以下三种方式安装在Raspberry Pi上:
-
方法1
:运行针对型号B(B +也可用)预编译的磁盘镜像进行安装。你需要将此镜像闪存到SD卡,然后克隆存储库并安装Python依赖项。这是开始使用Jasper最快的方法。
-
方法2
:通过包管理器安装,但Debian或Raspbian不可用。
-
方法3
:根据说明手动安装Jasper核心。你需要从头开始编译Jasper软件的所有包。
如果你是初学者,不想了解如何在Raspberry Pi上编译所有支持库,可以选择方法1;如果你想手动安装和编译所有包,则选择方法3。Jasper的完整安装可能需要长达五个小时,具体取决于网络速度和Raspberry Pi型号。
6. 选择STT和TTS引擎
Jasper需要语音转文本(STT)引擎来理解你说的话,也需要文本转语音(TTS)引擎来回答你的命令。Jasper具有模块化的特点,允许你在不同的STT和TTS引擎中进行选择,不过可能需要根据选择安装额外的软件。
6.1 语音转文本(STT)引擎
STT引擎是将音频转换为文本的软件,以下是一些可选的引擎:
| STT引擎 | 特点 |
| ---- | ---- |
| Pocket Sphinx STT | 由CMU Sphinx提供,速度快,适用于像Raspberry Pi这样的嵌入式系统,离线识别,安全性高,但识别率不佳。 |
| Google STT | 谷歌的语音转文本系统,每天转换的单词数量有限制,需要活跃的互联网连接。 |
| AT&T STT | AT&T的语音转文本引擎,需要活跃的互联网连接和付费账户。 |
| Wit.ai STT | 依赖wit.ai云服务,使用众包来训练语音识别算法,需要活跃的互联网连接,免费服务。 |
| Julius | 高性能开源语音识别引擎,无需互联网连接,但需要训练声学模型,任务复杂。 |
Wit.ai、AT&T和Google是在线STT引擎,会将数据发送到云服务器进行转换后再返回给用户,虽然准确但耗时,且存在数据隐私和安全问题。Pocket Sphinx是离线STT引擎,满足用户隐私需求且速度相对较快,但准确性有待提高,需要训练模型。
6.2 文本转语音(TTS)引擎
TTS引擎的功能与STT引擎相反,它将书面文本转换为语音。Jasper支持多种TTS引擎,各引擎在语调、音质、人性化程度等方面存在差异,以下是一些常见的TTS引擎:
| TTS引擎 | 特点 |
| ---- | ---- |
| eSpeak和Festival | 紧凑的软件程序,可离线合成语音,但大多数语音听起来很机械,不是最佳选择。 |
| Flite | 最初为小型嵌入式系统设计,使用CMU Flite(festival - lite),是轻量级引擎,合成速度快,离线合成,无需互联网连接,数据安全。 |
| SVOX Pico | 曾用于Android 1.6 Donut,是开源小应用程序,也可离线工作,音质比eSpeak和Festival好。 |
| Google TTS | 使用新Android设备的TTS应用程序,合成在Google服务器上完成,始终需要活跃的互联网连接,数据不私密或安全。 |
| Ivona TTS | 使用亚马逊的Ivona语音云服务,也用于Kindle Fire,语音合成在线进行,需要活跃的互联网连接,用户数据可被亚马逊访问。 |
如果你不希望Google或其他人听到Jasper对你说的话,不要使用Google TTS等在线引擎,建议使用离线且听起来更自然的Flite TTS。
安装Jasper核心Python依赖项以及STT和TTS包涉及许多命令,你需要参考文档(www.jasperproject.github.io)中的安装指南。安装时要有耐心,需按顺序执行命令,若遗漏命令,后续执行可能会失败,且可能需要花费时间。安装完所有包后,需要对Jasper进行配置。
7. 配置Jasper
Jasper需要一个名为
profile
的配置文件,用户配置文件对于Jasper准确报告当地天气状况、发送短信等功能至关重要。你可以运行Jasper附带的
profile
填充模块,根据提示提供信息,若不想提供某些信息也可以跳过。
cd ~/jasper/client
python populate.py
默认情况下,生成的配置文件将以YML格式存储在
~/.jasper/profile.yml
中,该文件可能隐藏在
.jasper
目录下。你可以在目录中右键单击并选择 “Show Hidden Files” 查看隐藏文件。所有配置设置都将存储在
profile.yml
文件中。
Jasper的软件架构由多个组件组成:
-
jasper.py
:包含Jasper管理的代码。
-
profile
:工具正确运行所需的用户配置。
- 对话实例:麦克风和配置文件的输入。
- 大脑:开发者编写的模块与核心框架之间的接口。
jasper.py
是控制Jasper的主程序,它创建麦克风、配置文件和对话实例。对话实例作为输入提供给麦克风和配置文件实例,从中创建通知器和大脑。大脑接收最初来自主程序的麦克风和配置文件,并将所有交互式组件加载到内存中。
8. 使用Jasper
配置好Jasper后,可以使用以下命令启动它:
/home/pi/jasper/jasper.py
你可以使用
crontab –e
命令让Jasper在重启时自动启动,然后添加以下行并重启Raspberry Pi:
@reboot /home/pi/jasper/jasper.py;
首次启动Jasper时,它会要求你配置网络连接,你可以使用以太网或WiFi连接到网络。如果使用以太网,需要在系统上共享网络(之前章节有讨论);如果使用无线网络,需要在Raspberry Pi上的
/etc/network/interfaces
文件中添加以下行:
auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
auto wlan0
iface wlan0 inet dhcp
wpa-ssid "YOUR_NETWORK_SSID"
wpa-psk "YOUR_NETWORK_PASSWORD"
请务必输入你的WiFi SSID和密码。与Jasper交互时,需按照以下顺序进行:
1. 你说:“Jasper”
2. Jasper发出高音提示音
3. 你在几秒内说出命令,否则它将停止监听
4. Jasper发出低音提示音
5. Jasper说出响应
为了展示Jasper的功能,默认包含了一些模块。你可以询问时间、天气、新闻、笑话,还可以集成Spotify、Gmail和Facebook等平台,但需要在
profile.yml
中配置这些平台(参考Jasper网站上的文档)。例如,你可以开始询问时间,说 “Jasper, what’s the time?”。
graph LR
A[启动Jasper] --> B{配置网络连接}
B -- 以太网 --> C[共享网络]
B -- WiFi --> D[修改interfaces文件]
C --> E[与Jasper交互]
D --> E
E --> F[说Jasper唤醒]
F --> G[等待高音提示音]
G --> H[说命令]
H --> I[等待低音提示音]
I --> J[听Jasper响应]
通过以上步骤,你可以成功搭建和使用Platypush、Almond和Jasper等语音助手,实现语音控制设备和获取信息的功能,同时根据自己的需求和隐私偏好选择合适的语音助手和相关引擎。
超级会员免费看
897

被折叠的 条评论
为什么被折叠?



