## Rev.3.3p4 の変更点

Julius/Julian rev.3.3p4 では，主に安定性の向上および音響モデルに関する拡張が行われました．具体的な変更点は以下のとおりです。

- 音声録音機能 `-record`の追加
- 音声入力のバグ修正と改善
- 音響モデルに関する拡張
  - コンテキスト独立な単語間ショートポーズのサポート
  - 音響モデルのスキップ遷移に対応
  - 無音単語エントリの自動付与機能の追加
- その他のバグ修正

以下に各項目の詳細を述べます．また、これらの変更に伴うオプション指定の変更について、本ドキュメントの末尾にまとめておきます。

## 音声録音機能 `-record`の追加

Julius/Julian で、認識した音声データを逐次ファイルに保存していく機能が追加されました。使用するには、`-record` で以下のようにディレクトリを指定します。

     % julius .... -record ディレクトリ名

起動後、指定ディレクトリ以下に、認識が行われた単位ごとに音声データがファイルに順次記録されます。ファイル名は、認識を開始した時点のシステム時間を以下のように「年.月日.時分秒.raw」の形で表したものになります。

    2004.0222.145324.raw

ファイル形式は RAW形式（ヘッダ無し）, 16bit, monoral, 無圧縮です。

（注意：3.4 以降では WAV 形式に変更されました）

## 音声入力のバグ修正と改善

3.3から 3.3p4 にかけて、音声入力に関する多くのバグの修正、および 入力遅延の改善が行われました。以下、改善順に列挙します。
3.3 → 3.3p2：

- Solaris で MFCC ファイル入力時に落ちるバグをFIX
- "-module" と "-input adinnet" 併用時にハングするバグをFIX

3.3p2 → 3.3p3：

- 入力の遅延を改善：これにより，マイク入力の遅延が従来の 200ms 前後から 50ms 前後に改善された．
- 音声デバイスが他のプロセスで使用中の場合に，ブロックせずにエラー終了するように変更．
- libsndfile-1.0.x に対応．
- ALSA-0.9.x に対応． 自動検出では OSS が優先されるので，使用するには configure 時に "--with-mictype=alsa" を明示的に指定すること．

3.3p3 → 3.3p4

- マイク入力で長時間動作させたときに突然ハングアップする不具合を修正
- モジュールモードで，入力音声が長すぎたときにクライアントがハングアップする不具合の修正（クライアントにエラーメッセージを送信するようになった）
- 1000サンプル以下の短い入力に対するバッファリングの改良．
- ネットワーク経由の音声入力におけるブロッキングの改良．

## 音響モデルに関する拡張

### コンテキスト独立な単語間ショートポーズのサポート

マルチパス版のJulius/Julianにおいて、単語間に特別なショートポーズモデルを付与できる機能が追加されました。

オプション `-iwsp` を指定することで、辞書中の全単語の末尾に

- 音素環境独立で、かつ
- 省略可能な

ショートポーズモデルが付加されます。これは、発話中に生じうる、単語間の短時間（数十ms）の無音に対応するためのものです。

実際には、以下のようにスキップを許す形でショートポーズモデル (sp model) が全単語の末尾に付与されます。

トライフォンモデルでは、このショートポーズモデルは音素環境独立（context-free）な音素として扱われます。すなわち、このモデル自身は前後の音素によって変化せず、かつ前後の音素の音素環境としても無視されます。具体的には、以下のように sp を飛び越えて音素環境が考慮されます。

        ... a sp | b ...  →   ...-a+b sp | a-b+...

ショートポーズモデルの名前はオプション `-spmodel` で指定します。デフォルトは "sp" です。また，このショートポーズモデルへの遷移にペナルティスコアを加えることで，ショートポーズの挿入を抑制することもできます．ペナルティスコアは `-iwsppenalty` で指定できます（負の値）．デフォルトは 0.0 （ペナルティ無し）です．

この `-iwsp` はマルチパス版のJulius/Julianでのみ利用可能です。通常版の Julius/Julian では利用できませんのでご注意ください。

### 音響モデルのスキップ遷移に対応

マルチパス版の Julius/Julian において、初期状態から最終状態への直接遷移 （以下スキップ遷移）を持つ音響モデルに対応しました。従来の Julius/Julian ではモデル全体を省略可能にするようなスキップ遷移に対応していませんでしたが、本バージ ョンより使用可能となりました。これにより，これ以降のマルチパス版Julius/Julianは、 HTK の状態遷移のほとんどをサポートしたことになります。

ただし、現時点では制約として、単語全体が省略可能な単語、すなわちその単語を構成する音素モデルがすべてスキップ遷移を持つ場合、そのような単語定義は Julius/Julianでは扱えません。単語単位での省略を行いたい場合は、言語モデルでその単語を飛ばした単語接続を定義するなど、言語制約のレベルで対処する必要があります。

この音響モデルのスキップ遷移への対応は、マルチパス版のJulius/Julianのみです。通常版の Julius/Julian では使用できませんのでご注意ください。

### 無音単語エントリの自動付与機能の追加

Julius において `-iwspword` を指定することで、無音に対応する単語のエントリを辞書に自動登録することができます。辞書に追加される単語はデフォルトでは以下のような単語です。

    <UNK> [sp] sp sp

このオプションは、N-gramにおいて無音の位置が定義されていないときのためのものです。日本語では主に、読点「、」やその他の記号に無音モデルを割り当てることで発話文中の休止（＝無音）の位置を言語的にモデル化する場合が多いですが、他の言語やあるいは日本語でも学習コーパスによっては、このような無音位置のモデル化が行われない場合があります。そのような場合に、このオプションを指定して辞書に無音に対応する単語エントリを追加することで、認識精度が向上することがあります。

`-iwspword` で追加される単語のエントリは、 `-iwspentry` で変更することができます。

     % julius .... -iwspword -iwspentry "<UNK> [sp] sil"

## その他のバグ修正

その他のバグ修正について、修正された順に以下に列挙します。
3.3p1

- Juliusで第２パスの言語モデルの重みとペナルティのデフォルト値が０になっていた．
- 辞書に複数スペースがあると読み込みに失敗する．
- Juliusでmonophone 使用時に -separatescore の出力がおかしくなる．

3.3p2

- 最後の認識結果がバッファリングされ正しいタイミングで端末出力されない．

## オプション変更一覧

Julius-3.3p4 で変更された`configure`オプションおよび起動時オプションの一覧です。
`configure`オプション：

- 変更はありません

起動時オプション：

- 新規追加：`-iwsp`（マルチパス版）
- 新規追加：`-iwsppenalty value`（マルチパス版）
- 新規追加：`-iwspword`（Juliusのみ）
- 新規追加：`-iwspentry wordentry`（Juliusのみ）
- 新規追加：`-spmodel modelname`
- 新規追加：`-record directory`

$Id: WhatsNew_3.3p4.html,v 1.3 2004/02/25 03:39:25 ri Exp $