jxlarrea/voice-satellite-card-integration

GitHub: jxlarrea/voice-satellite-card-integration

Voice Satellite 是一个 Home Assistant 集成,将任何设备变为私有化免提语音助手,实现语音交互和控制。

Stars: 417 | Forks: 12

Voice Satellite for Home Assistant

hacs_badge Stars Downloads version Build

Buy Me A Coffee

将任何平板电脑、手机或浏览器变成 [Home Assistant](https://www.home-assistant.io) 的免提语音助手——类似于 Alexa、Siri 或 Google Home,但完全私有化并在你自己的硬件上运行。只需说出唤醒词即可开始:提问、控制设备、设置计时器、接收通知,并查看丰富的可视化结果——全程无需触摸屏幕。 Voice Satellite 作为一个即插即用的集成,可将任何网络浏览器转变为功能完整的 [Assist 卫星](https://www.home-assistant.io/voice-pe/),支持唤醒词检测、媒体播放和视觉反馈。 ### 演示视频 (**请确保音量已开启**) https://github.com/user-attachments/assets/af3956a8-3f58-420a-85ef-872ab9e33e8f ## 工作原理 Voice Satellite 作为 **全局引擎** 运行,加载在 Home Assistant 的每个页面上——无需仪表盘卡片。一旦你在侧边栏面板中指定了一个卫星实体,引擎就会自动启动,并在所有页面导航中监听唤醒词。 - **将你的浏览器变成真正的卫星** - 在 HA 中注册为标准的 `assist_satellite` 设备,功能与物理语音助手完全一致 - **设备端唤醒词检测** - 可选择 **microWakeWord**(纯 JS CPU 运行,适用于所有设备,每块延迟最低)或 **openWakeWord**(WebGPU 加速,更好的说话人/口音泛化能力,更少的误报,几乎无成本的多关键词扩展)。两者都在浏览器本地运行,支持自定义模型,并可选语音激活停止中断。当首选方案不可用时,会回退到服务器端检测 - **双唤醒词 / 双流水线** - 可同时加载两个唤醒词(例如 "Okay Nabu" 和 "Hey Jarvis"),并将每个唤醒词路由到其专属的 Assist 流水线,这样家庭可以混合使用语言,将本地专用流水线与云端/LLM 流水线结合,或让每个角色拥有自己的对话代理和语音 - **计时器、通知、对话** - 语音激活的计时器带有倒计时药丸,可通过自动化执行 `assist_satellite.announce` / `start_conversation` / `ask_question` - **媒体播放器实体** - 暴露为电视类设备。在卫星设备上全屏播放音频、本地视频文件和 HLS / MJPEG 摄像头流,支持音量控制、`tts.speak` 目标指定、通过自动化执行 `media_player.play_media` 以及媒体浏览器支持。TTS 可以路由到浏览器或远程扬声器 - **皮肤** - 8 种内置皮肤(默认、Alexa、Google Home、Home Assistant、镜头光晕、复古终端、Siri、波形),支持 CSS 覆盖。活动栏具有响应式音频电平动画 - **屏保** - 黑屏覆盖、来自 HA 媒体库的图片/视频/文件夹,或实时摄像头画面。在文件夹项目间交叉淡入淡出;集成了 Fully Kiosk 的背光调暗和移动消除功能 - **迷你卡片** - 可选的 `voice-satellite-mini-card`,用于在仪表盘内显示文本,无需全屏覆盖 - **LLM 工具** *(实验性)* - 图片/视频/网页/维基百科搜索、天气、股票/加密货币查询,并提供可视化面板。需要 [Voice Satellite - LLM Tools](https://github.com/jxlarrea/voice-satellite-card-llm-tools) - **适用于任何设备** - 平板电脑、手机、电脑、自助终端 ## 截图

Assist Video Search Weather Stocks

## 前置条件 - **Home Assistant 2025.2.1** 或更高版本 - 包含以下组件的 [Assist 流水线](https://www.home-assistant.io/voice_control/voice_remote_local_assistant/): - 语音转文本 ([Whisper](https://www.home-assistant.io/integrations/whisper/)、OpenAI 等) - 对话代理 ([Home Assistant](https://www.home-assistant.io/integrations/conversation/)、OpenAI、Qwen 等) - 文本转语音 ([Piper](https://www.home-assistant.io/integrations/piper/)、Kokoro 等) Voice Satellite 需要访问麦克风,请确保: 1. **浏览器已授予麦克风权限** - 首次使用时会提示。 2. **页面通过 HTTPS 提供服务** - 现代浏览器访问麦克风必须使用 HTTPS。 3. **屏幕保持开启** - 如果设备屏幕完全关闭,麦克风将停止工作。请使用屏保功能而不是关闭屏幕,以保持麦克风处于活动状态。 对于 [Fully Kiosk Browser](https://play.google.com/store/apps/details?id=de.ozerov.fully) 之类的自助终端设置,请确保启用麦克风权限并使用屏保功能(而非关闭屏幕),以便在调暗显示的同时保持麦克风活动。 对于 **Home Assistant Companion App**,请在 设置 -> 伴侣应用 -> 其他设置 中启用 **自动播放视频**。否则,WebView 会阻止 TTS 音频播放。 ## 安装 ### HACS(推荐) Voice Satellite 可在 [HACS](https://hacs.xyz/) 中找到。使用以下链接在 Home Assistant 中打开 HACS 仓库。 [![打开你的 Home Assistant 实例并在 Home Assistant 社区商店中打开一个仓库。](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=jxlarrea&repository=voice-satellite-card-integration) 或在 HACS 默认仓库中搜索 `Voice Satellite`。 ### 手动安装 1. 下载[最新版本的 ZIP 文件](https://github.com/jxlarrea/voice-satellite-card-integration/releases/latest) 2. 将 `custom_components/voice_satellite` 文件夹复制到你的 `config/custom_components/` 目录 3. 重启 Home Assistant ## 设置 1. 进入 **设置 -> 设备与服务 -> 添加集成** 2. 搜索 **Voice Satellite** 3. 为设备输入一个名称(例如 "厨房平板") 4. 对每个将用作卫星的浏览器/平板重复此操作 5. 在每个浏览器/平板上,打开 **Voice Satellite** 侧边栏面板 6. 为此设备选择你创建的卫星实体 7. 根据需要配置唤醒词、音频和外观设置 8. 一旦实体分配完成,引擎会自动启动——如果浏览器因缺少用户手势而阻止自动启动,会出现一个浮动麦克风按钮;点击它即可开始 ## 配置 **Voice Satellite** 侧边栏面板是中心配置枢纽。为此浏览器选择卫星实体,调整麦克风处理,选择皮肤,并设置屏保——所有设置均按浏览器存储在本地存储中。可选的 [迷你卡片](docs/configuration.md#mini-card) 提供了一个内嵌的、文本优先的仪表盘变体,当你不想使用全屏覆盖时。

Sidebar Panel

侧边栏面板和迷你卡片中的所有设置,请参阅[配置参考](docs/configuration.md)。 ## 集成 每个卫星都是 Home Assistant 中一个真实的 `assist_satellite` 设备,带有一个伴随的 `media_player`、按设备配置的实体(流水线、唤醒词、TTS 输出、静音等),以及实时状态同步(`idle` / `listening` / `processing` / `responding`)。每次交互后,集成会触发一个 `voice_satellite_chat` 事件,其中包含用户的语音转录文本、助手的完整回复以及 LLM 调用的工具,可用于驱动自动化。

Integration

设备实体、状态值、属性列表和事件载荷,请参阅[集成参考](docs/integration.md)。 ## 使用与服务 运行后,卫星会监听唤醒词,将音频流式传输到 STT,播放 TTS 回复,并支持允许此功能的代理进行自然的多轮对话。它还暴露了你的自动化可以调用的操作:`assist_satellite.announce` 用于主动 TTS,`start_conversation` 用于提问并监听,`ask_question` 用于将用户的语音回复与预定义的答案进行匹配,`voice_satellite.wake` 用于触发卫星,如同唤醒词被触发一样,以及 `voice_satellite.show` 用于按计划通过 Assist 流水线运行提示词,并将响应(包括任何工具调用的富媒体)固定在屏幕上直到被关闭。 完整的交互流程和每个操作的 YAML 示例,请参阅[使用与服务参考](docs/usage.md)。 ## 唤醒词检测 提供两种设备端引擎,均使用纯 JavaScript 运行,因此音频仅在唤醒词触发后才流式传输到 Home Assistant——无需服务器端唤醒词附加组件。 - **[microWakeWord](https://github.com/kahrendt/microWakeWord)** - 在 CPU 上运行的流式 TFLite 模型。适用于所有设备,包括较旧的平板和手机。小巧的模型使其在每块延迟方面是两者中最低的。附带由 microWakeWord / ESPHome 社区调优的唤醒词集合。 - **[openWakeWord](https://github.com/dscripka/openWakeWord)** - 共享的梅尔频谱 + 嵌入层,馈送小型的按关键词分类器,其中梅尔频谱和嵌入阶段作为 WebGPU 计算着色器分派。更大的基于嵌入的架构在说话人和口音方面泛化能力更好,更大的模型可以缓解 microWakeWord 容易出现的误报(取决于唤醒词质量)。添加第二个唤醒词几乎无需额外成本,因为梅尔频谱 + 嵌入是按块计算一次的。附带的分类器与官方 HA OWW 插件提供的字节相同。**需要 WebGPU。** 对于新安装,microWakeWord 是默认选项,因为它适用于所有设备。在支持 WebGPU 的设备上,当说话人/口音可变性或误报敏感性比原始每块延迟更重要时,值得选择 openWakeWord。两种引擎都能在实时预算内良好运行。任一引擎上最多可以并行运行两个唤醒词,每个路由到其自己的 Assist 流水线。"禁用"模式将麦克风完全关闭,适用于自动化驱动的设置。 完整的引擎比较、内置模型、自定义模型加载、双唤醒词/流水线和禁用模式,请参阅[唤醒词参考](docs/wake-word.md)。 ## 皮肤与自定义 八种内置皮肤(默认、Alexa、Google Home、Home Assistant、镜头光晕、复古终端、Siri、波形)为主题覆盖层、计时器药丸和活动栏提供主题。每种皮肤都可以通过侧边栏面板中的 **自定义 CSS** 字段进行进一步调整,波形皮肤还提供了专门的 CSS 变量用于控制单个波形的颜色。内置的提示音(`wake`、`done`、`error`、`alert`、`announce`)可以替换为你自己的 MP3 文件,这些文件在 HACS 更新后依然存在。 Lens Flare Skins Skins 皮肤列表、CSS 变量表和自定义声音文件夹布局,请参阅[皮肤与自定义参考](docs/customization.md)。 ## 计时器 语音计时器("设置一个 5 分钟计时器"、"取消披萨计时器")开箱即用,在覆盖层上显示倒计时药丸,完成时发出提示音。也可以通过 `voice_satellite.start_timer` 操作从自动化中启动计时器。侧边栏面板可以隐藏屏幕上的药丸或警报标签,并可以选择在每两次提示音后说出可配置的警报短语,两次提示音对之间只有短暂的停顿。 语音句子、操作架构、自动化示例、侧边栏开关和实体属性,请参阅[计时器参考](docs/timers.md)。 ## 实验性:LLM 工具 借助具备工具能力的对话代理(OpenAI、Google Generative AI、Anthropic、Ollama 等)以及配套的 [Voice Satellite - LLM Tools](https://github.com/jxlarrea/voice-satellite-card-llm-tools) 集成,Voice Satellite 可以内联显示丰富的视觉结果:图片网格、YouTube 视频卡片、天气预报、股票/加密货币卡片、货币转换以及带有特色图片的网页/维基百科摘要。 每种支持的工具以及触发它们的语音命令,请参阅[LLM 工具参考](docs/llm-tools.md)。 ## 故障排除 大多数设置问题源于缺少麦克风权限、HTTP/HTTPS 混合内容、Fully Kiosk 自动播放设置或 `internal_url` 不匹配导致的 TTS 代理公告失败。 侧边栏面板附带一个 **诊断与故障排除** 部分,可运行自动化的客户端和服务器端检查(安全上下文、麦克风权限、流水线配置、混合内容 TTS、唤醒词模式、Lovelace 资源注册等)。**复制报告** 按钮会生成一个可粘贴的 markdown 块,包含完整结果,可直接附加到 GitHub issue 中。

Integration

最常见的问题及其修复方法,请参阅[故障排除参考](docs/troubleshooting.md)。 ## 贡献 欢迎贡献。请随时提交问题或拉取请求。 ## 许可证 MIT 许可证 - 详情请参阅 [LICENSE](LICENSE)。
标签:HACS, Home Assistant, 免提控制, 公告功能, 卡片集成, 声控技术, 开源, 数据可视化, 智能家居, 浏览器应用, 物联网, 用户体验, 移动应用, 网络安全, 自定义脚本, 视觉反馈, 计时器, 设备控制, 语音助手, 语音识别, 隐私保护, 集成系统