トップ «前の日記(2010/09/08(Wed)) 最新 次の日記(2010/10/13(Wed))»
【ソース+水=麦茶色の何か】

半期 四半期 全カテゴリ

今日の一言


2010/10/04(Mon) 明日もバイトー [長年日記] 23:30現在 22℃

_ [Linux][Ubuntu][FC][Debian][Windows][研究関係][雑記]オープンソースの音声合成ソフトウェア「GalateaTalk」を使ってみる

Linux上で動かせるので非常に便利。(Windowsでも移植されたのがあるっぽい?)

所感としては、かなりいいと思います。

参考にさせていただいたページ:

http://lfll.blog73.fc2.com/blog-entry-140.html
http://ja.nishimotz.com/chasen
http://www.nilab.info/zurazure2/000800.html#20071115
http://hirokawa.netflowers.jp/entry/24386/
http://d.hatena.ne.jp/tokuhirom/20070328/1175075848
http://www.info.kindai.ac.jp/MediaPrjII/index.php?Gtalk

事前準備

以下のものをapt-get等でインストールしておく。

# apt-get install chasen
# apt-get install libxslt1-dev
# apt-get install libxml2-dev

ソースのDL

まず、GalateaTalk用のフォルダを作る。

$ mkdir galateatalk

で、ここ(http://sourceforge.jp/projects/galateatalk/)から以下のファイルをDLし、先ほどのフォルダに入れ解凍。

 chaone-1.3.0b2.1.zip
 gtalk-090225.tar.gz
 speakers-060820.tar.gz

さらに、辞書ファイルとして以下のどちらかを準備する。

UniDic(登録が必須)

こちら(http://www.tokuteicorpus.jp/dist/)から

 unidic-1.3.0_eucj.tar.gz

をDLし、解凍。

Naist-jdic(BSDライセンスのため使いやすい)

*naist-jdicはapt-getでも入るはずだが、どうもうまく動かなかったので、新たに準備した。

こちら(http://sourceforge.jp/projects/naist-jdic/)から

 naist-jdic-0.4.3.tar.gz

をDLし、解凍。さらに、解凍した先のフォルダに入り、

$ ./configure
$ make

を行う。

コンパイル

chaone-1.3.0b2に入り、

$ ./configure
$ make

同様に、gtalk-090225に入り、

$ ./configure
$ make

speakers-060820については解凍するだけでOK。

設定ファイルの調整

自分の環境に合わせて設定ファイルの修正が必要。

具体的には、gtalk-090225の、「ssm.conf」と「chasenrc」に手を加える。

自分の場合は以下のように書き換えた。

「ssm.conf」
# configuratiuon file for gtalk (GalateaTalk)

# path name of 'chasen'
#CHASEN: ../morph/chasen-2.3.3/chasen/chasen
CHASEN: /usr/bin/chasen

# configuration file for 'chasen'
CHASEN-RC: ./chasenrc

# command of running 'chaone'
CHAONE: ../chaone-1.3.0b2/chaone

# path name of 'chaone.xsl' (only for library-based version)
#CHAONE-XSL-FILE: ../chaone-1.2.0/chaone_t_EUC-JP.xsl

# default for numbers and alphabets
NUMBER: DECIMAL
ALPHABET: WORD
DATE: YMD
TIME: hms

# dictionary
DICTIONARY: ./gtalk-eucjp.dic

# automatic play of synthesized speech
AUTO-PLAY: NO

# time delay [msec] for autuomatic play
AUTO-PLAY-DELAY: 250

# file of phoneme list
PHONEME-LIST: mono.lst

# parameter files for each speaker
SPEAKER-ID: male01
GENDER: male
DUR-TREE-FILE:   ../speakers-060820/male01/tree-dur.inf
PIT-TREE-FILE:   ../speakers-060820/male01/tree-lf0.inf
MCEP-TREE-FILE:  ../speakers-060820/male01/tree-mcep.inf
DUR-MODEL-FILE:  ../speakers-060820/male01/duration.pdf
PIT-MODEL-FILE:  ../speakers-060820/male01/lf0.pdf
MCEP-MODEL-FILE: ../speakers-060820/male01/mcep.pdf

# parameter files for each speaker
SPEAKER-ID: female01
GENDER: female
DUR-TREE-FILE:   ../speakers-060820/female01/tree-dur.inf
PIT-TREE-FILE:   ../speakers-060820/female01/tree-lf0.inf
MCEP-TREE-FILE:  ../speakers-060820/female01/tree-mcep.inf
DUR-MODEL-FILE:  ../speakers-060820/female01/duration.pdf
PIT-MODEL-FILE:  ../speakers-060820/female01/lf0.pdf
MCEP-MODEL-FILE: ../speakers-060820/female01/mcep.pdf

*なお、文字コードはEUC-JPにしておくのが吉

「chasenrc」

;;
;;  chasenrc for unidic-1.3.0
;;  chaOne用
;;
;;unidic
(GRAMMAR ../unidic)
;;naist-jdic
;(GRAMMAR ../naist-jdic-0.4.3)
(DADIC chadic)

;;unidic
(UNKNOWN_POS (名詞 普通名詞 一般))
;;naist-jdic
;(UNKNOWN_POS (名詞 一般))

(OUTPUT_FORMAT "<W1 orth=\"%m\" kana=\"%?U/%m/%y0/\" pron=\"%?U/%m/%a0/\" pos=\"%U(%P-)\"%?T/ cType=\"%T \"//%?F/ cForm=\"%F \"//%?I/ %i0//>%m</W1>\n")

(OUTPUT_COMPOUND "SEG")

(BOS_STRING "<S>\n")
(EOS_STRING "</S>\n")

(DEF_CONN_COST 10000)
(POS_COST
	((*)       1)
	((UNKNOWN) 30000)
)

(CONN_WEIGHT 1)
(MORPH_WEIGHT 1)
(COST_WIDTH	  0)

(ANNOTATION
	(("<" ">") "%m\n")
	(("\"") "<cha:W1 orth=\"&#x22;\" kana=\"&#x22;\" pron=\"&#x22;\" pos=\"%U(%P-)\"%?T/ cType=\"%T \"//%?F/ cForm=\"%F \"//%?I/ %i//>%m</cha:W1>\n")
)

*なお、文字コードはEUC-JPにしておくのが吉

*「naist-jdic」を使う場合は、unidicの下の一行をコメントにし、naist-jdicの下の一行をコメントアウトとすればOK。

テスト

gtalk-090225の中に、「RUN」というスクリプトが入っているので、それで試してみる。

$ chmod 777 RUN
$ ./RUN

これで「この音声合成器は、タグを指定することにより、話すスピードを変えたり、声の高さを変えたり、声の大きさを変えたりすることができます。」という文章が流れればOK!

追加で実験

ファイルからテキストを読み込んでみる。

まあ、RUNで書き出される内容をそのままテキストに貼り付ければいいんだが。

ついでなので、ファイルへの書き出しと、女性声への変更を行ってみる。

まあ、READMEを見れば一目瞭然なうえ、よっぽど詳しく書いているので蛇足以外の何者でもない気がするがな!

「test.txt」(一つ上のディレクトリに置くこととした)

prop Text.text = NoAutoOutput
prop Text.pho = NoAutoOutput
prop Text.dur = NoAutoOutput
set Speaker = female01
set Log = CONSOLE
set Log.conf = YES
set Log.text = YES
set Log.arrangedText = YES
set Log.chasen = YES
set Log.tag = YES
set Log.phoneme = YES
set Log.mora = YES
set Log.morph = YES
set Log.aphrase = YES
set Log.breath = YES
set Log.sentence = YES
set Text = この音声合成器は、タグを指定することにより、話すスピードを変えたり、声の高さを変えたり、声の大きさを変えたりすることができます。
set Save  = ../test.raw
set Speak = NOW
set Run = EXIT

で、端末から

$ ./gtalk -C ./ssm.conf < ../test.txt

として実行する。

これで、Rawファイルに女性声の音声が出力されたはず。

で、これを「sox」を使ってwavに変換する。

$ sox -r 16000 -w -s -x test.raw  test.wav

あとは適当なプレイヤーで聞いてみて問題が無ければOK!

これ以上のことはREADMEを読むべし!

*READMEではwavファイルも吐き出せるようなことも書いているが、自分はうまくできなかったので、とりあえずこの方法(raw→wav)を紹介しておく。

*見たら分かると思うが、「set Speaker = female01」を 「set Speaker = male01」にすれば男性声になる。