Unidic というのは、ChaSen や MeCab で使える 形態素解析辞書です。無料でダウンロードして使えるのですが、再配布は不可です。
http://www.tokuteicorpus.jp/dist/
Unidicは、国立国語研究所で規定した「短単位」という揺れがない斉一な単位で設計されているという特徴を持ちますが、今回興味を持ったのはアクセントや音変化の情報が付加されていることです。この情報はGalateaTalkでも利用されているようです。そういうことを知ると、前回作った棒読みスクリプトでもこれが利用できないかと思い、勢いでやってみました。
ダウンロード:
mmtts092.zip
これ単体では動きませんので、前回の記事に書いてあるように、必要なファイルをダウンロードして、手順通りインストールしてください。
内部的には大幅に書き換えていますが、使用する分にはほとんど変わりなく使えると思います。コマンドラインスイッチを増やしたので、--helpで確認してみてください。以前は'-'のみで標準入力指定をしていましたが、それができなくなったので、'-i'スイッチで指定するように変えました。変更点はそのくらいです。
さて、この新しいスクリプトで Unidic を使う方法ですが、やはりMeCab用のUnidicを持ってこないといけません。
まず、次のページに行きます。
形態素解析辞書 UniDic
そして、ダウンロードページに進みます。アカウントを未登録の場合は、「ダウンロード 未登録の方」リンクを選んで、アカウントを作ってから先に進みます。
ダウンロードページのルートから、「1.3.12個別ファイル」、「unidic-mecab」の順にリンクを選んでいくと、文字コード別のファイルが置いてあるので、今回必要なsjis用の「unidic-mecab1312_sjis.zip」をクリックしてダウンロードします。
※ 1.3.12は現時点での最新版のバージョンです。
ダウンロードしたファイルを展開し、展開してできたフォルダの名前を unidicと名前を変えて、mecab の dicフォルダにコピーします。標準的なインストールの場合、MeCabの辞書フォルダは"C:\Program Files\MeCab\dic"になります。ここには既に標準辞書の ipadic のフォルダがあるはずです。
なお、UnidicのダウンロードページにはWindows用パッケージ(フルセット)版も配布されていて、こちらだとChaSen用、MeCab用と必要なファイル全てを簡単にインストールできるのですが、残念なことに文字コードがUTF-8にエンコードされています。今回使用するシフトJISではないので、これでは使えません。また現時点ではこのパッケージはWindows7に対応していません。
mmtts.py の標準設定では unidic があればそれを優先して、そのアクセント情報を使うようにしています。時々は使いたいけれど、unidic を標準で使いたくないときは、42行目付近を default_dic = 0 に書き換えてください。
以上の設定をすると、mmtts.py で抑揚のある日本語を発音してくれます。ただし現在、単語のアクセントとそれに続く助詞のアクセント、そして「?」の直前の語尾上げしか設定していませんので、不完全なアクセントの日本語になってしまっています。Unidicには複合語になったときのアクセントなどの情報もあるようですが、今回は面倒だったのでは使いませんでした。このスクリプトの日本語はまだまだ改善していけると思います。
音素データのパラメータを今回新たに見直したので、棒読みをさせた場合においても以前のバージョンと印象の違う発声になっていると思います。