2010年03月08日

そして、Ubuntuに対応してみた。

今までは Windows上でしか動かなかったのですが、LinuxのUbuntuでも動くようにしてみました。

自己責任でご利用ください。
ダウンロード: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
sudo cp -r unidic-mecab1312_eucj/ /var/lib/mecab/dic/unidic-utf8
で、MeCabの辞書フォルダにコピーします。MeCabの辞書フォルダが上記と違う場合は、適宜書き換えます。バージョンが進んでいる場合も適宜書き換えます。

Linux用のUnidicパッケージも置いてあるので、それをインストールした場合は、mmtts.py内の辞書のパスの記述を書き換える必要があります。MeCab用Unidicにはソース版も置いてありますが、文字コードをeuc-jpに指定してビルドしようとするとiconv変換エラーが大量に出ました。対処の仕方が分からなかったので、mmtts.pyを書き換えないで済む上記の変換済みの個別ファイルの方が無難だと思います。

必要なファイルのインストールが完了したら、コンソールから、
python mmtts.py -t utf8 -f mmtts.txt
なんて打ち込んで、動作を確認します。


今回は 日ごろ僕が使っているUbuntuだけに対応しましたが、MeCab辞書のインストール先とそのシステムの入出力用の文字コードを設定すれば、他のOSでも使えるのではないかと思います。

まだいろいろ問題あると思いますし、機能不足ですが、これでlinuxで日本語をしゃべらせる選択肢が増えたと思います。


posted by takayan at 03:03 | Comment(0) | TrackBack(0) | 音声合成 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]


この記事へのトラックバック
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。