Juliusに1パス文法の機能を実装

Julius へ新機能「1パス目でのフル文法適用」を追加するプルリクエストがマージされました。これにより、1パス目でフルの文法を適用することができ、1パス目でより信頼性の高い(文法に制約された)結果を出力することができます。使用するには、GitHubサイトのmasterブランチから最新のコードを取得してください。

背景

Juliusの文法ベースの認識では、1回目のパスでは完全な文法を適用せず、効率化のために文法から抽出した単語対制約のみを適用します。この緩い制約に起因する1回目のパスでの誤差は、最終パスで回復する設計になっています。

一方、音声入力が終了する前に部分的な認識結果の出力を利用するようなリアルタイム性のある音声認識アプリケーションでは、第1パスの途中の結果がより正確でなければならない場合があります。

効果

今回の更新により、Juliusの第1パスでフルの文法を適用できるようになりました。この機能を有効にすると、第1パス中に生成された単語仮説はフレームごとに文法パーサーによって検査され、コンテキスト上で接続が許可されている単語のみが展開されます。

この機能は、Juliusに与えられる認識文法(.dfaファイルと.dictファイルのセット)と同じ場所に追加のdfaファイル(.dfa.forward)がある場合に有効になります。.dfa.forward ファイルが無い場合は動作せず、この場合従来と同じ動作になります。複数の認識文法で混在させることも可能です。

使用方法

最新のコミットで更新された文法コンバータ mkdfa.pl (または mkdfa.py) を認識文法に対して再実行してください。メインで出力される文法ファイル(.dfa, .dict)は以前のバージョンと同一ですが、追加のファイル(*.dfa.forward)が生成されます。生成された文法を使ってJuliusを実行したとき、.dfa.forward ファイルがあれば、Juliusはそれを読み込んで、新機能を有効にします。(プログレッシブな)結果は常に先頭から与えられた文法に準拠するようになります。

制約

モジュールモードで外部から文法を投げ入れるモードにおいて、.dfa.forward ファイルを外部から与える機能は、現在は実装されていません。