Juliusでは、第2パス探索における部分文仮説の評価値として、その時点までの3-gramを用いた前向き(right-to-left)スコアに、第1パスから得られる2-gramを用いたヒューリスティックスコア(left-to-right)を足したものを用いますが、従来のJuliusでは、ある仮説から次単語を展開する際に、接続部の単語において第1パスの2-gramの値と第2パスの3-gramの値の双方を加えて評価してしまっていました。探索中の評価値として展開単語のスコアが二重に加算されることから、若干の探索の不安定や最尤解のロストを招いていたと考えられます。
Rev.3.4.1ではこの問題を修正し、3-gramの値のみが正しく適用されるよう修正しました。この修正により、IPA'98テストセットでの認識率は以下のように改善が見られました(高速版Julius, PTM(GD))。
バージョン | Word Correct | Word Accuracy |
---|---|---|
3.4 | 92.1 | 90.6 |
3.4+LMfix | 92.3 | 91.2 |
configure
で --disable-lmfix
を指定してください。
Rev.3.4.1では、この第1パスの単語末トライフォンの近似計算方法として、新たに上位N個のトライフォンの平均値を採用しました。従来の最大値、および平均値の手法も選択できますので、これで単語末トライフォンの計算方法は3通りから選択できるようになりました。
この修正による、IPA'98テストセットでの認識率の変化は以下のとおりです(高速版Julius, PTM(GD), N=3)
バージョン | Word Correct | Word Accuracy |
---|---|---|
3.4 | 92.1 | 90.6 |
3.4+iwcdbest(N=3) | 92.2 | 91.2 |
Rev.3.4.1では、この新しい単語末トライフォン計算方法がデフォルトとなっています。従来と同じ方法に切り替えたい場合は、下記のように起動時オプション -iwcd1 max
を指定してください。
-iwcd1 best N
: 上位N個の平均値(Julius-3.4.1デフォルト, N=3)
-iwcd1 max
: 最大値(Julius 3.4以前のデフォルト)
-iwcd1 avg
: 平均値(Julianのデフォルト:変更なし)
N
は計算する上位トライフォンの個数です。デフォルトは 3 となっています(いくつかのテストセットでの最適値)。N
=1の場合 -iwcd1 max
と等価であり、N=極大
の場合 -iwcd1 avg
と等価となります。
-lmp 7.0 -1.0 -lmp2 8.0 -1.0
)、さらに認識率が改善する傾向が見られました
なお、本修正はJuliusの探索アルゴリズムを調節して探索の誤りを改善するものです。第1パスの結果および第2パスの探索中の仮説のスコアは従来から変化しますが、最終的な文仮説スコアは変化しません。よって、第1パス(-b
)、第2パス(-b2
)とも十分に大きい(=ほぼ全探索の)条件では、性能の変化は微少であると予測されます。
テーブルに必要なメモリ量はサンプリングレートやフレームシフトによって変動しますが、およそ8KB〜12KB程度です。
この改善はデフォルトで有効になっています。計算精度はテーブル化する前と全く変わりません(繰り返し演算をキャッシュしているだけなので)以前と同じ動作に戻すには:configure
オプション --disable-mfcc-table
を指定してください。
このバイナリHMMファイルはJulius独自形式であり、HTK の binary format とは非互換です。変換には付属のツールmkbinhmm
を使ってください。このmkbinhmm
は、トライフォンやPTMを含め、Juliusで読み込めるすべてのHMM定義ファイルをバイナリ形式に変換できます。変換は以下の要領で行います。
% mkbinhmm hmmdefs バイナリHMM
バイナリHMMを Julius/Julian で使うには、従来と同様に -h
オプションで指定してください。テキスト/バイナリの判別は Julius/Julian 上で自動的に行われます。
% julius ... -h バイナリHMM
この追加機能はデフォルトで有効になっています。なお形式は自動判別されるため、ascii形式のhmmdefsについても従来と同様に読み込めます。
単語グラフ使用時(configure --enable-word-graph --enable-wpair
)はその第1パスの結果の単語グラフも図示されます。また、sox
がインストールされていれば、認識対象の音声データをその場で再生することもできます。
この機能はデフォルトでは無効となっています。有効にするには、コンパイル時に configure
オプション --enable-visualize
を指定してください。なおコンパイル・実行には GTK のライブラリが必要です。
% ./configure --enable-visualize詳しくは、探索空間の可視化機能の使い方をご覧ください。
-zmean
を追加しました。ファイル入力の場合はファイル単位で直流成分の計算と除去を行います。マイクやネットワーク入力の場合は、Juliusが立ち上がり入力の検知が開始された時点から数えて最初の 3 秒分(16kHzサンプリング時)のサンプルから直流成分の算出を行い、以降はその算出値を用いて除去を行います。
この機能はデフォルトで無効となっています。用いる際には -zmean
を指定してください。
-module
)使用時に、入力音声の長さが認識結果とともにクライアントへ出力されるようになりました。出力形式は下記のとおりです。
<INPUTPARAM FRAMES="入力長(フレーム)" MSEC="入力長(ミリ秒)">
-input adinnet
)に関して、以下のバグを修正しました。
-module
)併用時に PAUSE
, TERMINATE
が効かないバグをFIX
configure --enable-fork
で元のforkする動作に戻せます)
adintool
を用いたネットワーク経由の音声送信に関して以下のバグを修正しました。
-spmodel
で与え、そのショートポーズモデルのみからなる単語を無音単語として用いるようにした。
-walign
, -palign
, -salign
)使用時のメモリリークを解消しました。
辞書中にtriphoneの誤りがあったときのエラー出力を見やすくしました。
Sample.jconf, Sample-julian.jconf 等を Rev.3.4.1 の仕様に合わせて更新しました。
Julian用の文法作成ツールの使い方の英語版マニュアルを用意しました。
configure
オプションおよび起動時オプションの一覧です。
configure
オプション:
--enable-visualize
--disable-lmfix
--disable-mfcc-table
--enable-fork
-iwcd1 best N
-zmean