2010年04月04日

Orcaに日本語をしゃべらせたい

Ubuntuで日本語が話せるPythonのパッケージを作ったのですが、Linuxでの音声合成のことについては実のところあまりよく知りません。そういうわけで、今いろいろ調べています。

今回はOrcaについて調べたことです。

OrcaはLinuxにおける視覚障碍者のためのスクリーンリーダーを含む支援技術です。Orcaを設定し起動させておくと、選択しているメニューやキー入力など、コンピュータに対する操作をいろいろと読み上げてくれるようになります。しかし、残念なことに現在Orcaは日本語には対応していません。

(追記)
日本語をしゃべらせることに成功しました。詳しくは、下記のエントリー。
GNOME Orca で MBROLA と mecab を使って日本語をしゃべらせる方法
(追記終わり)

本当に残念です。残念なので、どうして日本語がしゃべれないのか調べてみました。試してみたディストリビューションはUbuntu9.10(デスクトップ32ビット版)です。

UbuntuではOrcaは既にインストールされていますが、有効にはなっていません。Orcaでデスクトップを読み上げてくれるようにするには有効にしなくてはいけません。システム>設定>支援技術で、「支援技術の設定」ウィンドウを出して、「支援技術を有効にする」をチェックし、その上にある「お気に入りのアプリ」ボタンを押して、「アクセシビリティ」シートの視覚支援でOrcaを選び、起動時に実行をチェックします。「支援技術の設定」ウィンドウに戻り、画面下の段の真ん中の「閉じてログアウト」を押し、いったんログアウトします。再度ログインすると勝手に「orca スクリーンリーダと拡大鏡」というウィンドウが出現します。設定ボタンを押して、細かな設定を行います。

「Orcaの設定」ウィンドウでは、「読み上げ」タブを選び、最初にある読み上げを有効にするを選びます。そして、その下の項目を決めていきます。

初期状態では、「Speechシステム」では「Speechディスパッチャ」のみです。また「Speechのシンセサイザ」では実質espeakのみです。espeakは多言語対応の音声合成なので、音声の人物で様々な言語を選べます。残念ながら現在日本語には対応していません。この音声聞き覚えがあるかもしれませんが、これはWindowsのスクリーンリーダNVDAのディフォルトの音声としても使われています。

UbuntuのOrcaで使える音声合成はespeakだけではありません。Festivalという音声合成も使えます。ただ初期状態では使えないので、少なくとも2つのパッケージのインストール作業をします。Festivalのインストール時に音声データなど最低限必要なパッケージもインストールされます。

インストールには端末から次の2つのコマンドを実行します。
sudo apt-get install festival
sudo apt-get install libgnome-speech7
このとき音声データの一つもインストールされますが、他にも欲しいときは festvox-kdlpc16k という音声もインストールします。

こうやって、追加パッケージをインストールすると、Orcaの読み上げ音声としてFestivalも使えるようになります。

読み上げタブを選んで、次のように設定します。

Speechシステム:GNOME Speech サービス
Speechのシンセサイザ:Festival GNOME Speech Driver
音声の人物:kal_diphone(english)

GNOME Speech サービスでは、espeakの音声も選ぶことができます。
そのときは次のような設定にします。

Speechシステム:GNOME Speech サービス
Speechのシンセサイザ:eSpeak GNOME Speech Driver
音声の人物:default(en)


しかし日本語文字列の読み方を知りませんから、ほとんどの項目を読んでくれません。espeakの英語を選ぶと日本語の文字は文字コードとして読み上げているように聞こえます。またFestivalでは読めない文字は何もしません。そのため「システム」メニューの「GNOMEについて」などのような英語から始まる項目をポイントしたりすると、読み上げがうまくいっていることが分かります。

さて、日本語文字列は読み上げてくれないので、これではうまく働いているのかがよくわかりません。そのためにデスクトップ環境を英語にしてみます。メニューなどの文字列を英語にしてみるわけです。

ログアウトし、言語を英語にして再度ログインします。ログイン画面の左下で英語に切り替えた後、ログインします。最初は英語の項目はその他の中に入っているはずです。なお、言語を変えてログインすると、ホームディレクトリのフォルダの名前を変えるかどうかきいてきます。ターミナルをよく使うときは、日本語で利用するときもフォルダ名は英語にしていたほうが何かと便利なのですが、とりあえず今回は名前を変えないよう「Keep Old Names」を選択します。

ALT+F1がWindowsでのウィンドウズキーでスタートメニューを開く操作に相当します。矢印キーで移動させメニューの項目を読ませたり、テキストエディタを起動させ、文字を書いたり、FirefoxやOpenOfficeを起動させたりして、いろいろ試してみます。

音声はしっかり出ています。個人的にはFestivalの音声が聞き取りやすいです。これを使いこなすには、合成音声に慣れて、その英語の意味が分かる必要があるので、誰にでもということはできません。もちろんショートカットキーも覚えなくてはいけません。いろいろハードルは高いかもしれませんが、Orcaは十分使えるのではないかと思います。

英語で使えるというのは分かりました。では、日本語はやっぱりできないのだろうかと、デスクトップの言語を日本語に戻し、調べてみました。


いろいろ試してみた結果、一つ面白いことが確認できました。実用的ではありませんが、可能性がちょっとだけ見えてきました。それは文字列の置き換えを使う方法です。「Orcaの設定」画面には右から二番目のタブを開くと、置換する文字列のリストがあります。ここに日本語とその読みを登録します。

デスクトップにある項目や、仮名文字の読みをローマ字や日本語の発音になるような英語のつづりで書いていきます。そうすると、ちゃんと読み上げてくれます。

これは日本語の文字がしっかり内部で認識されているということの証拠でもあります。活用は処理してくれませんし、漢字の複数の読み方にも対応できません。仮名を一文字ずつというのもやってみましたが、それはちょっと上手くいかないようです。それでもこれはいい兆候です。

このテーブルに一つ一つ登録するのは面倒なので、この文字列の置換を行っているプログラムの箇所を探してみると、それはホームディレクトリにある不可視フォルダ.orcaフォルダにある user-settings.py でした。
orca.pronunciation_dict.pronunciation_dict={}
この行の直後に、次のような行を追加していきます。
orca.pronunciation_dict.setPronunciation(u'点字', 'ten gee')
orca.pronunciation_dict.setPronunciation(u'発音', 'hats on')

メニューなど出現する可能性がある日本語について、英語の音声合成の発音規則を考慮しながらここにいくつもの読みを教える行を加えていきます。これが実用的かどうかは僕自身疑問に思いますが、現在できる一番わかりやすい解決法だと思います。

なお、一度「Orcaの設定」が開かれ設定が新たに保存されると、この行はユニコードの16進数文字列に変換されます。


もう一つ面白い現象がありました。次の設定です。

Speechシステム:GNOME Speech サービス
Speechのシンセサイザ:eSpeak GNOME Speech Driver
音声の人物:Mandarin(zh)

Mandarinというのは台湾語のことです。このように設定すると漢字を中国語読みで読み上げてくれます。とはいってもその発音は中国語で合っているのかわかりませんよね。確認のため、geditで「一二三四五六七八九十」と書いて読ませると、ちゃんと中国語らしく読んでくれます。これが同じeSpeakなのに、GNOME Speech サービスの方でしかできません。この違いが何かのヒントなのかもしれません。

この漢字の読みはどうやって実現しているのかeSpeakのソース(zh_listx)で確認してみると、21561文字の単漢字と9392語の熟語の、大規模な読みと声調の対応リストがありました。日本語と違って、中国語は原則文字の読みは一意に決まりますから、例外のあるものは熟語で対応すれば、このように漢字の読みができるのでしょう。日本語では活用が複雑なのでこの方式では完全な日本語の読みには対応はできませんが、この方式ならば仮名の読みには対応できるでしょうから、上記のorcaのスクリプトで対応する方法よりか、よくなるでしょう。eSpeakでは、MBROLAが使えますからjp2データベースを利用すれば上記の外人さんの日本語よりも聴きやすくなるでしょう。さらにeSpeakのコードを改造してMeCabを組み込むことができれば、もっとよくなるはずです。

eSpeakもMBROLAが使えますが、Orcaで使えるもう一方の音声合成であるFestivalでもMBROLAが使えます。ソースコードの改造はFestivalについても考えても、面白いかもしれません。


まとめると、こうなります。
日本語を解釈する処理が入っていない。日本語を発音する音声合成が組み込まれていない。
その改善策として考えられるのは:
・今すぐできることとして、Orcaの読み辞書を利用すれば、外人さんの片言の日本語っぽい簡易的な日本語読みができる。ただし固定されたメニューの読みなどに限定され、実用的とは言えないだろう。
・eSpeakのMandarinを参考にして、漢字の熟語や仮名文字などの一覧表を作成すれば日本語の読みが可能かもしれない。さらにeSpeakのMBROLA接続を利用してJp2などの音声データベースを使って発音させることができるかもしれない。また、eSpeakの内部の処理を日本語向けに多少修正してMeCabの処理を組み込めば、日本語の活用にも対応できるようになるかもしれない。
・同様に、FestivalのMBROLA対応を利用して、内部で日本語に対応した処理を追加すれば可能かもしれない。なお、上記には書いていないが、Festivalはhts_engine_APIにも対応している。hts_engine_APIはOpen_Jtalkでも使われているので、この部分を取っ掛かりに何かできないだろうか。
・OrcaシステムはPythonで書かれている。ということは、先日書いたmbttsとは親和性が高そうだ。直接OrcaのSpeechシステムとして組み込む方法も何かあるかもしれない。組み込むための要件が足りなければ改造すればいいだけの話。

ただ、どちらにしても、今回触れなかった漢字入力の音声読み上げも大きな課題として残るでしょう。
でも、まず日本語による音声読み上げができなければ、何も変わりません。これを実現して大きく環境を変えましょう。

参考リンク:
Orca - GNOME Live!
Orca on Ubuntu Karmic Koala (Ubuntu 9.10)
eSpeak: Speech Synthesizer
The Festival Speech Synthesis System
hts_engine API
Open JTalk

Ubuntu上で簡単Orca体験
eSpeakと日本語


posted by takayan at 01:06 | Comment(0) | TrackBack(0) | GNOME Orca | このブログの読者になる | 更新情報をチェックする

ちりとてちん、いよいよ再放送開始

もうすぐ、あと一時間半で「ちりとてちん」の再放送が始まります。

BS-hi
4月4日(日)から
毎週日曜・深夜1:10〜2:40(日付上は月曜)
毎週6本ずつ(1週分ずつ)まとめての放送予定
※13週・14週は、まとめて7本放送予定

なんで、こんな時間なんだ!みんなの月曜の仕事に差し支えるだろう!
と思いつつも、再放送を決めてくれたNHKには感謝しています。とても楽しみです。
第一週の今回は、特に大切な子供時代のエピソードですからお見逃し無く。一気に一週間分ですからね。
「ちゅらさん」の子供時代と同じくらい「ちりとてちん」の最初の週は素晴らしい出来だと思います。全ての思い出が詰まっています。
今回の放送では、お母ちゃんの存在をより注目しながら見ようと思います。
DVDはしっかり持ってるんですけどね。
それにしても、朝はSTARWARSとPRIMEVAL、夕方からは龍馬伝をBS-hiと総合で二度見して、夜中はちりとてちん、日曜日はNHK漬けですよ、まったく。

番組公式ページ:
連続テレビ小説「ちりとてちん」


posted by takayan at 23:41 | Comment(4) | TrackBack(0) | ちりとてちん | このブログの読者になる | 更新情報をチェックする

2010年04月29日

「フラッシュフォワード」第1話 無料配信中

2010年04年29日の今日!
「フラッシュフォワード」第1話「ブラックアウト」のオンライン配信が始まりました。
2010年05月08日までの期間限定です。
ちゃんと日本語字幕付きです。
将来テレビ画面で起きる42分54秒の未来を僕たちは受け取るわけです。

http://axn.co.jp/program/flashforward/oo-distribution/

とてもいい感じで、期待していた以上です。
全人類が同時に2分17秒間ブラックアウトしてしまう。
この設定だけでわくわくしてしまいます。
ソウヤーの原作とかなり設定が変わってしまっていますが、ドラマだとこの設定の方が断然いいと思う。
こういう作品は決着のつけ方で作品の出来が決まってしまうのでしょうが、出だしはなかなか、本放送が始まるのが楽しみです。

そういうわけで、何度かここで紹介した去年放送開始されたアメリカのドラマ「フラッシュフォワード」の第1話がいよいよ5月22日に放送されます。
残念ながらチャンネルはAXNです。地上波ではないので、スカパーやケーブルテレビなどの契約をしていないと見ることができません。


posted by takayan at 22:00 | Comment(0) | TrackBack(0) | 映画・ドラマ | このブログの読者になる | 更新情報をチェックする
×

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