ホーム > プログラミング一般 > Open JTalkを試してみました。

Open JTalkを試してみました。 このエントリーを含むはてなブックマーク はてなブックマーク - Open JTalkを試してみました。

2013 年 4 月 4 日

メモメモ。

Open JTalk

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

カテゴリー: プログラミング一般 タグ:
コメントは受け付けていません。