ユーザ用ツール

サイト用ツール


project:libopenjtalk

文書の過去の版を表示しています。


libopenjtalk

open-jtalk配付サイト)の派生版を作る試み。

http://github.com/nishimotz/libopenjtalk

http://github.com/nishimotz/htsengineapi

shlib によるpythonへの対応が目標。

中の人によると「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 にしておく。

project/libopenjtalk.1283440486.txt.gz · 最終更新: (外部編集)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki