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;未推斷任何額外功能。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案