« [N810]NOKIA N810で使うUSB Aオスのジェンダチェンジャを作ってみた | Main | [N810]NOKIA N810内蔵GPSの測位が遅い問題を改善するgpsd関連のパッケージが登場 »

2008.02.05

[N810]NOKIA N810でもMBROLAを使って日本語音声合成

多言語対応音声合成エンジンMBROLAをNOKIA N810で動かしてみました。

基本的に、以前Linux Zaurusでやったのと同じです。

とりあえず試してみる

NOKIA N810で動くMBROLAのバイナリ(ソース配布は無し)は、LINUX / Pocket PC版です。

三つの実行ファイルが入っていますが、ライブラリがスタティックリンクされたmbrola-linux-strongarm2-staticだけが使えました。

実行ファイルのほかに音素ファイルが必要です。

日本語用音素ファイルにはいろいろあるのですが、発声マクロ生成に使うmuDaTTSがjp2のみをサポートしている都合で、jp2 (jp2: Japanese Female (5.6Mb) Tomohisa Tachiki)で試してみます。

試行の手順としては以下の通りです。wgetは標準では入ってませんが、osso-browserでダウンロードするなどで適当に。

$ mkdir mbrola
$ cd mbrola
$ wget http://tcts.fpms.ac.be/synthesis/mbrola/bin/pocketlinux/mbr301h.zip
$ wget http://tcts.fpms.ac.be/synthesis/mbrola/dba/jp2/jp2-270202.zip
$ unzip mbr301h.zip
$ unzip jp2-270202.zip
$ ls
mbrola-linux-strongarm
mbrola-linux-strongarm2
mbrola-linux-strongarm2-static
jp2
$ chmod +x mbrola-linux-strongarm*
$ ./mbrola-linux-strongarm2-static jp2/jp2 jp2/test/kon1.pho kon1.wav
$ play-sound kon1.wav

NOKIA N810上で動作させたMBROLAで生成したWAVファイル

jp2に同梱のkon1.phoで生成したWAVを置いておきます。

「kon1.wav」をダウンロード

インプレと展望

テキストから発声マクロを生成するツールに、muDATTSというRubyスクリプトが存在します。

これをLinux Zaurusで動作させた実績があるので、既にRubyがPortされているNOKIA N810でもそれが流用できると思います。ChaSenとKAKASIをPortしないといけませんが……。KAKASIとRuby/KAKASIはすんなりビルドできました。

メモリが64MBしか搭載されておらず、スワップを作ってもQtが強制的にアプリを落としてしまうZaurusでは、MBROLA+muDATTSは結局実用的に使えませんでしたが、NOKIA N810では実用可能な雰囲気です。

ただし、muDATTSで生成できる発声マクロは、抑揚の無いものです。kon1.phoのような抑揚は付きません。

先ほどのkon1.wavが高品質で感動するかと思いますが、テキストからこのレベルの発声マクロを出力するツールは存在しないようなので、kon1.phoは、VOCALOIDよろしく職人芸によって作られたデータなのでしょう。

以下に挙げた当ブログの関連エントリにサンプルを上げていますので、参考にしてみてください。

Zaurusで日本語音声合成 MBROLA+muDaTTS

(実践編)Zaurusで日本語音声合成 MBROLA+muDaTTS

Zaurusで日本語音声合成 zmuDaTTS.rb v 0.2

[Zaurus]Zaurusで日本語音声合成 zmuDaTTS.rb v0.3

僕がZaurus用に改造(改悪)した版のzmuDaTTSはNOKIA N810でも基本的に使えると思いますが、読み上げ用の辞書ファイルをZaurus依存のパスにしていたりSoXを使っていたりで修正は必要です。

|

« [N810]NOKIA N810で使うUSB Aオスのジェンダチェンジャを作ってみた | Main | [N810]NOKIA N810内蔵GPSの測位が遅い問題を改善するgpsd関連のパッケージが登場 »