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