OHF-Voice/speech-to-phrase

Fast and personalized local speech-to-text

Speech‑to‑Phrase – 面向 Home Assistant 的语音识别器

是什么 – 一个本地运行的语音转文本系统,不试图转录任意语音。相反,它回答“用户说的已知命令短语中是哪一个?”的问题,通过将语音输入与包含您 Home Assistant 实体、区域和楼层名称的模板集进行匹配。

为何存在 – 对于家庭自动化,通常只需要识别有限且明确定义的一组命令(如打开厨房灯、将苹果添加到购物清单等)。通过将词汇量限制在这些短语内,识别器可以快速运行、离线工作,并且能个性化匹配您在 Home Assistant 中使用的精确名称。


工作原理(概览)

  1. 句子模板 – 预先编写的语言文件(YAML)描述了您可以说出的命令。该仓库提供多种语言的模板,您也可以添加自己的模板。
  2. 动态扩展 – 启动时,工具将模板与您在 Home Assistant 中公开的实体、区域和楼层名称合并,生成一个表示所有可能语句的 hassil 模板文件。
  3. 有限状态转换器(FST) – 使用 Rhasspy 白皮书中的技术,将紧凑的模板编译为 FST(通过 OpenFST 和 OpenGRM)。这能高效编码巨大的组合空间,而无需枚举每一条句子。
  4. Kaldi 声学模型 – 将 FST 转换为 Kaldi 的语言模型,Kaldi 是一个开源语音识别工具包。内置的发音词典和 Phonetisaurus 模型为已知和未知词汇提供音素。
  5. 后处理模糊层 – Kaldi 生成原始转录后,一个小的模糊匹配步骤会清理轻微错误(重复/缺失词),并强制实体名称与 Home Assistant 所知的完全匹配。

主要特性

  • 仅本地运行 – 无需云服务,可在防火墙后工作。
  • 多语言支持 – 基于 Kaldi 的版本(v1.4.3)支持 22 种语言;新版本(在 OHF‑Voice/apps 中)目前覆盖最常用的几种语言。
  • 自定义句子 – 添加自己的 YAML 文件以扩展命令集,无需修改代码。
  • Docker 就绪 – 提供官方容器镜像(rhasspy/wyoming-speech-to-phrase),可通过 Wyoming 集成连接到 Home Assistant。
  • 自动模型下载 – 声学模型和发音工具从公开的 HuggingFace 数据集 rhasspy/rhasspy-speech 自动获取。
  • Home Assistant 集成 – 通过 Home Assistant WebSocket 连接,使用长期有效的访问令牌。

快速入门(步骤)

  1. 安装 – 从 Home Assistant 的 Supervisor 商店添加插件,或运行 README 中显示的 Docker 命令。
  2. 提供凭证 – 提供 --hass-websocket-uri 和 --hass-token,以便服务可以读取您的实体。
  3. (可选)自定义句子 – 创建包含语言特定 sentences.yaml 文件的目录,并使用 --custom-sentences-dir /path/to/dir 启动。
  4. 运行 – 服务将下载所需的声学模型,构建 FST,训练 Kaldi 语言模型,并在端口 10300 上开始监听。
  5. 使用 – 将音频发送到 Wyoming 端点;识别器返回匹配的短语,Home Assistant 可将其转换为自动化。

当前支持的语言(Kaldi v1.4.3)

英语、法语、德语、荷兰语、西班牙语、意大利语、俄语、捷克语、加泰罗尼亚语、希腊语、罗马尼亚语、葡萄牙语(葡萄牙)、波兰语、印地语、巴斯克语、芬兰语、蒙古语、斯洛文尼亚语、斯瓦希里语、泰语、土耳其语。


扩展 / 自定义

  • 添加新实体名称 – 将设备暴露给 Home Assistant 的 Assist 功能,它们会自动被纳入。
  • 创建新命令模板 – 按照 speech_to_phrase/sentences/<lang>/sentences.yaml 中的格式,或通过自定义句子目录提供自己的模板。
  • 添加新语言 – 贡献发音词典和声学模型(或复用现有 Kaldi 模型),并添加句子模板;请参阅问题 #149 了解当前状态。

项目现状

此仓库中的基于 Kaldi 的代码已冻结在版本 1.4.3。开发已迁移到 OHF‑Voice/apps 单体仓库,系统正在重写,使用受限 CTC 解码器、Home Assistant 意图作为句子源,并提供 Web UI 用于选择命令。


适合谁使用

  • 希望实现 离线、保护隐私的语音控制 的家庭自动化爱好者。
  • 构建自定义 Home Assistant 语音助手的开发者,需要一个能理解其公开实体名称的识别器。
  • 命令集有限时,寻找轻量级替代云语音转文本方案的人。

链接

  • 插件徽章 – 通过 Home Assistant Supervisor 快速安装。
  • Docker 镜像 – rhasspy/wyoming-speech-to-phrase。
  • Home Assistant 意图仓库 – 新重写版本的句子模板来源。
  • Rhasspy 白皮书 – FST 编译的基础技术。
  • 问题 #149 – 语言支持和迁移详情的追踪器。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目