« ruby-mswince再始動? | Main | Zaurusで日本語音声合成 zmuDaTTS.rb v 0.2 »

2007.02.19

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

だれでもmuDaTTSとMBROLAによるZaurus上での日本語音声合成ができるよう、再現性を高めた記事を書いてみました。

はけさんの記事も参考になると思います。

MBROLAと音素ファイルjp2のパッケージを作りました。金銭の授受を伴わない再配布は自由とのことなので。

muDaTTS.rbはなりゆきで改変したので、本版はzmuDaTTS.rbと名乗ることにしました。

ライセンスはオリジナルに倣うことにします(記載がありませんが)。

必要なもの

zmuDaTTS
「zmudatts_0.2_arm.ipk.bin」をダウンロード(v 0.2に差し替えました)
Ruby
Ruby 1.8.5-p12 (FocVさんのPrivate Packagesより)
KAKASI
KAKASI 2.3.4-3 (FocVさんのPrivate Packagesより)
Ruby/kakasi拡張モジュール
ruby-kakasi 20020928 (FocVさんのPrivate Packagesより)
ChaSen
ChaSen 2.3.3 (FocVさんのPrivate Packagesより)
ipadic
IPADIC 2.7.0 (FocVさんのPrivate Packagesより)
MBROLA
以下のどちらかだけでOKです。通常はダイナミックリンク版で動くと思いますが、ダイナミックリンク版でダメならスタティックリンク版を試してみてください。いずれも「/opt/QtPalmtop/bin/mbrola」で入りますので、注意してください。
ダイナミックリンク版「mbrola_3.01h_arm.ipk.bin」をダウンロード
スタティックリンク版「mbrola-static_3.01h_arm.ipk.bin」をダウンロード
音素ファイルjp2
「mbrola-voice-jp2_0.1_arm.ipk.bin」をダウンロード
「/opt/QtPalmtop/lib/voices/jp2」で入ります。
SoX
sox 12.18.1 (FocVさんのPrivate Packagesより)

インストール

「必要なもの」に挙げたものを全部インストールします。

全部パッケージなので難しいことはないはず。

ただ、ipadicはサイズが大きくて、システムの状態によってはインストールが失敗することがあると思います。
僕自身も最初は失敗して、システムをまっさらにした状態では成功という経験をしました。
どうしてもダメな場合は、tarで解凍して手で入れる感じでしょうか(他にいいパッケージの展開方法があるような気がしますが)。

試してみる

テキストファイルを用意します。一言程度の短い文章推奨。

エンコーディングはEUC-JPにします。(後で何でもOKなように直します)直しました。「zmudatts_0.1_arm.ipk.bin」を同名の修正したファイルに差し替えました。

例えば/home/zaurus/test.txtに保存したとします。

ターミナルを起動。以下のコマンドを打ちます。

speak test.txt

しばらくするとしゃべり始めるはず。

ぶっちゃけメモリ的に厳しいので、swapをONにするか、起動中のアプリケーションを落としてから試してください。

しゃべらない単語がある場合は、zmudattsをインストールすると入る/home/zaurus/Documents/Text_Files/zmudatts_wordlist.txtに単語登録してください。

形式は見ての通りですが、

単語<TAB>よみ

です。単語は正規表現として解釈しますので、よく分からない人で半角記号を使う場合は、それぞれバックスラッシュ(円マーク)を直前に付けてください。

基本的に記号は読まないので、読ませたい場合は全部登録してください。

インストール時にzmudatts_wordlist.txtが存在している場合はzmudatts_wordlist_old.txtとしてバックアップしますので、しかるべき処置をしてください。

あとがき

muDaTTS.rbには、ChaSenが読めない未知語を、かな/カナであっても読まない問題があったので対処しました(未知語は、かな/カナであると見做す強引な方法なので、問題出るかも)。

また、記号類も一切読んでくれないので、単語登録できるようにしました。
前述の通り、/home/zaurus/Documents/Text_Files/zmudatts_wordlist.txtから読みます。

LinuxDevices経由での音出しを断念して、muDaTTSからはマクロの出力にとどめ、soxを使った再生に切り替えました。

一連の処理をするシェルスクリプトspeakを添付しました。
全部一本のパイプにつなぐこともできましたが、メモリ的に厳しいのと、処理中/dev/dspが開きっぱなしになるのもどうかと思ったので、$HOMEにテンポラリファイルを書くことにしました。

Zaurus向けにmuDaTTS.rbを改変(改悪)したので、zmuDaTTS.rbと名乗ることにしました。

|

« ruby-mswince再始動? | Main | Zaurusで日本語音声合成 zmuDaTTS.rb v 0.2 »