Rev.3.3の新機能および変更点

Rev.3.3 の 3.2 からの新機能および変更点は 以下のようになっています. 以下に詳細を述べます.

機能拡張

マルチパス音響モデル対応版 Julius/Julianの提供

従来のJulius/Julianは,高速な処理を重視して音響モデルの状態遷移に制約 がありました.すなわち,音響HMMにおいて初期状態から,あるいは最終状態 への遷移が1つであるモデルしか扱えませんでした.

Rev.3.3 からは,従来と同様の制約を持つ『通常版』と別に,新たに『マルチ パス音響モデル対応版』の Julius/Julian を提供します.このバージョンは, 初期状態からの複数遷移および最終状態への複数遷移を含むモデルを扱うこと ができます.これによって,マルチパス音響モデルなど,複雑なモデル内遷移 を持つ音響モデルを使用することができます.

この拡張された『マルチパス音響モデル対応版』は,ループ・スキップを含む ほぼ任意のモデル内遷移に対応しています.(ただし,初期状態から最終状態 への直接遷移のみ未対応です)

『マルチパス音響モデル対応版』は,通常版とは別のソースアーカイブとして提 供されます.コンパイルおよび使用方法は通常版と同一です. なおアルゴリズムの拡張により,同じモデルを用いた際の認識速度は通常版に 比べて若干(1% 前後)低下しますのでご注意ください.

マルチパス版のためのアルゴリズム変更については,参考文献[6]をご覧ください.

サーバーモジュールモードの追加

実行中の Julius/Julian をサーバー・クライアント形式で外部プロセスから 制御する機能が追加されました.

起動時にオプション "-module" をつけることで『サーバーモ ジュールモード』で起動します.クライアントと接続後認識を開始し,クライ アントへは認識結果や音声トリガ情報などのメッセージが送信され,クライア ントからは認識開始や中断の指示が行えます.またJulianでは,クライアント からの認識文法切り替え・複数文法同時認識が行えます.

クライアントは tcp/ip ソケットを通じて Julius/ Julian と通信します.サ ンプルのクライアントプログラム "jcontrol" が収められてい ます.使用方法と使用例については,サーバーモジュー ルモードについてあるいはjcontrolマニュアルをご覧ください.

(Julian) 複数文法同時認識のサポート

文法の動的切り替え

Julianのサーバーモジュールモードにおいて,認識用文法を認識プロセス実行 中に外部から(再起動なしに)切り替えることができるようになりました.文 法はクライアントからソケットを介して Julian へ流し込みます.音声認識が 行われている最中に文法の切り替えが指示された場合は,その音声入力が終了 して入力待ち状態になったときにはじめて更新されます.

動作の詳細はサーバーモジュールモードについてjcontrolマニュアル,および参考文献[7]をご覧ください.

複数文法の同時認識

さらに上記の拡張として,Julianで複数の文法を同時に用いて認識することが 可能になりました.

文法の追加および削除は,サーバーモジュールモードでクライアントから行い ます.音声認識実行中に指示があった場合,その音声入力が終了して入力待ち 状態になったときに更新されます.また,Julian に読み込まれた個々の文法 の一時的な ON/OFF (activate/deactivate) も可能です.

実現の仕組みとしては,全文法をJulian内部で結合し,単一のグローバル文法 を生成してその上で認識が行われる単一デコーディング方式を採っています. 全文法中の候補の中でもっとも尤度の高かった候補が認識結果として出力され ます.

詳細はサーバーモジュールモードについてjcontrolマニュアルおよび参考文献[7]をご覧ください.

スペクトルサブトラクションのサポート

入力音声に対するスペクトルサブトラクション(SS)を実装しました. 「入力の先頭(の無音部)でSSを行う」「あらかじめ計算したノイズスペクトル を用いる」の2通りの方法が使用可能です.
  1. ファイル入力の場合:入力の先頭(の無音部)でSSを行う
        -sscalc		SS を行なう
        -sscalclen msec	-sscalc 時,各ファイルの先頭の msec 分を無音部
                            とみなし,その範囲の平均スペクトルで SS を行な
                            う.単位はミリ秒(default: 300ms)
    
  2. マイク入力の場合:あらかじめ計算した SS 値をファイルから読み込む
        -ssload filename	filename から SS 用のノイズスペクトルデータを
    			読み込む.ノイズスペクトルデータは,あらかじめ
    			作成ツール "mkss" で作成しておく.
    
また,以下のパラメータ設定オプションが追加されました.
    -ssalpha		SS の減算係数(default: 2.0)
    -ssfloor		SS のフロアリング値(default: 0.5)
SS はパワースペクトルで行なっています.
	|S(f)|^2 = |Y(f)|^2 - \alpha |N(f)|^2
この減算計数 alpha の値を -ssalpha で指定します.デフォルトは 2.0 です.

また,上記のスペクトル減算の結果マイナス値となるスペクトル成分に対して はフロアリングを行います.このフロアリング値としては「減算前の元スペク トルパワーの定数倍」を用います.この定数値を -ssfloor で 指定します.デフォルトは 0.5 です.

その他の機能拡張

音声入力の拡張

ネットワーク経由の入力("-input adinnet")が正式にサポート されました.他のクライアントホストで録音した音声をネットワーク経由で Julius/Julian に送り込んで認識することができます.音声入力クライアント としては,付属ツール "adintool" を用いることができま す.

音声の切り出しについては,

のいずれのスタイルも可能です. 詳しくは adintool のマニュアルの実行例を参照してください.

また,標準入力からの音声入力 ("-input stdin") が新たにサポートされました. 音声波形フォーマットは RAW(16bit, BE)あるいは WAV(無圧縮) のどちらかの みです.

CMNパラメータのファイル保存・読み込みのサポート

起動時オプション "-cmnsave filename" で CMN のパラメータ をファイルに書き出すことができます.Julius/Julian では CMN パラメータ は最新の5秒分の入力を用いて認識終了ごとに逐次更新しているため,このファ イルも1入力ごとに上書きで更新されます.

また,"-cmnload filename" で上記で保存した CMN パラメータを読 み込んで初期値とすることができます.ファイルが無い場合は無視されます.

想定する使用法としては,"-cmnsave foo.cmn -cmnload foo.cmn" とすることで,

  1. 起動時にファイル foo.cmn があれば読み込む
  2. 認識中の最新の CMNパラメータが随時 foo.cmn に保存される
という動作を行い,Julius/Julian を停止・再起動させても常に最新の CMN パラメータを最初の発話から使用することができるようになります.

状態単位のセグメンテーションのサポート

従来のセグメンテーションのオプション "-walign"(単語単位), "-palign"(音素単位)に加えて,HMM状態単位のセグメンテー ション "-salign" が可能になりました.モデル内の状態系列の 番号もあわせて出力されます.

RCLASSを含む hmmdefs のサポート

MLLR適応のための regression tree を含む音響モデルファイルを直接読み込 めるようになりました.

ツールの整備

付属ツールが増強・整備されました.これらは全て Julius / Julian と同時 にインストールされます.

実装の改善

基本性能の改良

認識アルゴリズム実装の改善

Julius / Julian 共通: Julius のみ: 以上の実装の修正により,Julius で認識速度と認識精度が若干改善されました.

使用メモリ量の削減

以下の改善が施されました.

ドキュメンテーションの整理

オンラインマニュアルの整備

英語(.man) および日本語(.man.ja)があります. デフォルトでは英語マニュアルがインストールされます.日本語マニュアルを 上書きインストールしたい場合は,Julius/Julian インストール時に
% make install.man.ja

としてください.

ソース内のコメントを大幅に修正

ソース内のコメントを大幅に修正しました. libsent 以下は英語コメントのみ, julius 以下主要部分を日本語と英語で併記しています.

その他


Last modified: 2002/09/11 21:00:39