文書の過去の版を表示しています。
libopenjtalk
open-jtalk (配付サイト)の派生版を作る試み。
http://github.com/nishimotz/libopenjtalk
http://github.com/nishimotz/htsengineapi
中の人によると「open-jtalkはHTS Engine APIのサンプルアプリケーションという位置づけ」らしい。 確かに HTS Engine API は(勝手にリポジトリを作ってみたものの)いじらなくてもよさそうだ。
Windows版をつくる
執筆:2010-08-21
cygwin にて。github には ssh key 登録済みとする。
gcc-3 による mingw クロスコンパイルをやってみる。
$ git clone git@github.com:nishimotz/htsengineapi.git $ git clone git@github.com:nishimotz/libopenjtalk.git
まず HTS Engine API から。
$ cd htsengineapi/ $ ./configure --help $ export CC=gcc-3 $ export CFLAGS=-mno-cygwin $ export LDFLAGS=-mno-cygwin $ ./configure $ make
./bin と ./lib にファイルができる。
$ cd ..
つぎに libopenjtalk を。とはいうもののまだ未完成。以下はコンパイル方法の覚え書き。
さきほどの export が有効なままである。
$ cd libopenjtalk $ ./configure --with-hts-engine-header-path=../htsengineapi/include/ \ --with-hts-engine-library-path=../htsengineapi/lib/ \ --with-charset=UTF-8 --build=i686-pc-mingw32
失敗。sys/mman.h と sys/times.hでwarningが出る。そしてwinmmがないというエラー。 その他で気になるのは iconv_open がない、というあたりか。
とりあえず winmm だけ削って先に進んでみることにした。
configure.acのしくみは資料を参考にした。
configure.ac の 268-275 行の先頭に # をつけてコメントアウト。
$ autoheader $ aclocal $ automake $ autoconf $ ./configure --with-hts-engine-header-path=../htsengineapi/include/ \ --with-hts-engine-library-path=../htsengineapi/lib/ \ --with-charset=UTF-8 --build=i686-pc-mingw32 $ make
しばらくすすむのだが、mecab が内部で g++ を呼び出しているらしく、失敗。
疲れてきたので、荒っぽい方法を選ぶ。
$ sh /usr/bin/set-gcc-default-3.sh
$ g++ -v Reading specs from /usr/lib/gcc/i686-pc-cygwin/3.4.4/specs Configured with: /managed/gcc-build/final-v3-bootstrap/gcc-3.4.4-999/configure --verbose --program-suffix=-3 --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --enable-languages=c,ada,c++,d,f77,pascal,java,objc --enable-nls --without-included-gettext --enable-version-specific-runtime-libs --without-x --enable-libgcj --disable-java-awt --with-system-zlib --enable-interpreter --disable-libgcj-debug --enable-threads=posix --enable-java-gc=boehm --disable-win32-registry --enable-sjlj-exceptions --enable-hash-synchronization --enable-libstdcxx-debug Thread model: posix gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
$ make clean $ make
mecab/src の中で失敗する。
mecab-dict-index を作れなくてこまっているようなので、また荒っぽいことをやる。
mecab/src/Makefile.am
MAINTAINERCLEANFILES から mecab-dict-index を消す。 下記をコメントアウトする。 #noinst_PROGRAMS = mecab-dict-index #mecab_dict_index_SOURCES = mecab-dict-index.cpp #mecab_dict_index_LDADD = libmecab.a
トップディレクトリで make clean; autoconf する。
さきほどの configure をやりなおす。
こんどは HTS_engine.h がないと怒られてとまる。
そうか、configure は相対パスじゃだめなのか。。。
$ ./configure --with-hts-engine-header-path=/cygdrive/c/work/github/htsengineapi/include \ --with-hts-engine-library-path=/cygdrive/c/work/github/htsengineapi/lib \ --with-charset=UTF-8 --build=i686-pc-mingw32
こんどは waveXXX がないと言われる。どうやらさきほどコンパイルした libHTSEngine.a が使ってしまったらしい。
/cygdrive/c/work/github/htsengineapi/lib/libHTSEngine.a(HTS_audio.o): HTS_audio.c:(.text+0xfe): undefined reference to `_waveOutWrite@12'
やっぱり winmm なしの libHTSEngine を作ることにする。
$ cd ../htsengineapi
configure.ac の 69 行 AC_HAVE_LIBRARY([winmm],,AC_MSG_ERROR(No winmm)) をコメントアウト。 その直後に
AC_DEFINE(AUDIO_PLAY_NONE)
を追加。
$ make clean $ autoconf $ ./configure --build=i686-pc-mingw32 $ make
うまくいったらしい。
$ nm lib/libHTSEngine.a | grep _wave
何も出てこない。
$ cd ../libopenjtalk
また怒られた。__getreent がないなど。
http://www.mail-archive.com/cygwin@cygwin.com/msg36709.html
なるほど。サブディレクトリで -mno-cygwin が外れてしまったらしい。
$ export CXX='g++ -mno-cygwin' $ export CC='gcc -mno-cygwin' $ make distclean $ ./configure --with-hts-engine-header-path=/cygdrive/c/work/github/htsengineapi/include \ --with-hts-engine-library-path=/cygdrive/c/work/github/htsengineapi/lib \ --with-charset=UTF-8 --build=i686-pc-mingw32 $ make
エラー。 mecab-naist-jdic が作れない。さきほど mecab-dict-index を削った影響。 どうせ辞書は別途ダウンロードできるはずなのでこれも削る。
Makefile.am の SUBDIRS = につづく mecab-naist-jdic という行をコメントアウト
$ automake $ autoconf $ ./configure オプションは上と同じ
やっとコンパイルが通った。
NVDAjp への組み込み
執筆 2010-09-03
http://sourceforge.net/projects/mecab/files/ から mecab-0.98.exe を入手してインストール。
辞書は Shift-JIS を選ぶ(実際には使っていないはず)
インストールディレクトリは C:\MeCab にしておく。
