| 開発元:東京工業大学 大学院情報理工学研究科 |
| 計算工学専攻 古井研究室 |
| http://www.furui.cs.titech.ac.jp/ |
| 開発者:西村 義隆 |
| nisshi@furui.cs.titech.ac.jp |
マルチバンド版 Julius は,マルチバンド音声認識や MFT (Missing Feature Theory) に関する研究を行うために 大語彙連続音声認識システム Julius を 東京工業大学 古井研究室で改造したものです.本ページでは,マルチバンド版化のためのパッチを提供します.
マルチバンド版 Julius により,音響特徴ベクトルの各次元から得られる音響尤度にユーザが定義した重みをつけて音声認識を行うことができます.雑音の影響などで特徴ベクトルのある次元の信頼度が小さくなった場合には,その次元の重みを小さくすることで音声認識の耐雑音性の向上が期待できます.
マルチバンド版 Julius はオリジナルの Julius
と同様にオープンソース・オープンライセンス
のフリーソフトウェアです.マルチバンド版
Julius の改造元は「Julius バージョン 3.3p3 マルチパス版
/ Julius バージョン 3.4.2 マルチパス版 / Julius
バージョン 3.5」です.したがって,ライセンスもそちらに準拠しています.
オリジナルの Julius バージョン 3.3p3
のライセンスについては こちら
オリジナルの Julius バージョン 3.4.2
のライセンスについては こちら
オリジナルの Julius バージョン 3.5
のライセンスについては こちら
をご覧下さい.
以下、マルチバンド版 Julius 1.0を例にインストール方法を記載してあります。
他のバージョンをインストールする際には
[julius-3.3p3-multipath]の部分を[julius-3.4.2-multipath]または[julius-3.5]に
[julius-multipath-mband1.0]の部分を[julius-multipath-mband1.1]または[julius-mband1.2]に
[patch-3.3p3-multipath-mband1.0]の部分を[patch-3.4.2-multipath-mband1.1]または[patch-3.5-mband1.2]に変えてください。
julius-3.3p3-multipath.tgz と julius-multipath-mband1.0.tgz を同じディレクトリに置いてください.
% ls julius-3.3p3-multipath.tgz julius-multipath-mband1.0.tgz |
それぞれ解凍します.
% tar xvfz julius-3.3p3-multipath.tgz % tar xvfz julius-multipath-mband1.0.tgz |
次に,マルチバンド用のパッチを当ててください.
注)パッチを当てる際には julius-3.3p3-multipath
の中には入らず,julius-3.3p3-multipath
の親ディレクトリ上で行ってください.
% patch -p0 < ./julius-multipath-mband1.0/patch-3.3p3-multipath-mband1.0 |
コンパイル方法はオリジナル Julius および Julian と同じです.詳しくはオリジナル版のドキュメント(doc/install.html)をご覧ください.以下に Julius と Julian をインストール手順の例を示します.
% cd julius-3.3p3-multipath % ./configure % make % make install % make distclean % ./configure --enable-julian % make % make install |
マルチバンド版Juliusでは,特徴ベクトルの各次元から得られる出力尤度を重みづけし,音声認識を行います.設定する重みはフレーム単位で可変にすることが可能です.重みつき尤度の計算は以下のようにして行われます.

あるフレームにおける音響尤度が以下の式で表される場合,
マルチバンド版 Julius で用いられる重みづけされた尤度は以下の式で表される.

このとき,各記号の意味は以下の通りである.
通常,HMM
では混合正規分布を利用しているので,(2)式を正規分布を用いて書き換えると以下のようになる.
上述の説明は,以下の文献にも記載されています.
マルチバンド版 Julius では HTK 形式の音響特徴量ファイルを入力として読み込ませる形で音声認識を行います.マイクからの直接入力や,音声ファイルの入力には対応していません.
通常の Julius では音響特徴量のファイル m001.mfc
から m003.mfc の認識を行う場合,入力ファイルのリスト
list.txt を,
m001.mfc m002.mfc m003.mfc |
のように用意し,以下のコマンドで認識を実行します.
% julius -filelist list.txt |
マルチバンド版では,特徴量ファイル(*.mfc)と重みの情報を記述したファイル(*.dat)を1セットとして扱います.そこで
list.txt を,
m001.mfc m001.dat m002.mfc m002.dat m003.mfc m003.dat |
というように記述します.
重み情報ファイルは,特徴量ファイルと同じく
HTK 形式で作成します.各フレームの各次元に対する重みを記述するので,データ数(次元数,フレーム数)は対応する特徴量ファイルと全く同じにしておく必要があります.また,へッダの情報も,双方で同じにしておきます.
たとえば,m001.mfc が 12 次元の MFCC
であるとして,
% HList -e 1 m001.mfc 1: 0.015 0.003 0.052 0.043 0.695 -1.011 -0.987 1.001 0.255 0.352 0.669 0.052 |
となるとき,m001.dat について HList
を実行すると,
% HList -e 1 m001.dat 1: 1.000 1.500 0.500 0.300 1.700 0.400 2.000 0.600 0.700 0.300 0.500 2.500 |
のように表示され,フレームについて各次元にどれだけの重みが付与されるか確認することが出来ます.(この例で言えば,1 フレーム目の 1 次成分 0.015 に対応する重みが 1.000 となります.)全ての重みを 1.0 にすれば,重みをつけない場合と同じ結果になります.