メモメモ。
Open JTalk is a Japanese text-to-speech system.
環境はさくらのVPSの1Gで、OSは標準の「CentOS 6 x86_64」です。
サービス仕様 | VPS(仮想専用サーバ)は「さくらのVPS」
サービス仕様
途中「-m32」にしている理由はここで、
[hts-users:03540] Re: HTS-demo_CMU-ARCTIC-SLT, HTS_calloc: Cannot alloca
If you use 64bit machine, could you compile hts_engine API with following options?
ソースを一部書き換えている理由はここです。最新のソースでも発生していました。
nishimotzの日記 · Open JTalk の音素継続長の不具合を回避する
このエンジンで、読み上げるメッセージが長いときに、メッセージの後半で「極端に遅い音声」あるいは「不自然な音声」が生成されるという問題がありました。これは最新の HTS engine API 1.04 および Open JTalk 1.02 と m001 1.02 でも発生します。 もしかしたら MMDAgent や、その他のシステムの一部としてこの音声エンジンをお使いの方も、同じような現象にお気づきかも知れません。
# yum update
# yum -y install glibc-devel.i686 libstdc++-devel.i686
# cd /usr/local/src
# curl -L -O http://downloads.sourceforge.net/hts-engine/hts_engine_API-1.07.tar.gz
# curl -L -O http://downloads.sourceforge.net/open-jtalk/open_jtalk-1.06.tar.gz
# curl -L -O http://downloads.sourceforge.net/open-jtalk/hts_voice_nitech_jp_atr503_m001-1.05.tar.gz
# cd /usr/local/src
# tar zxf hts_engine_API-1.07.tar.gz && cd hts_engine_API-1.07
# ./configure --prefix=/path/to/hts_engine_API CFLAGS='-m32'
# make && make install
# cd /usr/local/src
# tar zxf open_jtalk-1.06.tar.gz && cd open_jtalk-1.06
# vim bin/open_jtalk.c
----------
77 #define MAXBUFLEN 102400 /* Increase accept file size */
----------
# vim jpcommon/jpcommon_label.c
----------
277 static int index_accent_phrase_in_breath_group(JPCommonLabelAccentPhrase * a)
278 {
279 int i;
280 JPCommonLabelAccentPhrase *index;
281
282 for (i = 0, index = a->up->head; index != NULL; index = index->next) {
283 i++;
284 if (index == a)
285 break;
286 }
287 if (i > 3) i = 3; /* nishimoto */
288 return i;
289 }
----------
380 static int count_mora_in_utterance(JPCommonLabelMora * m)
381 {
382 int i;
383 JPCommonLabelMora *index;
384
385 for (i = 0, index = m->next; index != NULL; index = index->next)
386 i++;
387 if (i > 10) i = 10; /* nishimoto */
388 return index_mora_in_utterance(m) + i;
389 }
----------
# ./configure --prefix=/path/to/open_jtalk \
--with-hts-engine-header-path=/path/to/hts_engine_API/include \
--with-hts-engine-library-path=/path/to/hts_engine_API/lib \
--with-charset=UTF-8 CPPFLAGS='-m32' LDFLAGS='-m32'
# make && make install
# cd /usr/local/src
# tar zxf hts_voice_nitech_jp_atr503_m001-1.05.tar.gz -C /path/to/
# cat <<'EOF' > /path/to/txt2wav.sh
#!/bin/sh
OJ_HOME=/path/to
$OJ_HOME/open_jtalk/bin/open_jtalk \
-x $OJ_HOME/open_jtalk/dic \
-m $OJ_HOME/hts_voice_nitech_jp_atr503_m001-1.05/nitech_jp_atr503_m001.htsvoice \
-ow $2 \
$1
EOF
# chmod 755 /path/to/txt2wav.sh
# cd $HOME
# cat <<'EOF' > hello.txt
こんにちは
EOF
# /path/to/txt2wav.sh hello.txt hello.wav
出来るのはwavなので、mp3にしたいですね。
# cd /usr/local/src
# curl -L -O http://jaist.dl.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
# tar zxf lame-3.99.5.tar.gz && cd lame-3.99.5 && ./configure && make && make install
# cd $HOME
# lame hello.wav hello.mp3