チュートリアル 〜起動から認識実行まで〜

Unix版 Julius の基本的な使い方について説明します.モデルの準備、システムの起動、そして実際に認識を行ってみるまでの流れを説明します。
  1. 準備するもの
  2. 音声ファイルの認識
  3. マイク入力の認識

1. 準備するもの

Julius はそれ単体では動作しません。言語モデルと音響モデルを与えることで、認識システムとして音声認識を行うことができるようになります。

最低限必要なのは,以下の3種類のファイルです.

音響HMM定義ファイルHTKのHMM定義ファイル形式
単語辞書ファイルHTKの辞書形式とほぼ同じ
単語N-gramファイル2-gram+逆向き3-gram (ARPA標準形式)、
またはバイナリN-gram形式(独自形式)

音響HMMとして音素環境依存モデル(triphone, PTMなど)を用いる場合、さらに以下のファイルが必要です。

HMMListファイル独自形式

各ファイルの詳細については 「ファイル仕様と制限」を参照してください.

基本的な音響モデル・言語モデルがこれまでに配布されています:

以下では、これらの CD-ROM を使用することを想定して説明を進めます。

設定ファイル(jconfファイル)の準備

モデルファイルの指定や認識のパラメータ、入力ソースの選択などの設定は、すべて「jconf ファイル」と呼ばれるファイルに記述します.サンプルのjconfファイルがソースアーカイブ内に "Sample-j.jconf" としてありますので,これを適当な場所にコピーして,自分の環境に合わせて編集します。

前節で述べた Julius のCD-ROMをお持ちの方は、各CD-ROMに含まれている音響モデル・言語モデルを使うよう設定されたjconfファイルがCD-ROMに含まれていますので、それを使って下さい。

2. 音声ファイルの認識

最初に録音済みの音声波形ファイルの認識について説明します。

音声ファイルの形式は、16bit の .WAV ファイル(無圧縮)あるいは RAW ファイル(big endian) です。サンプリング周波数は音響モデルの分析条件に依存しますが,通常は 16kHz です.

Juliusの起動はコマンドラインから行います."-C" オプションで jconf ファイルを指定します.

% julius -C jconfファイル名

jconf内の各設定は、ここでコマンドラインオプションとして与えることもできます。特に"-C jconfファイル名" の後ろで指定することで,jconfファイル内の設定を上書きできます.たとえば,ここでは音声ファイル入力を行うので、以下のように指定することで jconf 内の指定によらず音声ファイル入力を指定することができます。

% julius -C jconfファイル名 -input rawfile
起動が終了すると,以下のようなプロンプトが出てキー入力待ち状態になります。
enter filename->
ファイル名を与えると、Juliusはその入力に対して音声認識を行います.

認識処理全体は2パスで行われます。まず入力全体に対して2-gramを用いたフレーム同期の認識を行います.以下は第1パスの出力例です.

input speechfile: sample/EF043002.hs
58000 samples (3.62 sec.)
### speech analysis (waveform -> MFCC)
length: 361 frames (3.61 sec.)
attach MFCC_E_D_Z->MFCC_E_N_D_Z
### Recognition: 1st pass (LR beam with 2-gram)
.......
pass1_best:  師匠 の 指導 力 が 問わ れる ところ だ 。
pass1_best_wordseq: <s> 師匠+シショー+2 の+ノ+67 指導+シドー+17 力+
リョク+28 が+ガ+58 問わ+トワ+問う+44/21/3 れる+レル+46/6/2 ところ+ト
コロ+22 だ+ダ+70/48/2 。+。+74 </s> 
pass1_best_phonemeseq: silB | sh i sh o: | n o | sh i d o: | ry o k
u | g a | t o w a | r e r u | t o k o r o | d a | sp | silE 
pass1_best_score: -8944.117188
pass1_best: が第1パスのベスト仮説の文字列(中間結果)です.
pass1_best_wordseq: は同じくN-gram表記の文字列,
pass1_best_phonemeseq: は同じく音素表記列("|" は単語区切り)
pass1_best_score: は仮説のスコア(対数尤度)です.

第1パス終了後、第2パスが実行されて最終的な認識結果がでます。 第2パスでは第1パスで得られた中間結果を元に,3-gramを用いて単語単位の スタックデコーディングを行います.

### Recognition: 2nd pass (RL heuristic best-first with 3-gram)
samplenum=361
sentence1:  首相 の 指導 力 が 問わ れる ところ だ 。 
wseq1: <s> 首相+シュショー+2 の+ノ+67 指導+シドー+17 力+リョク+28 が
+ガ+58 問わ+トワ+問う+44/21/3 れる+レル+46/6/2 ところ+トコロ+22 だ+
ダ+70/48/2 。+。+74 </s>
phseq1: silB | sh u sh o: | n o | sh i d o: | ry o k u | g a | t o w
a | r e r u | t o k o r o | d a | sp | silE 
score1: -8948.578125
478 generated, 478 pushed, 16 nodes popped in 361
sentence1: が最終的な認識結果となります. 認識終了後はファイル名入力プロンプトへ戻ります.

結果の出力を変更できます。起動時に "-progout" をつけると第1パスの途中結果を漸次的に出力します。また "-quiet" で以下のようにシンプルな出力にできます。

58000 samples (3.62 sec.)
pass1_best:  師匠 の 指導 力 が 問わ れる ところ だ 。 
sentence1:  首相 の 指導 力 が 問わ れる ところ だ 。 
以上でファイルの認識は終わりです.

3. マイク入力の認識

マイク入力を直接認識することができます。マイク入力を行うにはオプション "-input mic" を指定します。

起動後、以下のようなプロンプトが出て入力開始待ちになります。

<<< please speak >>>
マイクに向かって発声を開始すると、同時に第1パスの認識処理が開始されます. 発声を止めると,そこで第1パスを打ち切って第2パスを実行し、最終的な認識結果を出力してまた上記プロンプトへもどります.

起動して最初の1入力は正しく認識できませんので注意してください。また周囲の雑音を検出して認識が始まってしまう場合や,逆に喋っても認識が始まらない場合は, マイクの録音レベルを調節してください.

動作条件などマイク入力に関する詳細は「マイク入力について」をご覧下さい.


$Id: tutorial.html,v 1.5 2002/09/11 21:00:39 ri Exp $