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から直接引用;追加機能は推測していない。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト