自己責任でご利用ください。
ダウンロード:mmtts093.zip
もともと、参考にした muDaTTS.rb は Linux向けのものだったわけですし、mbrolaはLinuxで使うほうがWindowsよりも使いやすくできていて、意外に簡単にできました。Windowsでもmbrplay.dllが Python からまともに使えれば非同期再生などといったさらに高度な使い方もできるのですが、mbrolaのソフトのメンテナンスが止まっていて、ちょっと残念です。
今回、文字コード関連の修正も加えました。今までこのスクリプトで使う場合、MeCab辞書の文字コードはシフトJIS固定でしたけれど、スクリプトを一箇所修正することでMeCabの文字コードを任意で選べるようにしました。WindowsのMeCabパッケージはインストール時に辞書の文字コードを選ぶようになっています。このとき文字コードとして、シフトJIS、UTF-8、EUC-JP、UTF-16が選べますが、この中のシフトJIS、UTF-8、EUC-JPを選んでも、このmmttsスクリプトでMeCab辞書を使えるようにしました。具体的にはWindowsの場合は31行あたりの mecab_charset への代入文でその文字コードを示す文字列を代入します。Ubuntuの場合は、44行あたりです。
通常の入出力の文字コード、作られるテキストファイルの文字コードも変数 system_charset、text_charset で設定できるようにしてますので、必要に応じて書き換えます。
さて、Ubuntuで使うための準備です。Ubuntuで使う場合も Windowsと同じようにいろいろなパッケージを用意しなくてはいけません。
apt-getやSynaptic などのパッケージ管理ソフトを使って、MBROLA、mecab、mecab-ipadic のパッケージをインストールします。このときインストールされるMeCab辞書はeuc-jp文字コードのものです。UTF-8版辞書が欲しいときはそのパッケージも探してインストールしておきます。また、あとでMeCabのPythonバインディングパッケージをインストールするのですが、そのとき mecab のヘッダファイルが必要になるので、この段階で libmecab-dev もインストールしておきます。
sudo apt-get install MBROLA
sudo apt-get install mecab
sudo apt-get install mecab-ipadic
sudo apt-get install libmecab-dev
次に、MeCabをPythonから使うためのバインディング mecab-python のファイルをMeCabサイトからダウンロードします。
Browse MeCab Files on SourceForge.net
現在の Ubuntuでインストールされるmecabパッケージのバージョンは0.97なので、mecab-python-0.97.tar.gz をダウンロードして、
tar xvfz mecab-python-0.97.tar.gzと打ち込みます。
cd mecab-python-0.97
sudo python setup.py install
これでLinuxのPythonでも MeCabが使えるようになります。
MBROLAサイトに行って、日本語の音素データベースJP2をダウンロードします。展開し、中に入っているJP2ファイルをmmtts.pyと同じフォルダに置きます。
これで mmtts.py も使えるようになります。
パッケージからMeCabおよびMeCab辞書をインストールした場合、辞書の場所は /var/lib/mecab/dic/ になります。mmtts.pyではこのパスを記入しています。
MeCabおよびMeCab辞書はソースから最新版をインストールすることもできますが、その場合は辞書のインストール先を configure で --with-dicdir=/var/lib/mecab/dic/ipadic-utf8 などとしてUbuntuパッケージ版でインストールされる場所と同じ /var/lib/mecab/dic/*** に合わせるか、デフォルトでインストールされた場所を、mmtts.py の該当行に書き込むなりしなくては、mmtts.py スクリプトは正しく動きません。
ipadic辞書ではアクセント情報がありませんので、せっかくなので Unidic もインストールします。
Unidic サイトに行き、ログインします。アカウントがなければ作ります。
そして、ダウンロードページに入り、個別ファイルのところから unidic-mecab1312_eucj.tar.gz か unidic-mecab1312_utf8.tar.gz をダウンロードします。どちらでもいいですが、先に入れた ipadic と同じ文字コードのほうをインストールします。両方入れてもかまいませんが、euc-jp版のフォルダはunidic、utf8版のフォルダはunidic-utf8という名前にします。
ダウンロードしたら、
tar xvfz unidic-mecab1312_eucj.tar.gzもしくは
sudo cp -r unidic-mecab1312_eucj/ /var/lib/mecab/dic/unidic
tar xvfz unidic-mecab1312_utf8.tar.gzで、MeCabの辞書フォルダにコピーします。MeCabの辞書フォルダが上記と違う場合は、適宜書き換えます。バージョンが進んでいる場合も適宜書き換えます。
sudo cp -r unidic-mecab1312_eucj/ /var/lib/mecab/dic/unidic-utf8
Linux用のUnidicパッケージも置いてあるので、それをインストールした場合は、mmtts.py内の辞書のパスの記述を書き換える必要があります。MeCab用Unidicにはソース版も置いてありますが、文字コードをeuc-jpに指定してビルドしようとするとiconv変換エラーが大量に出ました。対処の仕方が分からなかったので、mmtts.pyを書き換えないで済む上記の変換済みの個別ファイルの方が無難だと思います。
必要なファイルのインストールが完了したら、コンソールから、
python mmtts.py -t utf8 -f mmtts.txtなんて打ち込んで、動作を確認します。
今回は 日ごろ僕が使っているUbuntuだけに対応しましたが、MeCab辞書のインストール先とそのシステムの入出力用の文字コードを設定すれば、他のOSでも使えるのではないかと思います。
まだいろいろ問題あると思いますし、機能不足ですが、これでlinuxで日本語をしゃべらせる選択肢が増えたと思います。