Alexa太无聊了吗?当您要求 Siri 关灯时,您有时是否希望它更刻薄一点?谷歌助理称你不够胖吗?不要害怕,GPT-3 就在这里。
在这个项目中,我们将构建一个用于家庭自动化的语音助手,它利用 GPT-3 的强大功能来解析您的查询并根据您的命令提供尖刻的、上下文相关的俏皮话。
如果你给 AI 助手一个命令,比如“你能关掉厨房灯吗”,GPT-3 会解析该短语以提取设备名称(厨房灯)、所需状态(关闭),它会为你服务用一个有趣的俏皮话,比如“什么,你吃完了冰箱里的食物吗?” 作为回应。您可以通过唤醒词激活助手,说出命令,程序将在说出有趣的俏皮话时处理您的查询。
这个项目完全是用 Python 编写的,所以很容易根据自己的需要进行修改。我已经为 Lifx 智能灯泡添加了集成,但您可以与许多其他人一起进行设置。
在我们深入研究之前,了解 GPT-3 的实际情况很重要。如果您还不熟悉它,GPT-3 是一种极其先进的语言模型,具有简单的基于文本的查询方法。您可以向 GPT-3 提供提示,它会选择与提供的提示最匹配的文本响应。GPT-3 非常精通模式识别,因此您可以向它提供一些示例,说明它应该如何响应给定的查询以构建简单的 API。
下面是该项目将向 GPT-3 输入的内容示例片段,以供用户输入“关闭厨房灯”。
Prompt: can you turn on the dining room light
Object: dining room light
Desired State: 1
Response: What, you're too busy getting fat watching TV on the couch to do it yourself?
Prompt: turn off the kitchen light
第一个提示作为示例给出,它展示了 GPT 如何构建其响应。第二个提示是完成 GPT-3 的用户输入。GPT-3 可能会响应以下内容:
Object: kitchen light
Desired State: 0
Response: What, you like to eat in the dark? Creep.
在实际系统中,您将提供更多 GPT-3 示例,而不仅仅是一个,但希望您能明白这一点。此外,由于模型的构造方式,您通常会针对同一查询获得不同的响应。对于输入“打开卧室灯”,我已经看到了从良性到混乱再到轻浮的一切。
您只需要一台带麦克风和扬声器的电脑即可尝试。您自己的家庭自动化设置需要一些配置,但您可以在不进行设置的情况下测试语音功能并查看一些有趣的响应。
我不想让我的笔记本电脑成为一个荣耀的家庭自动化中心,所以我创建了一个 Raspberry Pi 系统来监听命令并处理响应。这里的大部分繁重工作都是在云中完成的,因此即使是 RPi 零也可以工作。我还订购了一些带有基于 LAN 的简单 API 的智能灯泡。您可能会使用自己的,但这需要一些开发工作。以下是我使用的部件的完整列表:
您暂时还需要自己的 GPT-3 API 密钥。目前有一个等候名单来获得这些,但你可以在这里注册一个。我需要一些时间才能将此服务包装在它自己的 API 中,这样您就不需要密钥了。如果您愿意,请在下面发表评论。如果有足够的兴趣,我会抽空去做。
您可以在github.com/AlexFWulff/SnarkyHomeAutomation找到此项目的 Git 存储库。
python3 -m venv /path/to/virtual_env
source /path/to/virtual_env/bin/activate
pip install -r requirements.txt
sudo apt install libportaudio2 python3-tk flac ffmpeg
key_path
字段更改config.ini
为指向该文件
你*应该*能够通过运行来运行python Run.py
。如果您的麦克风和扬声器配置不正确,您可能会看到如下错误:
OSError: [Errno -9996] Invalid input device (no default output device)
如果这困扰您,请在单独的程序中使用它们来确保您的麦克风和扬声器正常工作。
默认唤醒词是“计算机”。要给系统一个命令,说“计算机”,然后说一个查询。然后系统应该通过扬声器给你一个响应并输出它将采取的行动。
该文件SmartDeviceInfo.xml
包含我使用 LIFX 设备所需的所有信息。如果您还使用 LIFX 灯泡,您只需在 XML 文件中添加一个新条目,其中包含您的设备名称及其 MAC 地址。您可以使用此 Python 工具找到本地网络上所有 LIFX 设备的 MAC 地址。确保enable_lifx
将配置文件中的字段设置为“True”以启用此功能。
我编写了这个软件,以便可以轻松添加其他类型的设备。只需将 xml 文档中的 标记设置为其他内容,然后在AutomationManager.py
. 每个设备至少需要一个名称和一个类型标签。
您可以让程序仅在 GPT-3 输出的名称与您网络上的设备完全匹配时更改设备的状态,或者您可能会生活在危险之中,让程序选择最接近 GPT-3 输出的设备名称。您可以在配置文件中更改此行为。
您可以添加更多自定义提示示例来更改 GPT 的响应方式。您可以在 中找到默认提示prompts/prompt1.txt
。如果要创建新行为,请在此目录中添加一个新文件并将prompt_file_path
值更改config.ini
为指向此新文件。
GPT-3 可以识别很多不同的语音模式。GPT-3 甚至精通各种不同的语言,因此如果您更愿意用英语以外的语言与您的家庭自动化 AI 交谈,您可以创建一个提示来这样做。
我还创建了一些使用起来非常有趣但不一定适合公开发布的提示。如果您希望我给您发送一些电子邮件,请给我发一封电子邮件(您可以在我的网站上找到)。
该项目还可以作为由 GPT-3 支持的其他类型的语音助手的有用模板。我以模块化的方式编写了软件,所以应该很容易在你认为合适的时候交换东西。例如,您可以扩展相同的功能,将项目添加到待办事项列表中,并为您添加的每个项目提供有趣的语音响应。事实上,您可以不断添加模块来构建功能齐全的语音助手,可以完成许多任务!
显示也相当简陋。如果你愿意,修改我的设计并用你自己的一些替换它们应该很容易。一切都是用 Tkinter 编写的,具有对新屏幕分辨率的半响应行为。
就这样!我希望你喜欢这个项目,并在下面的评论中告诉我你用它做了什么。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !