マルチバンド版 Julius

開発元:東京工業大学 大学院情報理工学研究科
    計算工学専攻 古井研究室
    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 のライセンスについては こちら
をご覧下さい.


ダウンロード

(Ver.1.2の改造箇所についての詳しい説明は,こちら をご覧下さい.)
(Ver.1.1の改造箇所についての詳しい説明はありません.)
(Ver.1.0の改造箇所についての詳しい説明は,こちら をご覧下さい.)

インストール方法

以下、マルチバンド版 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 にすれば,重みをつけない場合と同じ結果になります.