世界上最私密的语音助手

本教程将指导您把旧的固定电话改造成世界上最私密的语音助手。拿起听筒,您就可以和智能家居对话、发出命令并获得回复。

所需材料

设置 Grandstream

  1. 将电话上的 RJ11 线连接到 Grandstream 上的绿色接口。 Grandstream HT801 接口
  2. 将 Grandstream 接入您的网络:
    • 将以太网线插入蓝色接口,并连接到路由器。
  3. 启动 Grandstream。
    • 接通电源。
    • 启动完成后,电源和以太网的两个 LED 会常亮蓝色,电话 LED 不会亮起。
  4. 确认 Grandstream 的 IP 地址。
    • 如果您的电话有星号 * 键,可以让电话直接播报自己的 IP 地址:
      • 按下 ***(连续按三次星号键),然后等待听到 Enter the menu option
      • 按下 02,电话就会播报自己的 IP 地址。
    • 如果您的电话没有星号 * 键,请登录路由器查找该 IP 地址。
  5. 在浏览器中输入该 IP 地址,并登录 Grandstream 的 Device Configuration 管理页面。
    • 默认凭据如下:
      • Username: admin
      • Password: admin 登录 Grandstream
  6. 打开 FXS Port 选项卡,并在 Offhook Auto-Dial 字段中按以下格式输入 Home Assistant 的 IP 地址:
    • *47192*168*1*100*5060 为自动拨号定义 IP
    • 注意:请将 192*168*1*100* 替换为您的 Home Assistant 实例 IP 地址。
    • 在页面底部选择 Apply为自动拨号定义 IP
    • Offhook Auto-Dial 表示您一拿起电话,它就会直接呼叫 Home Assistant,无需手动拨号。

在 Home Assistant 中设置电话

  1. 在 Home Assistant 中,前往 设置 > 设备与服务 > 添加集成,然后添加 Voice over IP 集成。 Voice over IP 集成
  2. 当您看到该集成后,拿起电话。
    • 现在您应该会听到这样一段语音:This is your smart home speaking. Your phone is connected, but you must configure it within Home Assistant.
    • 此时,该集成中应该已经出现一个设备和若干实体。 包含设备和实体的 Voice over IP 集成
    • 如果听不到语音,请尝试这些故障排除步骤
  3. 允许呼叫。
    • 默认情况下,新设备的来电会被阻止,因为语音命令可能会控制门锁、车库门等敏感设备。
    • Voice over IP 集成中,选择 设备 链接。
    • 要允许这部电话控制您的智能家居,请在 配置 下启用 Allow callsVoice over IP 集成 - Allow calls
  4. 恭喜!您已经让模拟电话可以配合 Home Assistant 使用。现在拿起电话,就可以控制设备了。
    • 说出一条受支持的语音命令。例如,关闭厨房的灯
    • 您也可以提问,例如:
      • 前门锁上了吗?
      • 客厅里有哪些灯是开着的?
    • 请确保您使用的是在 Home Assistant 中定义的区域名称。如果您的房间名为 bathroom,那么 打开 bath 的灯 这种说法将无法工作。
    • 如果命令不受支持,可以添加您自己的命令

使用 OpenAI 集成为语音助手添加个性

如果您想复现这个示例,请按以下步骤操作:

注意:此流程需要一个 OpenAI 账户。如果您只是想运行示例,免费试用即可,无需填写信用卡信息。

  1. 创建 Mario 个性

  2. Voice over IP 集成中,进入 配置,选择您刚刚创建的 Mario 助手。

    VoIP:选择 OpenAI

  3. 完成后,拿起电话,向 Mario 提问即可。

  4. 您也可以为其他 OpenAI 个性重复此流程。您可以按需添加任意数量的 OpenAI Conversation 集成。

    • 如果要添加新个性,您需要创建新的 API 密钥,然后使用该密钥再添加一个新的 OpenAI Conversation 集成。

Grandstream 故障排除

测试呼叫无法工作

如果您无法呼叫 Home Assistant,请检查 Grandstream 设备网页界面中的以下设置。

  1. FXS Port 选项卡中,检查 Preferred Vocoder 列表。
    • 请确保其中一个选项设置为 OPUSVocoder OPUS 选项
  2. OPUS Payload type 下,确认值为 123。这是默认值。 Vocoder OPUS payload type
  3. 在页面底部选择 Apply
  4. 再次拿起电话,检查是否能听到语音。

Voice over IP 集成不再工作

现象

您曾经可以通过电话控制 Home Assistant,但现在不行了。拿起电话时没有任何声音播放。 调试信息中也没有任何运行记录。

可能的解决方法

  1. 登录 Grandstream 的 Device Configuration 管理页面。
  2. Status 页面中,检查您拿起电话后,Hook 状态是否会从 On Hook 变为 In Use检查 Grandstream 状态
    • 这个页面响应比较慢。刷新页面后,请稍等片刻再挂断电话。
  3. 如果状态没有变化,请重启 Grandstream,然后再次尝试呼叫 Home Assistant。

其他故障排除步骤

如果仍然没有按预期工作:

关于模拟电话

任何带有 RJ11 接口的模拟固定电话都可以使用。

视频中 TheFes 使用的电话是 Heemaf type 1955,它曾由荷兰电话公司 PTT 使用。

制作本教程时使用的电话是一台 1953 年的 Autophon AG Tischstation Mod.29 HF-TRAutophon AG 的 Tischstation Mod.29 模拟电话