Julius-4.2のMacPortsで日本語音声認識

JuliusのバージョンアップにあわせてMacPortsを更新しました。実は前回登録したportでは正しくインストールできなくて、いくつか修正しています。

MacPortsでは最終的なインストールの前に仮のインストール先にファイルをコピーするdestroot処理を行うのですが、Juliusをmake installするときに、destroot先の指定がMacPortsデフォルトの設定では機能しないため、Portfileに次の行を追加しました。

destroot.destdir prefix=${destroot}${prefix}

次に、Snow Leopard 10.6.xではデフォルトのCore Audioがjuliusから利用できないようで、代わりにPortAudioを使う必要があります。しかし、PortAudioの旧バージョンでは64ビット環境で正しく動作しない不具合があるため、まずportaudioのportを最新版のv19_20110326に更新した上で、juliusをインストールするようにしました。

また、これまでインストール対象からもれていた、ライセンスやマニュアルなどのドキュメントも含めるようにしてあります。

ところで、デフォルトのjuliusは6万語程度までしか扱えませんが、configure --enable-words-intを指定してビルドするとその上限が撤廃されます。ところが、このjuliusでdictation kitのngramを読み込もうとするとエラーが出てしまいます。

$ sudo port install julius +words_int
...
$ julius_demo
STAT: include config: /opt/local/lib/julius/fast.jconf
STAT: jconf successfully finalized
STAT: *** loading AM00 _default
Stat: init_phmm: Reading in HMM definition
Stat: read_binhmm: binary format HMM definition
Stat: read_binhmm: this HMM does not need multipath handling
Stat: init_phmm: defined HMMs: 7946
Stat: init_phmm: loading ascii hmmlist
Stat: init_phmm: logical names: 21424 in HMMList
Stat: init_phmm: base phones: 43 used in logical
Stat: init_phmm: finished reading HMM definitions
STAT: making pseudo bi/mono-phone for IW-triphone
Stat: hmm_lookup: 10 pseudo phones are added to logical HMM list
STAT: *** AM00 _default loaded
STAT: *** loading LM00 _default
Stat: init_voca: read 60250 words
Stat: init_ngram: reading in binary n-gram from /opt/local/lib/julius/model/lang_m/web.60k.8-8.bingramv5.gz
Warning: ngram_read_bin: 2-bytes bingram, converting to 4 bytes
Stat: ngram_read_bin: word-id size conversion enabled
Stat: ngram_read_bin_v5: this is backward 3-gram file
stat: ngram_read_bin_v5: reading 1-gram
stat: ngram_read_bin_v5: reading 2-gram
stat: ngram_read_bin_v5: reading 3-gram
Error: ngram_read_bin: failed to read 33686018 bytes
Error: init_ngram: failed to read "/opt/local/lib/julius/model/lang_m/web.60k.8-8.bingramv5.gz"
ERROR: m_fusion: failed to initialize N-gram
ERROR: Error in loading model
$

次の記事を見ると、--enable-words-intの指定をしても普通にdictation kitのデータを扱えそうなものですが、併用しているライブラリの違いのためでしょうか。詳細は追っていないので分かりませんが…。
Julius on Mac OS X 10.6 - 僕の部屋の真ん中らへん

JuliusのMacPortsのインストールと使い方は次のようになります。dictation kitデータがインストールされ、マイクからの音声認識が行われます。

$ sudo port selfupdate
$ sudo port install julius
$ julius_demo