今日の一言
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=\""\" kana=\""\" pron=\""\" 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」にすれば男性声になる。