Windowsでjulius-simpleを実行してみる

julius-4.1.2/julius-simpleをmakeするだけなのにはまったので、メモ。

環境整備

素直に公式の情報に従えばよい。

cf. http://julius.sourceforge.jp/index.php?q=doc/install-mingw.html

コンパイル

$ make

するだけなのだが、通らないので(記事書いた現在)、cvsから最新版を取ってくると通った。

cf. http://julius.sourceforge.jp/forum/viewtopic.php?f=14&t=155

実行する

言語モデルが存在しないので、Juliusディクテーション実行キットより、fast.jconfファイルとmodelディレクトリをjulius-simpleのディレクトリに入れる。
modelディレクトリの位置を変える場合はfast.jconf中にあるmodelの相対位置を書き換える必要がある。

$ julius-simple.exe -C fast.jconf

これで実行される。

cf. http://d.hatena.ne.jp/ksotomi/20080905/p1 (Julius自体をMacで試している例)

文字化け対策

juliusと異なり、-charconvオプションが実装されていないので自分で組み込む。もし、julius使う場合のcharconvの引数の値はjulius-4.1.2/julius/charconv_win32.cの80行目ぐらいにずらずら書いてある。ソース見ればわかるように小文字じゃないと通らないので注意。

リンク先にあるように、

#include "libjcode/jlib.h"

char outstr[1024];

char *StrToSJIS(char *instr)
{
  toStringSJIS(instr, outstr, sizeof(outstr));
  return(outstr);
}

をjulius-simple.cに書けば、

#if 0
for(i=0;i<seqnum;i++) printf(" %s", winfo->woutput[seq[i]]); /* 変更前 */
#else
for(i=0;i<seqnum;i++) printf(" %s", StrToSJIS(winfo->woutput[seq[i]])); /* 変更後 */
#endif

とStrToSJIS関数が使えるようになる。変換する必要があるのはこのwinfo->woutput[seq[i]]とwinfo->wname[seq[i]]だけだと思われる。他、必要があれば、どんどん変更すればよい。

この際、Makefile

$(CC) $(CFLAGS) $(CPPFLAGS) -o julius-simple julius-simple.c $(LDFLAGS)
 ↓
$(CC) $(CFLAGS) $(CPPFLAGS) -o julius-simple julius-simple.c libjcode/libjcode.o libjcode/detect.o $(LDFLAGS)

とリンクしてやら無いといけないので注意する。もっと綺麗に書けそうな気がするが仕方ない。

cf. http://julius.sourceforge.jp/forum/viewtopic.php?f=14&t=24

まとめ

どうみても、Cに不慣れです。そして、はてなシンタックスが#if 0をコメントとみなしているのに感動した。