daanzu/kaldi-active-grammar

Python Kaldi speech recognition with grammars that can be set active/inactive dynamically at decode-time

kaldi‑active‑grammar – Python 的动态语法语音识别

是什么

  • 一个包装 Kaldi ASR 引擎并添加 动态语法 支持的 Python 包。语法(命令短语集合)可针对每个语音输入开启或关闭,使下游系统如 DragonflyCaster 仅监听当前上下文中合理的命令。

为何重要

  • 标准 Kaldi 解码图是静态的,必须离线编译,这使得上下文相关的命令控制变得繁琐。此库允许您一次性编译多个小型语法,然后在解码时 拼接 它们,仅激活相关部分。激活的规则越少 → 混淆越少 → 识别准确率越高。

主要功能(如 README 所列)

  • 包含二进制文件 – 针对 Windows、Linux、macOS 的平台专用 wheel 包含所需的 Kaldi 原生库,无需自行构建 Kaldi。
  • 预训练英语模型 – 基于约 3000 小时开源音频训练,开箱即用;模型文件随发布一起提供。
  • 纯文本输入模式 – 可使用提供的 HCLG.fst 或捆绑的模型回退到自由形式语音识别(文本输入)。
  • Dragonfly / Caster 后端 – 为流行的 Dragonfly 命令框架(已在 Dragonfly v0.15.0 中合并上游)提供 Kaldi 引擎实现,并支持 Caster 语音控制系统(v0.6.0+)。
  • 动态激活 API – 低级 Python API,您可提供即将进行的语音输入中激活的规则 ID 列表;空列表禁用所有规则,None 继续上一次语音输入。
  • 发音处理 – 可选的 G2P(g2p_en)用于离线单词生成,或通过 requests 在线查找。
  • 自包含 Windows 套件 – 包含 Python、库和模型的 zip 文件(kaldi‑dragonfly‑winpython*),实现“解压即运行”的体验。

典型工作流程

  1. 安装 wheel:pip install kaldi-active-grammar(或 pip install "dragonfly2[kaldi]" 以获取 Dragonfly 后端)。
  2. 从 GitHub 发布页面下载预训练模型,并将库指向其目录。
  3. 使用 Compiler/KaldiRule 类定义语法(规则),或更方便地使用 Dragonfly 的规则语法。
  4. 对每个语音输入,将激活的规则 ID 列表传递给解码器,并接收识别出的规则文本。

快速上手(Windows)

  • 获取一个 kaldi‑dragonfly‑winpython zip 套件,解压并运行提供的演示脚本。无需单独安装 Python 或 Kaldi。

安装说明

  • 需要 64 位 Python 3.6+。
  • 在 Windows 上可能需要 VC 2017+ 运行库(VCRUNTIME140.dll)。
  • 不提供源码分发;必须使用二进制 wheel 或通过文档中引用的分支自行构建 Kaldi。

文档与资源

  • 架构docs/kaldi-fork-architecture.md
  • 从源码构建BUILDING.md
  • 测试TESTING.md
  • 示例examples/(纯文本输入、实时麦克风、混合命令/文本输入)
  • Dragonfly 集成指南 – 链接自 README 和 Dragonfly 文档。

适用人群

  • 需要上下文感知命令集的语音控制桌面应用程序开发者。
  • 在低延迟 ASR 中实验动态语法选择的研究人员。
  • 希望在 Windows、Linux 或 macOS 上即开即用 Kaldi 基础语音识别器的爱好者。

许可证

  • AGPL‑3.0(商业用途需遵守许可证或与作者另行协商)。

以上所有细节均直接取自仓库的 README;未推断任何额外功能。

相关

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