开源语音助手软件入门

了解如何安装 Mycroft 开源语音助手软件并配对您的设备。
113 位读者喜欢这个。
Digital images of a computer desktop

Opensource.com

在我的上一篇文章中,我介绍了Mycroft,并分享了一些关于开源语音助手项目的信息。本文将帮助您开始使用 Mycroft,详细介绍关键术语、安装以及与设备的配对。我的目的是补充官方文档;虽然文档非常好,但当我第一次开始学习 Mycroft 时,我发现它们很难理解,所以我希望为您弥合其中的一些差距。

工作原理

在开始安装和设置之前,我想介绍一些基本知识,以确保您在阅读文档时思路清晰。Mycroft 团队的这张图表很好地概括了整个过程。

How Mycroft works

(© Mycroft AI, Inc.)

关键术语

以下是您在 Mycroft 生态系统中经常看到的一些术语。其中一些信息来自 Mycroft 的白皮书语音堆栈介绍

唤醒词

唤醒词是一个触发器,语音助手经过训练,可以在您即将发出命令时听到它。这也可能被称为“热词”。唤醒词的常见示例有嘿 SiriOK GoogleAlexa 等。语音助手会持续监听其唤醒词。

Mycroft 有两个唤醒词监听器选项

  • Pocket Sphinx目前仅使用英语语音进行训练。它使用CMU Flite 声音词典来理解唤醒词。这意味着您的唤醒词应该使用英语,才能获得最佳效率。这种方法的优点是灵活且易于使用。您可以选择在词典中找到的任何单词和声音组合。根据我的经验,缺点是触发器要么太容易触发,要么非常难以正常工作。您可以选择调整阈值或灵敏度,这会有所帮助。
  • 另一方面,Precise被描述为在音频数据上训练的神经网络。此方法仅根据声音进行训练。此选项最适合非英语母语人士。这可能有点费力,因为您必须录制大量您(以及可能其他人)说出您选择的唤醒词的录音。您还应该积累大量环境中常见的噪声,并且其中没有唤醒声音(单词)。这样 Precise 引擎才能更准确地确定什么是唤醒声音,什么不是唤醒声音。

话语

一旦设备“监听”到命令,用户就会说出话语。这可能是“今天的天气预报是什么?”或“今天比特币的价格是多少?”之类的语句。语音助手会录制话语的录音。

语音转文本 (STT) 和文本转语音 (TTS)

一旦语音助手录制了话语,它就会通过语音转文本 (STT) 处理器运行话语,将音频转换为文字。您可以想象,这是最关键的部分之一。如果 Mycroft 没有正确理解您,它将不会选择正确的技能,因此最终用户会觉得它“很笨”。

虽然 Mycroft 默认使用 Google 的服务以获得最高精度,但 Mycroft 提供了一些隐私选项。首先,Mycroft 代理对 Google 的请求,使 Google 更难知道请求来自何人以及来自何处。其次,有很多选项可以更换后端,随着用户提交针对该项目的拉取请求,还会添加更多选项。

理想情况下,我希望能够在自己的网络上运行类似的服务,但这目前似乎不切实际。目前,我的数据被代理就足够了,尽管我可能会调查其他后端服务,例如 IBM 的服务。

最后,语音助手会回应用户的声音。这一层称为文本转语音 (TTS),本质上是 STT 层的反向——它将文本转换为语音。有一个名为 Mimic 的本地选项可用。它既是主要选项,也是 Mycroft 遇到问题时的备用选项。

Mimic 的声音非常机械化,但我在我的开发机器上使用它,因为它比其他选项响应更快。当我开发新技能时,速度对我来说比声音的悦耳程度更重要。

意图解析器

一旦音频录音转换为文本,意图解析器就会梳理文本以识别用户的意图,即他们希望语音助手执行什么命令。Mycroft 有两种不同类型的意图解析器:一种基于话语中识别的关键词工作,另一种基于神经网络,以“最佳猜测”用户意图。

意图解析器的任务是尝试将用户的需求与可用于交付这些结果的技能对齐。Mycroft 使用的两个解析器是 Adapt 和 Padatious。

  • Adapt 解析器旨在成为一个轻量级解析器,可以轻松地在嵌入式设备或资源有限的设备中使用。它尝试解析 STT 输出并创建 JSON 或机器可读的数据结构。它适用于必须处理少量话语的应用程序。在互联网连接受限或不可用的情况下,它是一个不错的选择。
  • Padatious 的描述在其网站上非常好

Padatious 是一个基于机器学习、神经网络的意图解析器。与 Adapt 使用小群独特的单词不同,Padatious 是在整个句子上训练的。

Padatious 比其他意图解析技术具有许多关键优势。

  • 使用 Padatious,意图很容易创建。
  • Padatious 中的机器学习模型需要相对少量的数据。
  • 机器学习模型需要进行训练。Padatious 使用的模型训练起来快速而简单。
  • 意图彼此独立运行。这允许快速安装新技能,而无需重新训练所有其他技能意图。
  • 使用 Padatious,您可以轻松提取实体,然后在技能中使用它们。例如,“查找最近的加油站”-> { "place":"gas station"}

技能

在意图解析器尝试识别用户想要实现的目标之后,下一步是利用这种理解做一些事情。如果它理解正确,意图解析器将尝试将用户的需求与特定的技能匹配。技能是执行以实现预期结果的代码集合。例如,如果我告诉 Mycroft“将面包添加到我的购物清单”,那么我的 OurGroceries 技能中的相应代码将执行以处理该任务(如果意图被正确解析)。该技能获取关键词面包购物清单,并将它们用作将名为面包的条目添加到名为购物清单的列表的函数的参数。

如果意图解析器找不到与话语匹配的技能,那么语音助手通常会调用后备。这是一种被指定为“兜底”的技能,当语音助手无法从话语中解释意图时使用。例如,它可以搜索互联网而不是在本地运行代码。

安装 Mycroft

有很多方法可以启动并运行 Mycroft。Mycroft 支持 Docker 和 Linux,有一个用于 Raspberry Pi 的镜像(称为 Picroft),甚至有一种在 Android 上运行 Mycroft 的方法。对于开发,我发现遵循Linux 安装路径最容易。我目前在多个设备上运行 Mycroft:Raspberry Pi 4、一台 10 年前的 Asus ROG 笔记本电脑、最初的 System76 Galago Pro 和我新买的 Dell Inspiron 5775(大约 2017 年)。所以,如果您有一些硬件,Mycroft 可能会在上面运行。

您的系统需要支持 CPU 中的高级矢量扩展。您的处理器很可能支持它,但如果您想确保,请运行命令 grep avx /proc/cpuinfo

为了简单起见,我建议使用 Ubuntu、Fedora 或 Arch Linux 作为您的操作系统,因为它们是安装过程支持最好的版本。要开始使用,只需克隆 Git 仓库并启动 dev_setup.sh 脚本。我将我的仓库放在一个子文件夹中,我在其中存储所有与 Git 相关的项目

mkdir ~/git_projects
cd ~/git_projects
git clone https://github.com/MycroftAI/mycroft-core.git
cd mycroft-core
bash dev_setup.sh

该脚本还将安装和配置 virtualenv,这是一个用于创建隔离的 Python 环境的工具。它是一种将 Mycroft 与其他应用程序隔离的方法,这有助于更好地管理依赖项和安全性。在此处此处此处了解有关虚拟环境的更多信息。

下载和构建所有依赖项可能需要一些时间。在此过程中,pip 包管理器和一些构建过程将安装 Mycroft 运行所需的依赖项。它还会提示您构建 Mimic。这不是绝对必要的,但我强烈建议这样做。

在安装过程进行时,请转到 Mycroft 帐户页面并注册一个帐户。我知道您在想什么;我也对创建另一个帐户感到不耐烦。但是,我发现它很有用,特别是自从某些应用程序从此门户获取用户信息以来。例如,您可以在此处配置 Home Assistant 连接信息

该过程完成后,您可以使用 start-mycroft.sh 脚本启动 Mycroft 服务

./start-mycroft.sh all
Starting all mycroft-core services
Initializing...
Starting background service bus
Starting background service skills
Starting background service audio
Starting background service voice

日志文件位于 /var/log/mycroft,可用于调试。同样非常有用的是 Mycroft 命令行界面 (CLI),它允许进行一些即时调试以及键入输入而不是说话。要启动 CLI,请运行 mycroft-cli-client

配对设备

Mycroft 完全启动后,您将听到一个声音读取配对码。转到设备页面 并添加新设备。在这里,您将能够输入您的配对码并选择您设备的名称、它在您家中的位置、您的地理位置、您想要使用的声音以及内置的唤醒词之一

如果您没有听到配对码,只需说嘿 Mycroft,配对我的设备,您应该会在 mycroft-client-cli 中看到输出并听到它说出代码。

有很多处理代理和其他需求的高级选项,这些选项都有很好的文档记录,但我在这里不再赘述。

总结

现在您已经启动并运行了一个 Mycroft 实例,它可以运行其内置技能。尽情与 Mycroft 交谈,看看已经有哪些技能以及默认安装了哪些技能。探索生态系统是确定缺少哪些东西并开始思考如何解决它们的好方法。

下一步阅读
标签
User profile image.
Steve 是一位敬业的 IT 专业人士和 Linux 倡导者。在加入红帽之前,他曾在金融、汽车和电影行业工作多年。Steve 目前在红帽担任解决方案和技术实践架构师。他拥有从 RHCA(DevOps 领域)到 Ansible 再到容器化应用程序等各种认证。

2 条评论

是否有可以本地运行和训练的开源 STT 服务?

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.