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 包。语法(命令短语集合)可针对每个语音输入开启或关闭,使下游系统如 Dragonfly 或 Caster 仅监听当前上下文中合理的命令。
为何重要
- 标准 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*),实现“解压即运行”的体验。
典型工作流程
- 安装 wheel:
pip install kaldi-active-grammar(或pip install "dragonfly2[kaldi]"以获取 Dragonfly 后端)。 - 从 GitHub 发布页面下载预训练模型,并将库指向其目录。
- 使用
Compiler/KaldiRule类定义语法(规则),或更方便地使用 Dragonfly 的规则语法。 - 对每个语音输入,将激活的规则 ID 列表传递给解码器,并接收识别出的规则文本。
快速上手(Windows)
- 获取一个
kaldi‑dragonfly‑winpythonzip 套件,解压并运行提供的演示脚本。无需单独安装 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;未推断任何额外功能。
相关
- 项目
- 项目
- 项目
- 项目
- 项目