4.1 (2008.9.xx)
================
■プラグインによる機能拡張：
  - 対応するプラグインの型
      - 音声信号入力
      - 特徴量ベクトル入力
      - 音声入力処理
      - 特徴量ベクトル処理
      - 結果出力
      - JuliusLib のコールバック関数をプラグインから追加することも可能
  - プラグインのサンプルソースコードを同梱．各関数の仕様の詳細なコメント付き．
  - 動作環境：Linux, Windows および dlopen() がある OS

■新機能：
  - マルチストリーム特徴量入力のサポート
  - MSD-HMM のサポート（HTS ツールキットで学習したモデルを使用可能）
  - CVN サポート
  - VTLN 用 frequency warping （パラメータ推定は無し）
  - "-input alsa", "-input oss" および "-input esd" 
  - モジュールモード用クライアントの perl 版 "jclient-perl" の同梱

■仕様変更：
  - 複数モデル認識時のオプションの位置を制限
      - オプションは対応するインスタンス定義の真後ろで書く必要がある．
      　（例：言語モデルオプションは "-LM" の直後，他のインスタンス定義の
      　　前に書く必要がある．言語モデルオプションを "-AM" の後ろに書いたり
      　　するとエラーになる）
      - 全体オプションは，インスタンス定義の前に書くか，"-GLOBAL" オプション
      　指定直後に書く
  　なお，この新たな制約は "-nosectioncheck" を指定することで解除できる．

■バグ修正：
  - "-record" で各検出区間の最初の無音部分がファイルに保存されない
  - "-multigramout" が正しく動かない
  - jconf ファイル内で環境変数の展開がたまにうまくいかない
  - HMM の制約を緩和：HMM名の最大長を 256, 状態数の上限を撤廃
  - モジュールの文法関係エラー時のメッセージを統一

■ドキュメント
  - "Juliusbook" のリリース (pdf / html)
  - マニュアルを刷新し，man ディレクトリ以下に集約．
    デフォルトでインストールされるようになった．


4.0.2 (2008.5.27)
==================
新機能：

- 第2パスの探索が失敗したとき，旧バージョン (3.x 以前) では第1パスの結
  果を最終結果として出力していたが，4.x では認識失敗＝解なしとなる．
  新オプション "-fallback1pass" を指定することで，旧バージョンと同様に，
  第2パス失敗時に第1パスの結果を最終結果として出力するようにできる．
- 特徴量抽出で USEPOWER=T をサポート

仕様変更：
- GMM 使用時，"-AM_GMM" の指定がない場合，音響モデルの特徴量設定を共有
  するようになった．

バグ修正：
- GMM による棄却が 4.0.1 で動かなくなっていたのを修正
- Linux/ALSA で他のデバイスを正しく指定できるようになった．
- 巨大な N-gram の読み込みにたまに失敗するバグを修正
- "-record" オプション指定時に不安定になるバグを修正
- マイク入力で sp-segment / GMM / VAD 実行時の callback 実行を修正
- その他，細かいバグ修正


4.0.1 (2008.3.12)
==================
仕様変更：

- Linux のデフォルトオーディオAPIを，OSS から ALSA に変更．

バグ修正：

- 音声入力
    - ALSA ネイティブの入力が正しく動作しない
    - "-48" オプション指定時に segfault
    - "-spsegment" 指定時にMFCC入力でゼロフレームがあると segfault
- VAD関連
    - ショートポーズセグメンテーション，GMM VAD, あるいはデコーダベー
      スVADにおいて，セグメント間で CMN が効いていなかった
- 音響モデル関連
    - マルチパスモード時，ショートポーズモデルが定義されていないと起動しない
- N-gram関連
    - backward N-gram だけ与えられたとき第1パスの2-gramの値が正しくない
    - 未知語エントリに対して確率が正しく割り当てられない．
    - back-off の定義によっては読み込みに失敗することがある．
    - 24bit以上のエントリを持つ巨大なN-gramの扱いに失敗する
    - バックオフ係数の格納エリアが余分に malloc されていた．
- 単単語認識
    - 単単語認識モードにおいて N ベスト出力 ("-output N") が正しくない
- インストール時の問題
    - cygwin で "make install" に失敗する
- ソースコードの精錬
    - 関数内の不要な static 変数をローカル変数に修正
    - 探索部に残っていたワークエリア用大域変数を StackDecode に移動

新機能：

- モジュールモード
    - "ACTIVATEGRAM", "DEACTIVATEGRAM", "DELGRAM" で文法を指定する際に，
      文法 ID 番号だけでなく文法名でも指定できるようになった．
    - 新コマンド "GRAMINFO": 現在の文法リストを返す．


4.0 (2007.12.19)
=================
（4.0 の新機能について，詳細は別紙を参考にしてください）
- 内部構造の整理
- エンジン本体のライブラリ化
- マルチデコーディングのサポート
- 言語モデルのモジュール化・Julianの統合
- 任意長 N-gram のサポート
- ユーザ定義言語制約
- 孤立単語認識のサポート
- confusion network 出力
- ショートポーズセグメンテーションの改善
- GMM ベースの VAD
- デコーダベースの VAD
- コンパイル時オプションの統合
- メモリ量の削減
- サンプルアプリ julius-simple の追加
- ツールの追加 (generate-ngram)
- adintool のマルチサーバ対応，機能強化など関連ツールの強化


3.5.3 (2006.12.29)
===================
- 性能の改善
   - 音響尤度計算の最適化：約 20% から 40% の高速化
   - メモリアクセスの最適化：特に，第2パスでの仮説のメモリ空間の再利用
   - 辞書・単語トレリス周りのメモリ割り付けを改善

- 新たな文法関連ツール
   - "dfa_minimize", "dfa_determinize" … DFA を最小化/決定化する．
   - mkdfa.pl は dfa_minimize を自動的に呼び出すようになった．
   - "slf2dfa" … HTK の文法ファイルから DFA 形式への変換ツールを同時公開

- HTK特徴抽出条件パラメータの埋め込み
   - HTK の学習時に使った特徴量抽出設定の Config ファイルを直接読み込
     んでパラメータを設定できるようになった．
   - mkbinhmm で上記情報をバイナリHMMのヘッダに埋め込めるようになった．

- 単語グラフの改善
   - トライフォンのスコアを考慮してグラフを分けるオプションの追加：同
     じ場所の同じ単語であっても，単語の前後の音素コンテキストが異なる
     場合に別の仮説として出力させる ("-graphrange -1")

- オンラインでのエネルギー項正規化のサポート
   - エネルギー項正規化 (ENORMAL) で学習された音響モデルを用いた
     オンライン音声認識を暫定サポート（直前の音声入力のパワーから正規化する）

- ソースコードの修正
   - libsent/src/wav2mfcc を再構成
   - 音響特徴量パラメータの扱いをモジュール化
   - "--setting" オプションで libsent のコンパイル時設定もあわせて出力
   - Doxygen-1.5.0 のサポート
   - "julius-info@lists.sourceforge.jp" をオフィシャルの連絡先アドレスに
   - Copyright のtypoを修正

- 以下のバグを修正
   - "--enable-words-int" 時に言語モデルの読み込みに失敗することがある
   - 大域変数，ローカルバッファ，オプション扱いに関するメモリリーク
   - 制限を越えて長い入力に対する segmentation fault
   - DFA の初期状態を二重にカウント
   - mkdfa.pl: 環境によって mkfa が見つからず内部起動できないことがある
   - adintool: 中断時，最後に空のファイルが残る
   - adintool: 中断時，直前の数秒の入力がファイルに記録されない
   - その他，細かい修正


3.5.2 (2006.07.31)
===================
- Windows コンソールでの動作の大幅改善
   - DirectSound サポート (cygwin / mingw)
   - 入力のスレッド化 (portaudio API 使用)
   - 最新の MinGW 環境(5.0.2) に対応

- 単語グラフの精度改善
   - 単語グラフの深さによるカット機能の追加 (-graphcut)
   - 後処理の無限ループ回避用の上限設定 (-graphboundloop)
   - グラフ単語仮説のマージと探索中断に関するアルゴリズムの改善

- 第1パスで単語トレリスのかわりに単語グラフを出力可能になった
   - "--enable-word-graph" で単語グラフを出力，第2パスはグラフ上で探索
   - "--enable-wpair" と同時に指定することで，広く用いられている
     2-gram を使った1パスでのグラフ生成アルゴリズムとほぼ等価になる．

- バグ修正
   - configure スクリプトが Solaris 8/9 で正しく動作しない
   - tied-mixture モデルで -gprune none が動かない
   - 音響モデルの duration ヘッダのエラーメッセージがおかしい
   - MFCC の strip_zero がいつもワーニングを出す

- 実装の改善
   - 音響モデルのメモリ管理を hmmdefs ごとに分けて管理するようにした


3.5.1 (2006.03.31)
===================
- 特徴量(MFCC)抽出の拡張
  - 二次差分係数(Accel: _A)に対応．
      - _A を用いる音響モデルで音声入力を直接認識できるようになった
      - 新オプション "-accwin"
  - 任意の型指定の組み合わせに対応(_0, _E, _N, _D, _A, _N)
  - 任意の次元数に対応
      - 抽出される特徴量のタイプおよび次元数は，音響モデルのヘッダから自動判断
  - 細かい特徴量抽出のパラメータを指定可能になった：
      -preemph, -fbank, -ceplif, -rawe / -norawe, 
      -enormal / -noenormal, -escale, -silfloor
  - 新オプション "-zmeanframe": フレームごとの DC offset 除去 (HTK互換)

- MAP-CMN を導入
  - マイク・ネットワーク入力で有効
  - 新オプション"-cmnmapweight"：重み係数を変更（デフォルト 100.0）
  - オプション "-cmnload" で最初の発話の初期ケプストラムを指定可能
  - 2発話目以降の初期ケプストラムは過去の5秒の平均を用いる．
    新オプション "-cmnnoupdate" で初期ケプストラムを更新しないようにできる．

- モジュールモードの安定化
  - 認識の停止・再開時に "<STARTPROC/>" "<STOPPROC/>" を新たに出力する
    ようになった
  - "ADDGRAM 文法名" "CHANGEGRAM 文法名" で文法に名前をつけられるよう
    になった

- バグ修正
  - モジュールモードのPAUSE/RESUMEタイミングに関するバグを複数修正
  - 要素数が24bitに収まらない巨大なN-gramを扱えないバグを修正
  - マルチパス版で3状態(出力1状態)の音響モデルが読み込めないバグを修正
  - 文法の最後の状態がカウントされないことがあるバグを修正
  - gramtools の一部が MacOSX でうまくコンパイルできないバグを修正


3.5 (2005.11.11)
=================
- 新たにサポートされた機能
  - GMM による環境音識別および不要入力棄却(-gmm, -gmmnum -gmmreject)
  - 単語グラフ出力 (--enable-graphout, --enable-graphout-nbest)
  - 単語信頼度による枝刈り (--enable-cmthres)
  - Julianで複数文法認識時に文法ごとの結果を出すオプションを追加
    (-multigramout, 使い方は README-multigramout-ja.txt を参考に）
  - 起動時に複数の文法ファイルを指定
    "-gram prefix1,prefix2,..." もしくは "-gramlist listfile"
    prefix は .dfa, .dict を除いたファイルのプレフィックスを指定
  - テキスト出力のエンコーディング変換："-charconv from to"
    Linux では iconv, Win32 では Win32API + libjcode を使用．

- Linux での音声入力の改善
  - ALSA-1.0.0 以降に対応 (--with-mictype=alsa)
  - EsounD オーディオサーバーをサポート (--with-mictype=esd)
  - USBオーディオ使用時にマイク入力が動作しないことがあるバグを修正
  - 音声デバイス名(デフォルト:/dev/dsp)を環境変数 AUDIODEV で指定可能
  - portaudio, spLib を音声入力として指定可能に

- メモリ使用量の改善
  - 第1パスのビームのワークエリア使用メモリ量を削減
  - 木構造化辞書のメモリ量を削減(outstyle, factoring関連の最適化)
     （20k JNAS fast で 1.5MB削減）
  - 単語N-gramのメモリ使用量を改善
    (1)2-gramバックオフ構造を最適化（20k JNAS で 8MB削減, 3-gram量による）
    (2)2-gramのN-gramインデックスを32bit→24bitに縮小

- 仕様変更
  - N-gramのインデックス圧縮に伴い，バイナリN-gramのファイル形式が新し
    くなった．古いのもそのまま読み込める（内部で新形式に自動変換される）
    が，以下のようにすることで，あらかじめ新しい形式にしておくことができる．
		"mkbingram -d oldbinary newbinary"
    なお，本バージョンの mkbingram で出力したバイナリN-gramは新形式な
    ので，3.4.2以前では読めないことに注意すること．
    （参考：形式はファイルの最初の17バイトで判別できる：
      "julius_bingram_v3" なら古いバージョン，
      "julius_bingram_v4" なら新しいバージョン）
  - adintool との接続：ネットワーク上のバイトオーダをリトルエンディア
    ンに固定した．
  - デフォルトで圧縮展開に zlib ライブラリを使用するようになった．
    従来は外部 gzip を使用．"--disable-zlib" でOFF (従来どおり) に変更可能
  - Win: 出力文字コードのデフォルトを「変換なし」に変更．
    3.4.2ではデフォルトで SJIS に変換していた．
  - Win: VC++でのコンパイル方法を変更
    　Julianは -DBUILD_JULIAN をつける．julius.h を変更しなくて良い．
      詳細は 00HowToCompile-win.txtを参照のこと

- バグ修正
  - スペクトルサブトラクションが動かないバグを修正
  - 第2パスで stack empty で終了時にメモリリークが生じていたバグを修正
  - 非常に短時間(数フレーム)の入力で落ちるバグを修正
  - CMN非使用の音響モデル使用時に音声ファイル・マイク入力できないバグを修正
  - 逐次デコーディング(--enable-sp-segment)におけるsp単語扱いのバグを修正
  - maxcodebooksize が表示されないバグを修正
  - stack empty で探索失敗時に得られた候補数を表示
  - モジュールモードで -separatescore に対応 (AMSCORE=..., LMSCORE=...）
  - 全探索オプション "-b 0" 時にビーム幅が文法追加時に更新されないバグを修正
  - 文法変更時に単語間トライフォンの計算が設計と異なっていたバグを修正
  - 複数文法使用時に，認識結果の文法IDを標準出力でも出力するよう修正
  - エンディアンの異なるマシン間で音声データの送受信に対応
  - Linux: USBオーディオ使用時にマイク入力が動作しないことがあるバグを修正
  - Linux: iccでコンパイルしたJuliusが起動時に落ちるバグを修正
  - Win: 改行コード対応(文法ファイル・-filelist)
  - Win: cygwin環境で mkdfa.pl がテンポラリを開けないバグを修正
  - Win: ZLIB非使用時にfopenに失敗することがあるバグを修正
  - Win: -record で録音したファイルの拡張子が .raw だったのを .wav に修正

- ソースの統合
  - Linux版 と Windows コンソール版でソースを統合
  - Multipath 版のソースを統合
    "--enable-multipath" とすることで，モデルの遷移に制限のない
    multipath 版をコンパイルすることができる．ソース内部では
    "MULTIPATH_VERSION" の定義で切り替えている．

- その他
  - Win: MinGW でコンパイルできるようになった．
  - プログラム中のコメントの大規模な更新：Doxygen に対応．
    "make doxygen" で HTML 形式のクロスリファレンスを生成できる．
  - make install 時，"julius-3.5-fast" のようにバージョン番号と設定
    (--enable-setup の値)をつけた実行バイナリを追加インストールするよう設定
  - "./support/build-all.sh" で各設定の julius, julian および全ての実行バイナ
    リをコンパイルして build-bin/ 以下に生成できるようにした．
  - Updated LICENSE.txt with English translation for reference.


3.4.2 (2004.03.31)
===================
- 指定時間より短い入力を棄却する -rejectshort msec を追加
- (-input adinnet) モジュールモード併用時のPAUSE/TERMINATEを安定化
- バグ修正
  - 数フレームの入力時のメモリリークを修正 (beam.c)
  - 数単語の認識でN-best候補が正しく出ないことがある不具合を修正
  - generate の無限ループを修正
- 整形
  - 'gcc -Wall' に合わせてソースを整形
  - copyright 表示を 2004 年へ更新
  - config.guess, config.sub を更新 (for MacOSX)

3.4.1 (2004.02.25)
===================
- 探索の安定化に向けたアルゴリズムの改善
  - 単語展開時の言語スコアの多重計算を修正
  - 単語間トライフォンの新たなスコア計算方法を実装(-iwcd1 best #)
  バージョン3.4 以前と比べて認識精度が改善される可能性があります！
- バイナリHMM形式（Julius専用）のサポート
  通常のhmmdefsからバイナリ形式に変換するツール "mkbinhmm" の追加
- MFCC特徴量抽出がより高速になった（sin/cosテーブルを使用）
- 以下のバグを修正
  - (-input adinnet) 音声の受信開始と同時に認識を開始しない
  - (-input adinnet) モジュールモードとの併用時にPAUSE/TERMINATEが効かない
  - (-input adinnet) プロセスを不必要に fork する
  - (-input rawfile) Windowsのサウンドレコーダーで録音した wav ファイル
                     を読めない
  - (音響モデル) CMNが不要な音響モデルでもCMNを行っていた
  - (音響モデル) triphone エラー時に大量のメッセージを吐いていた
  - (adintool) 連続ファイル送信ができなかった
  - (sp-segment) ショートポーズでの探索再開・中断に関するバグの修正，および
		 マイク入力でのショートポーズセグメンテーションの実現
  - (-[wps]align) 連続入力時のメモリリークを修正
- 音声入力のDC成分の除去機能を追加 (-zmean)
- (-module) 新出力 '<INPUTPARAM FRAMES="入力フレーム長" MSEC="入力ミリ秒">'
- おまけ機能「探索空間の可視化」を追加
- HTMLドキュメントを大幅に更新
- rev.3.3 から現在までの変更の詳細を whatsnew/ 以下に記述

新オプション："-iwcd1 best #" "-zmean"
新configureオプション："--disable-lmfix", "--enable-visualize"

3.4   (2003.10.01)
===================
- 確信度計算のサポート
  - "-cmalpha" オプションでスムージング係数を指定
  - モジュールモードでの確信度出力は "-outcode" で 'C' を指定
  - configure時 "--disable-cm"で無効化
  - "--enable-cm-nbest"でN-bestを用いた計算方法に変更可能
- クラスN-gramのサポート
  - configure時 "--disable-class-ngram"で無効化
  - factoringノード決定をN-gram単語ベースから辞書単語ベースに変更
- adinrec, adintoolおよびオプション"-record"での音声記録形式を
  RAW形式からWAV形式に変更
- 出力メッセージの変更：
	System Info のメッセージ構成
	エンジン設定のメッセージ
- 修正：
	モジュールモードの出力のバグをいくつか修正
	数フレーム入力されたときに落ちるバグを修正 (realtime-1stpass.c)
	検出された音声区間の末尾の無音が長い不具合を修正
	NetAudio使用時にコンパイルに失敗するバグを修正
	バイナリN-gram作成時のワードサイズをチェックするよう修正
	mixture欠け時の音響尤度計算の誤りを修正 (gprune_none.c)
    	"-version"->"-setting", "-hipass"->"-hifreq", "-lopass"->"-lofreq"

3.3p4 (2003.05.06)
===================
- 音声入力のいくつかの不具合を改善
  - マイク入力で長時間動作させたときに突然ハングアップする不具合を修正
  - モジュールモードで，入力音声が長すぎたときにクライアントがハングアッ
    プする不具合の修正（クライアントにエラーメッセージを送信するようになっ
    た）
  - 1000サンプル以下の短い入力に対するバッファリングの改良．
  - ネットワーク経由の音声入力におけるブロッキングの改良．
- ソースの見栄えの修正 （jcontrolのtypo, 定数LOG_TENを定義，など）

3.3p3 (2003.01.08)
===================
- 単語間ショートポーズの扱いが新たに追加された．
  - [Julius] "-iwspword" でショートポーズに対応する単語エントリを認識
    辞書に自動追加するようになった．追加される単語のN-gramエントリや
    出力文字列，音響HMM列はデフォルトでは"<UNK> [sp] sp sp"で，オプション
    "-iwspentry" で指定可能．
  - [マルチパス版] より短時間のcontext-freeな単語間の無音に対応した．
    オプション "-iwsp" で，辞書中の全単語の読みの末尾にスキップ可能な
    ショートポーズモデルを付加する．付加するモデルは "-spmodel" で変更
    可能．詳細は別ドキュメントを参照のこと．
- 音声入力部の改善:
   - 入力の遅延を改善：これにより，マイク入力の遅延が，
     従来の 200ms 前後から 50ms 前後に改善された．
   - 音声デバイスが他のプロセスで使用中の場合に，ブロックせずにエラー
     終了するように変更．
- 最新デバイス環境に対応：
   - libsndfile-1.0.x に対応．
   - ALSA-0.9.x に対応．
     自動検出では OSS が優先されるので，使用するには configure 時に
     "--with-mictype=alsa" を明示的に指定すること．
 
3.3p2 (2002.11.18)
===================
- [マルチパス版] モデルスキップ遷移に対応した．音響モデルの初期状態か
  ら最終状態への（出力状態を系列上に含まない）遷移をサポートした．これ
  により，これ以降のバージョンは HTK の「全ての」状態遷移をサポートし
  たことになる．
- 新機能: "-record dir" で，Juliusに入力された音声データを全て指定ディ
  レクトリ下に逐次記録していく機能の追加．
- 以下のバグを修正
    - Solaris で MFCC ファイル入力時に落ちる．
    - "-module" と "-input adinnet" 併用時に，クライアントからのコマンドを
      受け付けなくなる．
    - 最後の認識結果がバッファリングされ正しいタイミングで端末出力されない．

3.3p1 (2002.10.15)
===================
以下のバグを修正：
- 第２パスの言語モデルの重みとペナルティのデフォルト値が０になっていた．
- 辞書に複数スペースがあると読み込みに失敗する．
- monophone 使用時に -separatescore の出力がおかしくなる．
