Julian は、Julius をもとに作られた、有限状態文法(DFA)に基づく連続音声認識パーザです。認識対象とする文のパターンを記述した認識用文法(有限状態文法)を与えることで、入力音声に対してその文法規則の元で最も尤もらしい単語系列を探しだし、文字列として出力します。
ディクテーションベースの Julius と異なり、Julianは人手で記述した認識文法を用いるので、小語彙の音声対話システムや音声コマンド入力など比較的小規模な音声認識システムに有用です。 またJulian では Julius で培われた音声認識の高精度化技術が多く含まれており、数千語の認識を非常に高速かつ高精度に行うことができます。
コンパイル時にconfigure
オプション--enable-julian
を指定することで、Julian をコンパイルできます。
Julian は多くのコンポーネントを Julius と共有していますので、使用方法はほぼ同バージョンのJulius と同じです。
Julianは、これまで連続音声認識コンソーシアムの会員にのみ配布されてきましたが、コンソーシアム活動の終了に伴い、Rev.3.4 より Julius とともに無償配布されることになりました。
Julius のアーカイブには、Julian および認識用文法の作成ツールが含まれています。Julian のコンパイル方法、使い方、および認識用文法の作成方法については、付属のドキュメントの以下の項目をご覧ください。(一部記述が古い部分があります)
4. あなたは、本ソフトウェアを原子力関連、航空管制その他の交通関連、医 療、救急関連、警備関連その他人の生命、身体、財産等に重大な損害が発生す る危険を有するシステムに使用してはいけません。この利用範囲に関する制限条項のために、Juliusは厳密にはフリーソフトウェアの定義に当てはまらず、自由な利用が憚られる可能性があるとの指摘を受けました。これをうけて、Rev.3.4より上記の利用条件を改めたライセンスに改訂しました。 詳しいライセンスの内容については以下をご覧ください。
この単語信頼度を用いることで、認識結果の処理において、信頼度の低い単語を認識結果から除外したり、信頼度の高い単語のみを用いて意図抽出やコマンド検出を行うといった処理を行うことができます。ただし、この信頼度はあくまで、認識エンジン自身が与えられた言語モデル・音響モデルの元で算出する「確信の度合い」にすぎません。確信度と認識精度の間にある程度高い相関はありますが、必ずしも常に「確信度が高い=必ず正解」あるいは「確信度が低い=必ず誤り」とは限りません。利用に際しては、この点をご留意ください。
### Recognition: 2nd pass (RL heuristic best-first with 3-gram) samplenum=288 sentence1: 個人技 が 、 随所 で 光っ た 。 wseq1: <s> 個人技+コジンギ+2 が+ガ+58 、+、+75 随所+ズイショ+2 で+デ+58 光っ+ヒカッ+光る+44/17/8 た+タ+70/47/2 。+。+74 </s>l phseq1: silB | k o j i N g i | g a | sp | z u i sh o | d e | h i k a q | t a | sp | silE cmscore1: 0.667 0.262 0.217 0.925 0.732 0.610 0.808 0.544 0.897 1.000 score1: -6941.169434 822 generated, 712 pushed, 28 nodes popped in 288認識結果の各単語の単語信頼度がスペース区切りで出力されます。なお
silB
, silE
等の出力文字列を持たない単語も1単語として含んでいる点に注意してください(すなわち sentence行 ではなく wseq行に対応)。
<WHYPO WORD="個人技" CLASS="個人技+コジンギ+2" PHONE="k o j i N g i" CM="0.262"/>信頼度を出力するには、サーバー側(Julius/Julian側)で起動時オプション "-outcode" の引数に "C" を追加してください。以下は第2パスで単語表記・単語列・音素列・スコア・信頼度を出力する場合の Julius 側の設定です。
% julius .... -outcode WLPSC
configure
で--disable-cm
を指定してください。
信頼度計算のスムージング係数alphaを変更することが出来ます。この係数は事後確率計算におけるゆう度のダイナミックレンジを補正する係数で、0 に近いほど信頼度の値分布が平坦化します。単語信頼度の性能は、この係数によっても左右されます。値を変更するにはオプション -cmalpha
で指定してください。デフォルトは 0.05 です(値の意味については上記の算出アルゴリズムの文献等をご覧ください)。
mkbingram
でバイナリ化したバイナリN-gramファイルとして与えることができます。
単語表記 [出力文字列] 音素列・・・クラスN-gramを用いる場合は、これらの前に「属するクラス名」、「クラス内単語生起確率」を以下のように記述します。
クラス間N-gram上のクラス名 @クラス内単語生起確率の対数値 単語表記 [出力文字列] 音素列・・・第1カラム目の「クラス名」は、クラス間のN-gramでのクラス名を表記します。 第2カラム目の「クラス内単語生起確率の対数値」は、その単語のクラス内での生起確率を、常用対数(log10)で指定します。
認識実行時には、このようにして作成したクラス付き単語辞書を、通常と同様に
-v
で指定します。形式はJulius側で自動判別されます。もちろん、
同時に使用するクラスN-gramと第1カラム目の名前の対応がとれている必要があります。
このような部分クラスN-gramを使用する場合、単語N-gramのエントリは通常と同じように単語辞書で記述し、クラス化されたエントリについてのみ、上記のようにクラスの情報を記述します。以下は、地名が「<地名>」でクラス化されている部分クラスN-gramを想定した場合の辞書の記述例です。
今日+42 [今日] ky o: は+16 [は] w a <地名> @-2.33251 京都+52 [京都] ky o: t o <地名> @-1.68893 奈良+52 [奈良] n a r a <地名> @-2.63574 和歌山+52 [和歌山] w a k a y a m a 出張+6 [出張] sh u q ch o: です+67 [です] d e s u
configure
で--disable-class-ngram
を指定してください。
-record
オプション
adinrec
adintool
adinrec
、adintool
ではオプション -raw
で従来と同じRAW形式での録音が可能です。
Julius
,adinrec
,adintool
の音声切り出しのレベルしきい値(-lv
)のデフォルト値を、3000から2000に変更
-gprune none
) に指定すると正しく音響尤度の計算ができないバグを修正しました。
<RECOGFAIL>
を<RECOGFAIL/>
に訂正。
-n
で指定した数の文候補が見つからずに探索を終了したときに</RECOGOUT>
が出力されないバグを修正
./configure --enable-words-int
)の場合、通常設定で作成したバイナリN-gramは使用できません。上記の設定でコンパイルしたmkbingramを用いて作成しなおす必要があります。
Rev.3.4 では、JuliusのバイナリN-gram読み込み時にこの非互換性をチェックし、合わない場合はエラー終了するように改善しました。
-setting
オプションでエンジンのコンパイル時の設定を出力するようにしました。
-version
を-setting
に変更
-hipass
を-hifreq
に、-lopass
を-lofreq
に変更
configure
オプションおよび起動時オプションの一覧です。
configure
オプション:
--enable-julian
--disable-cm
--disable-class-ngram
-cmalpha value
-outcode C
-lv 2000
-setting
-hifreq
-lofreq