找回密码
 立即注册
查看: 673|回复: 9

[论坛活动] AI语音-教程-零成本实现stt和tts,让ai助手能听会说,树莓派也能流畅运行!

[复制链接]
shay 手机认证

12

主题

195

回帖

1353

积分

金牌会员

积分
1353
金钱
1141
HASS币
20
发表于 2025-5-9 10:07:28 | 显示全部楼层 |阅读模式
本帖最后由 shay 于 2025-5-14 16:06 编辑

相信不少朋友已经成功地将各种 AI 能力接入了自己的 Home Assistant,让它变得更加智能。但是,想要真正用“嘴巴”和“耳朵”与 HA 互动,TTS (文本转语音) 和 STT (语音转文字) 这两个关键环节是必不可少的。
我是在树莓派上运行 HA,资源有限,离线方案是不可能了。经过一番细致的对比和体验,我最终选择了调用微软服务的方案,免费够用,亲测效果出色,分享给大家:
  • TTS (文本转语音): hass-edge-tts - 让你的 Home Assistant 轻松开口说话!它免费、效果好,并且非常稳定。虽然底层是调用的 Edge 浏览器的接口,但已经稳定运行三年之久,可见其可靠性。更重要的是,即使未来微软调整了接口,我们也能快速切换到Microsoft Azure 文本转语音服务,同样有免费额度,选择非常灵活。
  • STT (语音转文字): Wyoming (通过 Microsoft STT 加载项) - 想要让 HA 听懂你的指令?这个方案就能实现!通过 Home Assistant 的加载项集成 Microsoft 的 STT 服务。微软提供了每月 2 小时的免费stt时长,这在众多免费方案中绝对是良心之选!

先放个视频看下效果
接下来,我就手把手教大家如何在 Home Assistant 上安装和配置这两个强大的组件,让你的 HA 也能拥有能说会听的能力!
第一步: 安装 hass-edge-tts
  • 使用hacs安装 Edge TTS 集成:

    • 在 HACS 的集成页面搜索 “Edge TTS”。
    • 找到 “Edge TTS” 卡片,点击它,点击右下角的 “安装” 按钮。
    • 安装完成后,务必重启你的 Home Assistant,让集成生效。
  • 配置 hass-edge-tts:

    打开你的 Home Assistant 配置文件 configuration.yaml,在文件中添加以下代码:
    tts:
      - platform: edge_tts
        language: zh-CN-XiaoxiaoNeural
    volume: +20%
再次重启你的 Home Assistant,使配置完全生效。现在,你的 Home Assistant 已经可以开口说话了!你可以在自动化、脚本或者服务调用中使用 tts.speak 服务,让它发出各种声音提醒或者消息通知。

第二步: 安装 Wyoming Microsoft STT 加载项

    添加加载项存储库:
    • 在加载项商店,添加所需的存储库:https://github.com/hugobloem/homeassistant-addons
    • 安装 Microsoft STT 加载项
      • 点击 “Microsoft STT” 卡片。
      • 点击右下角的 “安装” 按钮。
    配置 Microsoft STT 加载项 (关键步骤!):
    • 安装完成后,点击顶部的 “配置” 选项卡。
      你需要在这里填写 订阅密钥 (Subscription Key)。请按照以下步骤获取:

      • 步骤 1: 访问 Azure 门户: 打开 portal.azure.com 并登录你的微软账户。如果没有账户,请先注册一个。
      • 步骤 2: 创建 Azure 订阅:

        • 在门户顶部的搜索栏中输入 “订阅”,然后选择 “订阅”。
        • 如果还没有订阅,点击 “添加” 并按照向导创建一个 Azure 订阅。虽然可能需要你提供支付信息,但我们使用的免费订阅,并不会扣费。
      • 步骤 3: 创建语音服务资源:

        • 在搜索栏中输入 “语音服务”,然后选择 “语音服务”。
        • 点击 “创建”。
        • 在创建页面,填写以下信息:
          • 订阅: 选择你刚刚创建的 Azure 订阅。
          • 资源组: 选择或创建一个资源组来管理你的 Azure 资源。
          • 区域: 选择一个可用的区域,建议选择离你地理位置较近的区域,以获得更低的延迟。
          • 名称: 为你的语音服务资源起一个容易识别的名字。
          • 定价层: 非常重要!请务必选择 “免费 F0” 这一层,这样你就可以免费使用语音转文字服务 (每月 2 小时)。
        • 填写完毕后,点击 “查看 + 创建”,然后点击 “创建”。
      • 步骤 4: 获取订阅密钥:

        • 创建完成后,进入你的语音服务资源页面。
        • 在左侧导航栏的 “资源管理” 部分,点击 “密钥和终结点”。
        • 你会看到两个密钥 (密钥 1 和密钥 2)。复制其中任意一个密钥。
    • 回到 Home Assistant 的 Microsoft STT 加载项配置页面,将你复制的密钥粘贴到 “subscription_key” 字段中。
    • 你还可以根据需要配置 “region” (区域),确保它与你创建语音服务资源时选择的区域一致。通常保持默认即可。
    • 点击底部的 “保存” 按钮。

  • 启动 Microsoft STT 加载项:

    • 返回到 Supervisor 的 “加载项” 页面。
    • 找到 “Microsoft STT” 加载项。
    • 点击 “启动” 按钮。建议勾选 “启动时自动开始”,这样 Home Assistant 启动时就会自动运行 STT 服务。
现在,你的 Home Assistant 已经拥有了听懂你说的话的能力!Wyoming 就像一座桥梁,让 Home Assistant 可以轻松地使用微软强大的语音转文字服务。

第三步:在你的 AI 助手中启用 TTS 和 STT 引擎
最后一步,你需要将你安装和配置好的 edge_tts 和 Wyoming 集成关联到你的 Home Assistant AI 助手功能中。具体的操作方式取决于你使用的 AI 助手集成 (例如 Home Assistant 内置的 “对话” 功能或者 “Assist 管道”)。
通常,在 AI 助手的配置中,你需要选择:
  • 文本到语音服务: 选择你安装的 Edge TTS 集成。
  • 语音到文本服务: 选择 Wyoming 集成提供的 Microsoft STT 服务。
完成以上所有步骤,你的 Home Assistant 就拥有了能说会听的完整语音交互能力!快去尝试一下,用语音控制你的智能家居设备,与你的 HA 进行更自然的交流吧!
图片4.png
注意事项
1、Microsoft STT加载项不要修改语言设置,会出错。虽然默认是英语,但不影响中文识别;
2、只把必要的设备共享给ai,太多设备会影响gpt的理解,可能跟我用的goo家的也有关系。
3、新用户用azure,30天后会有个过期,导致服务被停止,再去启用下就好了。
回复

使用道具 举报

76

主题

577

回帖

2829

积分

金牌会员

积分
2829
金钱
2171
HASS币
0
发表于 2025-5-12 20:59:50 | 显示全部楼层
有个问题再请教下 : 选择一个可用的区域,建议选择离你地理位置较近的区域,以获得更低的延迟。。。这里选择哪个比较合适。
回复

使用道具 举报

shay 手机认证

12

主题

195

回帖

1353

积分

金牌会员

积分
1353
金钱
1141
HASS币
20
 楼主| 发表于 2025-5-13 08:23:59 | 显示全部楼层
我选择的区域是East Asia。另外如果是azure新用户,新用户有个30天的全产品免费试用,虽然我们选择了免费计划,30天到期后,服务会中止。这个时候需要再登录下账户,启用下服务。
回复

使用道具 举报

76

主题

577

回帖

2829

积分

金牌会员

积分
2829
金钱
2171
HASS币
0
发表于 2025-5-13 11:32:45 | 显示全部楼层
shay 发表于 2025-5-13 08:23
我选择的区域是East Asia。另外如果是azure新用户,新用户有个30天的全产品免费试用,虽然我们选择了免费计 ...

我发现他这个tts速度有点慢。。
回复

使用道具 举报

shay 手机认证

12

主题

195

回帖

1353

积分

金牌会员

积分
1353
金钱
1141
HASS币
20
 楼主| 发表于 2025-5-13 15:27:35 | 显示全部楼层
lichao622 发表于 2025-5-13 11:32
我发现他这个tts速度有点慢。。

是么,我觉得还行,你可以看下我那个b站视频,除第一个提问,其他问题都是正常速度。我用语音测试(stt->ai->tts)和直接在页面上输入文字等ai回复的时间差不多。视频上,ai输出文字,语音差不多也能立马跟上,当然这也跟输出的内容长短也有关系。
回复

使用道具 举报

76

主题

577

回帖

2829

积分

金牌会员

积分
2829
金钱
2171
HASS币
0
发表于 2025-5-13 15:44:44 | 显示全部楼层
shay 发表于 2025-5-13 15:27
是么,我觉得还行,你可以看下我那个b站视频,除第一个提问,其他问题都是正常速度。我用语音测试(stt->a ...

嗯好。不知道是不是我这网络的原因,比较慢。就很奇怪,我选的也是East Asia
回复

使用道具 举报

shay 手机认证

12

主题

195

回帖

1353

积分

金牌会员

积分
1353
金钱
1141
HASS币
20
 楼主| 发表于 2025-5-13 16:17:27 | 显示全部楼层
lichao622 发表于 2025-5-13 15:44
嗯好。不知道是不是我这网络的原因,比较慢。就很奇怪,我选的也是East Asia ...

eastasia?你说的应该是stt不是tts吧?
屏幕截图 2025-05-13 161015.png
配置里面,有个区域参数。
然后日志里面,会有转换所用时间的日志:
INFO:wyoming_microsoft_stt.handler:Transcription completed in 0.25 seconds
INFO:wyoming_microsoft_stt.handler:现在是否有人在家?
INFO:wyoming_microsoft_stt.handler:Transcription completed in 0.24 seconds
INFO:wyoming_microsoft_stt.handler:最近几天有雨吗?
INFO:wyoming_microsoft_stt.handler:Transcription completed in 0.18 seconds
INFO:wyoming_microsoft_stt.handler:家里设备有电量低的吗?
INFO:wyoming_microsoft_stt.handler:Transcription completed in 0.20 seconds
INFO:wyoming_microsoft_stt.handler:一到一百加起来是多少?
INFO:wyoming_microsoft_stt.handler:Transcription completed in 0.23 seconds
INFO:wyoming_microsoft_stt.handler:当前家里有多少设备?
INFO:wyoming_microsoft_stt.handler:Transcription completed in 0.16 seconds
INFO:wyoming_microsoft_stt.handler:现在家里有人吗?
INFO:wyoming_microsoft_stt.handler:Transcription completed in 0.22 seconds
INFO:wyoming_microsoft_stt.handler:现在家里有人吗?
INFO:wyoming_microsoft_stt.handler:Transcription completed in 0.21 seconds
INFO:wyoming_microsoft_stt.handler:现在家里有人吗?
INFO:wyoming_microsoft_stt.handler:Transcription completed in 0.21 seconds
INFO:wyoming_microsoft_stt.handler:现在家里有人吗?
INFO:wyoming_microsoft_stt.handler:Transcription completed in 0.27 seconds
INFO:wyoming_microsoft_stt.handler:嗯。
INFO:wyoming_microsoft_stt.handler:Transcription completed in 0.23 seconds
INFO:wyoming_microsoft_stt.handler:现在家里有人吗?
INFO:wyoming_microsoft_stt.handler:Transcription completed in 0.16 seconds
INFO:wyoming_microsoft_stt.handler:现在家里有人吗?
INFO:wyoming_microsoft_stt.handler:Transcription completed in 0.25 seconds
INFO:wyoming_microsoft_stt.handler:现在有人在家吗?
INFO:wyoming_microsoft_stt.handler:Transcription completed in 1.93 seconds
INFO:wyoming_microsoft_stt.handler:现在家里有人吗?
INFO:wyoming_microsoft_stt.handler:Transcription completed in 0.21 seconds
INFO:wyoming_microsoft_stt.handler:最近几天有雨吗?
INFO:wyoming_microsoft_stt.handler:Transcription completed in 0.17 seconds
INFO:wyoming_microsoft_stt.handler:今天天气怎么样?
INFO:wyoming_microsoft_stt.handler:Transcription completed in 0.25 seconds
INFO:wyoming_microsoft_stt.handler:一到一百加起来是多少?
INFO:wyoming_microsoft_stt.handler:Transcription completed in 0.21 seconds
INFO:wyoming_microsoft_stt.handler:当前佳丽有多少设备?
INFO:wyoming_microsoft_stt.handler:Transcription completed in 0.30 seconds
INFO:wyoming_microsoft_stt.handler:当前家里有多少设备?
这是昨天视频测试的日志,红色字体那个是最长的,也就是我视频里面问的第一个问题,这个确实感觉到卡了(视频里我删除了卡的那段)。其他的都在0.3秒内,可以和你的对比看看

回复

使用道具 举报

76

主题

577

回帖

2829

积分

金牌会员

积分
2829
金钱
2171
HASS币
0
发表于 2025-5-13 17:25:12 | 显示全部楼层
啊,我用的是azure的tts,😄。stt我用的本地的。。
回复

使用道具 举报

shay 手机认证

12

主题

195

回帖

1353

积分

金牌会员

积分
1353
金钱
1141
HASS币
20
 楼主| 发表于 2025-5-13 17:32:47 | 显示全部楼层
lichao622 发表于 2025-5-13 17:25
啊,我用的是azure的tts,😄。stt我用的本地的。。

好吧好吧,azure的tts,ha官方有个组件支持,也可以试试。我选择hass-edge-tts,一是这个是组件,不是加载项,资源占用更低,另外底层也是azure的tts还不要钱,没有时间限制,配置也更简单。
回复

使用道具 举报

76

主题

577

回帖

2829

积分

金牌会员

积分
2829
金钱
2171
HASS币
0
发表于 2025-5-13 17:43:09 | 显示全部楼层
shay 发表于 2025-5-13 17:32
好吧好吧,azure的tts,ha官方有个组件支持,也可以试试。我选择hass-edge-tts,一是这个是组件,不是加 ...

嗯好。我之前试了下还不错,这想着直接用azure看感受咋样,没想到还没有hass-edge-tts快。现在用那个海螺ai也不错。也是论坛的/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )

GMT+8, 2025-5-24 13:42 , Processed in 0.266793 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表