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 | このブログの読者になる | 更新情報をチェックする

2010年08月14日

GNOME Orca で日本語をしゃべらせてみる。

ご無沙汰しています。ずっと文章書いていませんでした。文章だけでなく、プログラミングもやる気が全然起きなくて。でも久しぶりにやってみると意外に進展したので報告します。
Orcaに日本語をしゃべらせたい」で書いたことの続きです。

Orca は GNOME デスクトップで動作するスクリーンリーダーです。残念なことに、日本語ではしゃべってくれません。
日本語音声を使えるようにするにはどういう方法があるのか、Orca の設定をいじってみて調べてみたのが、「Orcaに日本語をしゃべらせたい」の記事です。
いろいろな可能性は見えましたが、結局、その時点ではうまくはいきませんでした。

久しぶりに、Orcaについて調べてみました。英文の資料を読んだり、Orcaの Python ソースをじっくり眺めてみたり。
読んでみると、なんとか新しく読み上げシステム(speech system)を登録できそうに思えたのでやってみました。そしたら、意外に簡単に動いてくれました。

やったことはとても単純です。orca のソースにある ***factory.py というファイルが、音声システムを仲介するスクリプトのようなので、これを参考に作りました。実際に英語の発音ができている speechdispatcherfactory.py の音声出力部分を、mbtts による記述で置き換えていきました。とてもあっさりとできました。このブログで何度か体験してきたブレイクスルーは、どれもこんな感じでした。今回もやはりそうでした。

まだ完全ではありませんが、とりあえず動くようになりました。
詳しいことは次回。とりあえず報告まで。

ところで、日本には Orca という同名の Ubuntu で動くレセプトソフトがあるため、検索エンジンでこのスクリーンリーダーの Orca の情報を探すのがちょっと面倒です。そのためスクリーンリーダーのそれを扱うときは、書くときも探すときも GNOME orca という表記を使わないと仕方ないですね。


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

2010年08月17日

GNOME Orca で MBROLA と mecab を使って日本語をしゃべらせる方法

注意:
このプログラムは実験的なものです。自己責任でお使いください。
動作が確認できたのは Ubuntu10.04 です。
それ以後では動作しません。インストールしないでください。
2011.10.18

そういうわけで、Ubuntu上で日本語スクリーンリーダーを動作させる方法です。
以下に必要なファイルと、手順を示します。興味がある人は自己責任で試してみてください。

現在確認しているOS は Ubuntu 10.4 だけです。
orca ですので、GNOME デスクトップが動いているディストリビューションでも、動くかもしれません。問題があるとすれば、今回利用している mbtts がそのディストリビューションで使えるかどうかです。

TTS として、以前僕が作った mbtts というものを使います。これは、日本語のテキストを、mecabにより日本語形態素解析を行い音素文字列に変換し、それをMBROLA の日本語音素を使って音声に変換するものです。ruby で書かれた吉田 智章氏の muDaTTS を参考にして、Pythonで書いたものです。今回、orca への対応のためローマ字の逆変換など機能追加や修正を行いました。

以下インストール手順です。
[2010/08/19 orca-2.31.90へ対応のため修正]
[2010/08/30 mbtts 97.6への対応]

1. 下記のリンクより mbtts 0.97.6 をダウンロードし、展開後 mbtts.txt で示してある手順で、必要なパッケージと、mbtts 本体をインストールします。このとき MBROLA の日本語音素データベースを所定の場所に必ず一つ入れてください。
https://neu101.up.seesaa.net/etc/mbtts-0.97.6.zip

2. orca のソースを 下記の GNOME の ftp からダウンロードします。今回は バージョン2.31.90 を使っていますので、それをダウンロードしてください。
orca-2.31.90.tar.bz2

3. orca で日本語を再生できるようにするためのファイル群をダウンロードします。今回作ったものそのものです。
https://neu101.up.seesaa.net/etc/orca-2.31.90-mbtts-files-0.3.tar.gz
(0.3 ... 初回起動時に選択できない問題を修正 2010/10/13)

4. 2でダウンロードした orca-2.31.90.tar.bz2 ファイルと、3でダウンロードした orca-2.31.90-mbtts-files-0.3.tar.gz ファイルを同じフォルダに入れ、次のコマンドを実行してください。問題がなければ、これで日本語に対応したOrca がインストールされます。今回 intltool を最新版にする必要があるようなので、下記のように configure の前に sudo apt-get install intltool も実行する必要があります。
sudo apt-get install intltool
tar xvfj orca-2.31.90.tar.bz2
tar xvfz orca-2.31.90-mbtts-files-0.3.tar.gz
cd orca-2.31.90
./configure
make
sudo make install

5. Orcaの起動は、「アプリケーション」メニュー>「ユニバーサル・アクセス」>「Orca スクリーン・リーダと拡大鏡」です。初回起動のときは、質問をいろいろされると思います。これはあとから設定画面で変更できます。日本語の音声にならないときは、設定画面を開き、読み上げシステムを mbtts に切り替えて、右下のOKボタンを押せば、日本語をしゃべるようになるはずです。

できないこと
・句読点などの読み上げレベルが変更できません。
・漢字変換を読み上げません。
・そのほかいろいろ

まだ完全な機能ではありませんが、これで Ubuntu で日本語スクリーンリーダーを使えるようになりました。


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

2010年08月24日

AquesTalk2 も GNOME Orca で 使えるようにしてみた

注意:
このプログラムは実験的なものです。自己責任でお使いください。
動作が確認できたのは Ubuntu10.04 です。
それ以後では動作しません。インストールしないでください。
2011.10.18


GNOME Orca に日本語をしゃべらせる方法がわかったので、mbtts を少し改造して、AquesTalk2 にも対応してみました。いわゆる、ゆっくりボイスで、Linux のデスクトップを読み上げてくれるようになります。

興味のある方は、上記のファイルをダウンロードして、次の記事を参考にしてインストールしてみてください。
GNOME Orca で MBROLA と mecab を使って日本語をしゃべらせる方法

今回利用できるようにした AquesTalk2 というのは、アクエスト社の音声合成ライブラリです。非営利の個人利用に限って使用することができます。
製品ページは、AquesTalk2 - テキスト音声合成ミドルウェアです。

今回、AquesTalk2 を同梱していませんので、ライセンスを確認したうえで、上記サイトよりダウンロードして試してみてください。設定フォルダの中のaquestalk2フォルダにDLLを配置すれば、この ライブラリの機能が利用できます。また、追加の声種ファイルは、設定フォルダの phont フォルダの中に入れるだけで、利用可能になります。
設定フォルダの中の aquestalk2 フォルダの中に、声種データのアーカイブを置くだけで、実行時に展開してくれます。
(2010.8.30 修正。aquestalk2関連ファイルの配置場所についての仕様を変更。)


Orca で日本語をしゃべらせるために GNOME Orca にファイルを追加して対応しているのですが、今回はそのファイルのバージョンアップは行わず、mbtts のバージョンアップ(0.97.3)だけで対応してみました。本来は、シンセサイザの分類を追加して作るべきなのでしょうが、今回はディフォルトのシンセサイザ1つのまま、音声の人物を増やすことで対応しました。人物の記法は、シンセサイザ名ドット音声名です。例えば、'MBROLA.jp1'や'AquesTalk2.aq_yukkuri'と表記しています。ただ省略記法として音声名だけでも認識できるようにもしています。

mbtts は、MBROLA のデータベース向けに作ったスクリプトなので、内部はちょっと美しくない方法での対応になっています。とにかく動作させたいという気持ちを最優先で作っているので、細かな部分は今後コツコツ修正していきます。

今現在 Orca に日本語をしゃべらせるためには、どうしたらいいかという実験の途中です。まだまだ機能が足りない部分がいろいろありますが、今回使える声数がいっきに増えて、とても面白くなってきました。AquesTalk 2は前々から知っていたのですが、実際プログラムを組んでみて、これほど使いやすく聴ける合成音声が出ることに驚いています。無償は非営利個人利用限定ですが、このように素晴らしいものが公開されていることに、とても感謝します。

Python からの AquesTalk の利用に関しては、特に次のページを参考にさせてもらいました。
AquesTalk2 Linuxを使ってみる - Linux の音声合成コンソールアプリ SayAqTk2 - | N.Yamazaki's blog
Pythonで音声合成(AquesTalk) - tomoemonの日記
AquesTalk Win版 でゆっくり Python していってね - 銀月の符号



今回バージョンアップした mbtts 本体はこれです。Ubuntu10.4 と Windows7 と Mac OS X v10.6 で動作確認をしています。
https://neu101.up.seesaa.net/etc/mbtts-0.97.3.zip


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

2010年08月28日

GNOME Orca で Open JTalk も 使えるようにしました。

注意:
このプログラムは実験的なものです。自己責任でお使いください。
動作が確認できたのは Ubuntu10.04 です。
それ以後では動作しません。インストールしないでください。
2011.10.18


先日、mbtts を修正して AquesTalk2 を使えるようにしたのですが、せっかくなので Open JTalk も使えるようにしました。これで GNOME Orca で Open JTalkの落ち着いた音声でガイドしてくれるようになります。まだ音量調整など Orcaの設定画面からできないので、ぜんぜん実用的ではないですが、いい感じにしゃべってくれます。今回いろいろやって長文が不得意だということも気が付きましたが、メニューなどの項目を読み上げてくれる分には一番ききやすいように思います。今のところ、Open JTalk の標準の音量が小さく Open JTalk のときだけ、ちょっとパソコンのボリュームを上げないといけませんが。

それから、MBROLAだけのときには気づかなかったのですが、音声の再生速度が今までおかしかったです。pygame.mixer は初期化するときに周波数もちゃんと指定しないといけなかったんですね。でも発音するたびに、初期化をやるようになったので、今まで以上に遅れて発音しているように思います。発音するたびに初期化をしてしまうと、やはりとても遅れてしまいます。声の速さの不正確さは犠牲にしても、遅れを短くしようと思います。初期化は音声を切り替えるときだけにします。(2010.8.30修正)


まだまだ問題はありますが、とりあえず目標としていたフリーの3種類の日本語音声が使えるようになりました。あとはこつこつ細かな修正を加えていく作業が続きます。早いうちに音声出力を PyGame から自前のものに切り替えたいとも思います。

それでは、Open JTalkを使えるようにする方法を以下に書いておきます。ここでは GNOME Orca の対象となる Linux 向けだけでなく、OS Xや、Windows向けの設定方法もまとめて書いておきます。Linux の GNOME Orca で日本語をしゃべらせるには、この Open JTalk と mbtts のインストールの他に、GNOME Orca の修正ビルド、およびインストールが必要です。これは、以前の記事「takayanの雑記帳: GNOME Orca で MBROLA と mecab を使って日本語をしゃべらせる方法」を見てください。

さて、何はともあれ Open JTalk の実行ファイルが必要なので、これを用意します。やはりソースからビルドします。(Windows版はビルド環境作りが面倒なのでビルド済みを用意しています。)
Open JTalkのビルド、実行には hts-engine のライブラリが必要なので前もってこれもビルドします。

それぞれのソースを下記の場所からダウンロードします。

hts-engine:
http://sourceforge.net/projects/hts-engine/
現時点の最新ファイルは、hts_engine_API-1.03.tar.gz です。

open_jtalk:
http://sourceforge.net/projects/open-jtalk/
現時点の最新ファイルは、open_jtalk-1.01.tar.gz です。

mbtts 側の処理の単純化のため Ubuntu でも OSX でも文字セットにしています。Windows 版が UTF-8 でビルドできないので SJIS にしないといけないので、Ubuntu でも OSX でも文字セットは SHIFT_JIS で作っています。なお、nishimotz さんのページ にUbuntu用のパッケージが置かれています。今回の目的以外ならばこれを使うと便利なのですが、このdebパッケージは UTF8 でビルドされているので今回の mbtts で利用することはできません。
Visual C++でコンパイルするときフィルターを通すことで、エラーが出ないように文字コードをエスケープし回避しました。そういうわけで、どのプラットフォームでも UTF-8をOpenJtalkの標準文字セットにしました。これで、nishimotz さんのページ に置いてある Ubuntu 用のパッケージをインストールした場合でもうまく発音してくれるはずです。

ビルド環境さえ整っていれば、Ubuntu、OSXともに次のコマンドでインストールできます。ファイルが更新され名前が変わった場合は適宜書き換えてください。
このときダウンロードしてきた二つのファイルが同じフォルダにおいてあるとします。

tar xvfz hts_engine_API-1.03.tar.gz
cd hts_engine_API-1.03
./configure
make
sudo make install
cd ..
tar xvfz open_jtalk-1.01.tar.gz
cd open_jtalk-1.01
./configure --with-charset=UTF-8
make
sudo make install

(修正2010/10/13)

Windows版は、ビルド環境を作るのも大変でしょうから、文字セットUTF-8で、音声出力を無効化し、VC++2008でビルドした open_jtalker.exe を、mbtts.zip内に同梱しています。

これは以前書いた次の手順でビルドしています。
takayanの雑記帳: Open JTalkをVS2008で

ただし、Windows 版では音声出力をしてしまうので、上記の nishimotz さんの記事を参考に、open_jtalk.c を修正して音声出力を殺しています。
具体的には、現在のソースで144行目に下記のように1行を挿入します。
HTS_Engine_create_pstream(&open_jtalk->engine);
open_jtalk->engine.global.audio_buff_size = 0; // nishimotz
HTS_Engine_create_gstream(&open_jtalk->engine);
なお Windows版では、hts-engine のライブラリは静的に取り込んでいるので open_jtalk.exe 単体で実行できます。

文字セットのことですが、最初、Windows版を UTF-8 でビルドしようとしたのですが、失敗してしまいました。どうやらソースファイルをUTF8で保存することで文字列定数をUTF-8文字列として用意してある部分が引っかかってしまうようです。これを回避するにはパソコンのロケールを英語に切り替えて再起動すればいいのですが、それだとビルドは成功しますが、文字によって異常終了するようになってしまいます。解決策はあるのでしょうが探すのも面倒なので、Windowsでは無理せずSJIS版にしています。そして mbtts の処理を単純化するために、どのプラットフォームでも SJIS版を使うようにしています。ただ SJIS 固定だと他にOpen JTalk利用のソフトが出てきたとき困るかもしれませんので、ここは今後切り替えられるようにしようと思っています。
(2010.08.30 以上の文字セット関連の記述の更新。該当する文字セットでビルドして実行ファイルさえ用意できれば、三つのどの文字セットでも処理できるはずです。)

これで、実行ファイルができました。Ubuntu と OSX では make install でちゃんとPATHの通ったところに配置されているはずです。Windows版も同じように配置する必要があります。PATHの通ったところならばどこでもいいのですが、分かり易いように、ユーザーのホームフォルダの「.mbtts」フォルダの中に「open_jtalk」フォルダを作ってそこに置くと認識するようにしています。

次は辞書と話者データです。Open JTalk には 辞書と話者データが必要です。次の場所からダウンロードしてきます。なおOpen Jtalkの文字セットに合わせて辞書はUTF-8版を使います。
http://sourceforge.net/projects/open-jtalk/files/

それぞれの現時点での最新のアーカイブ名:
辞書、open_jtalk_dic_utf_8-1.00.tar.gz
話者、hts_voice_nitech_jp_atr503_m001-1.01.tar.gz
辞書の名前が更新されたときは、.mbtts 内の config.txt の変数 openjtalk_dic_ver の値を新しいバージョンに修正し対応します。音声ファイルの方は名前が変わった場合でも修正する必要はありません。

辞書も、話者データも、設定フォルダの open_jtalk フォルダの中にアーカイブのままコピーするだけです。あとは実行時に自動的に展開されます。
(2010.8.30 更新。データのコピーについての仕様変更)

これで、Open JTalk を使う準備は整いました。

AquesTalk2 のための準備は、「takayanの雑記帳: GNOME Orca で MBROLA と mecab を使って日本語をしゃべらせる方法」にも書きましたが、設定フォルダ「.mbtts」の中に各プラットフォーム向けの DLL を取り出し配置すればこの ライブラリの機能が利用できます。Aquestalk2の製品ページを開いて、該当するプラットフォームのアーカイブをダウンロードした後、DLLを抽出します。 Windows は AquesTalk2.dll、Linuxは libAquesTalk2.so.1.0、OSX は AquesTalk2 という名前のファイルです。追加の声種ファイルは、設定フォルダの 中に phont フォルダを作り、その中に入れるだけです。ここに入れるだけで、内部の処理で使用可能音声を問い合わせたときにリストアップされます。


あとは、mbtts の最新版をインストールします。これは展開したフォルダの中の mbtts.txt の手順通りにやります。
そして、以前の記事「takayanの雑記帳: GNOME Orca で MBROLA と mecab を使って日本語をしゃべらせる方法」を見て、Orca を修正インストールしてください。

GNOME Orcaがあれば音声を切り替えて、音声がどう聞こえるのかためしに聞けるのですが、Windows や Mac OS X でも確認しやすいように、mbtts の demo 用のスクリプトを修正しました。speechbox.py は以前から用意していたテキストボックスの内容をの読み上げるスクリプトですが、音声選択メニューを追加しました。それぞれの音声を試すのに使ってみてください。ただし実行には wxPython が必要です。


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

2010年10月13日

Ubuntu に 日本語対応にした Gnome Orca を組み込むスクリプト

注意:
このプログラムは実験的なものです。自己責任でお使いください。
動作が確認できたのは Ubuntu10.10 です。
それ以後では動作しません。インストールしないでください。
2011.10.18


10月と言えば、半年に一度の Ubuntu のリリースの月です。10.10は10.10にめでたくリリースされましたが、
日本語ローカライズ版はもう少し待って10.16にリリース予定です。でも待ちきれないので一足早く日本語RC版を入れてみました。

もちろん、とりあえず10.04で動いていた Gnome Orca で日本語を使えるようにする修正がこれでもうまく動くか試してみたかったのですが。しかし、まっさらなUbuntuに入れようとすると、自分で作ったものなのにインストールに失敗してしまいました。10.10だからうまくいかなかったわけでなく、ここに書いていたことに細かな不備があったりしたからでした。作りながら書いているので、いろいろな情報が分散していて、我ながら分かりにくいです。

そういうわけで、現在のまとめの意味でUbuntuでインストールできるスクリプトを書いてみることにしました。将来ネット上のファイルの場所が変わってしまうと、動かなくなりますが、少なくとも現時点では以下のコマンドを実行すれば、新規にインストールした直後にアップデート・マネージャで最新の状態にしてある日本語Remix版のUbuntu10.4 Ubuntu10.10(RC版)で、Orcaで日本語読み上げが動くはずです。
なお翻訳がまだできていないので残念ながら最新のGnomeのバージョンには追いついていません。

#!/bin/sh
sudo apt-get install mbrola
sudo apt-get install mecab
sudo apt-get install libmecab-dev
sudo apt-get install g++
sudo apt-get install python-dev
sudo apt-get install python-pygame
sudo apt-get install mecab-ipadic-utf8
sudo apt-get install intltool
wget https://neu101.up.seesaa.net/etc/mbtts-0.97.6.zip
unzip mbtts-0.97.6.zip
cd mbtts-0.97.6
sudo python setup.py install
cd ..
wget http://tcts.fpms.ac.be/synthesis/mbrola/dba/jp1/jp1-000314.zip
wget http://tcts.fpms.ac.be/synthesis/mbrola/dba/jp2/jp2-270202.zip
wget http://tcts.fpms.ac.be/synthesis/mbrola/dba/jp3/jp3.zip
unzip jp1-000314.zip
unzip jp2-270202.zip
unzip jp3.zip
cp -r jp1 ~/.mbtts/jp1
cp -r jp2 ~/.mbtts/jp2
cp -r jp3 ~/.mbtts/jp3
wget http://ftp.acc.umu.se/pub/GNOME/sources/orca/2.31/orca-2.31.90.tar.bz2
wget https://neu101.up.seesaa.net/etc/orca-2.31.90-mbtts-files-0.3.tar.gz
tar xvfj orca-2.31.90.tar.bz2
tar xvfz orca-2.31.90-mbtts-files-0.3.tar.gz
cd orca-2.31.90
./configure
make
sudo make install


上記のスクリプトをファイルにコピーして、適当なフォルダを作ってそこに保存し、端末から実行してください。途中「y」の入力が要求されるところがあるので入力してください。なお今回の音声は MBROLA の日本語3音声だけです。Aquestalk2とOpenJtalkのインストールの自動化までは今回はやりませんでしたが過去記事の手順でやればうまくいくはずです。

インストールが完了したら、端末から「orca」と打ち込むと、テキストベース初期設定ウィザードが始まりますので、そこでmbttsを選んで、そのあとの質問を答えていってください。ただし開発中のバージョンのなので安全策を取ってログインと同時に起動させるかの質問にはできればNoと答えてください。そして設定を有効にするために、指示に従っていったんログアウトし、再度ログインしてください。

起動はアプリケーションメニューから選んでもいいですが、「ALT+F2」でコマンド入力ウィンドウを出して、orcaと打つのが速いです。終了は、標準設定にしてあるならばOrca修飾キーのInsertキーを押しながらqキーを押せば、終了の確認が出ますので、そのまま終了してください。

まだまだ完全ではないので、こんなところで実験的に公開していますが、できるだけはやくorcaに mbtts 向けのスクリプトを組み込んでもらえるようにしたいと思います。まずは最新の Gnome のバージョンに追いつかないといけません。それと近いうちに、インストール作業は実際に使う視覚障碍者の方には難しいと思いますので、最初から日本語音声Orcaを組み込んですぐ使えるCDやUSBメモリーに入れた配布用Linuxも作ってみるつもりです。


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

2011年05月01日

Ubuntu 11.04 でも 日本語 GNOME Orca を実験

注意:
このプログラムは実験的なものです。自己責任でお使いください。
動作が確認できたのは Ubuntu11.04 です。
それ以後では動作しません。インストールしないでください。
2011.10.18


《春》については一段落ついたと思うので、今度はプログラミング。

Ubuntu が11.04になった。どうなのか調べるため、新規にインストールしたものと、10.10をアップグレードしたもの、2つを使ってみている。GNOME3になるよりはよかったのではないかと思う。でも慣れるのがちょっと大変だ。身体で覚えてしまっている方法ができないので、ストレスを感じる。特にとっさにやってしまう日本語入力中にF10で半角英数にできないのがつらい。

さっそく、Ubuntu 11.04でも 日本語化した スクリーンリーダ GNOME Orca が使えるか試してみた。なお現在日本語化できているのは、orca-2.31.90 で最新の系列に追いついていない。このUbuntu 11.04で標準で利用可能なパッケージも既に3.0.0になっているので、なるべくはやく3.0系列にしようと思っている。

とりあえず、現状の2.31.90版の日本語ができるか試してみた。一応動いている。Ubuntuの新規インストールした機体でも、10.10からバージョンアップした機体でもどちらでも動いている。ただOrcaの終了ボタンを押すとOrcaが固まって終了できないことが何回かに一回起きる。そういうときはOrcaを強制終了させないといけなくなる。まだ原因は分からない。

 

■ Unityのキーボード操作

新しいUbuntuのユーザインターフェイスのUnityではキーボードのみでの操作もいろいろ用意されている。それぞれのアプリのスクリーンリーダ対応次第だが、これを駆使すれば音声ガイドとキーボード操作である程度Ubuntuが操作できる。主な操作として次のものがある。詳しくは次のリンク先に書いてある。
Unityのショートカット一覧

F10 … ウィンドウのメニュー操作への切り替え。このとき左に矢印キー1回で、セッションメニューが開く。ただし、動作中のアプリが上部のメニューバーにメニューを出さないタイプでは、左には行けないので、セッションメニューを開くには右矢印キーを数回押して移動する。

CTRL+ALT+DEL … コンピュータをシャットダウンするウィンドウが開く。シャットダウンや再起動を選んでエンターを押す。何も選ばなくても、60秒後にシャットダウンする。

ALT+F2 … コマンド入力ウィンドウの呼び出し。入力してエンターで実行。キー入力するごとに候補が絞られていくが、下矢印キーでその候補リストに移動できるが、リストは何も読み上げてくれない。

ALT+F1 … ランチャーリスト上に移動。上下矢印キーでランチャーに登録されているアイコンを移動できる。このときアプリが起動中ならば、右矢印キーでアプリの操作メニューが出てくるが、上下矢印キーで動いても読み上げない。

SUPER+数字 … ランチャーに登録されているアプリの起動。起動しているときは、そのアプリをアクティブにする。

SUPER+SHIFT+数字 … ランチャーに登録されているアプリの新規起動。

ALT+Tab … 起動しているタスクの切り替え。ALTを押さえたまま、Tabを叩くことで、タスクを一つ右に動く。ただし移動中はタスク名を読み上げない。

CTRL+ALT+矢印キー … ワークスペースの移動。ただし現在どのワークスペースかは音声で読み上げない。

SHIFT+CTRL+ALT+矢印キー … 現在アクティブなウィンドウをワークスペースに移動。ただし現在どのワークスペースかは音声で読み上げない。

SUPER+S … ワークスペースの一覧を表示する。矢印キーで各ワークスペースを選び、エンターで選択できる。ただしワークスペースの名前を読み上げない。

SUPER+W … すべてのワークスペースのすべてのウィンドウを表示する。矢印キーで各ウィンドウを選択し、エンターで開くことができる。ただし音声でウィンドウの名前を読み上げない。

SHIFT+ALT+↑ … 現在のワークスペースのすべてのウィンドウを表示する。各ウィンドウを上下左右で選び、エンターで開くことができる。ただしウィンドウの名前は読み上げない。

SUPER+F … 検索ウィンドウを開く。文字入力は読み上げるが、検索結果は読み上げない。日本語入力もできない。

いろいろ便利な機能がシンプルに呼び出せるようになっているが、現在のところ音声で読み上げない機能が多いので、それらを視覚障害者が使うのは現状では難しい。日本語Orcaではまだ漢字入力の音声化がされていないが、検索ウィンドウなどでは日本語入力そのものができない。

 

■ 日本語化したGNOME Orca のインストール

最初に言っておきますが、自己責任でお使いください。現在、強制終了しないといけないことがときどき起きてしまいます。特にまだ実験中なので自力で普及できる人だけお使いください。それから、現在はまだdebファイルではなく、BASHスクリプトでインストールするようになっています。

次のZIPファイルをダウンロードし展開した後、中にある orca-jp_inst.sh に実行権限を与えて、実行します。すると、自動的に必要なファイルをダウンロードして、orca を修正してインストールします。途中で管理者権限を要求してきます。

なお、orca-jp_inst.sh でインストールされる標準音声はMBROLAを利用しています。MBROLAの非商用、非軍用利用のライセンスに同意した人のみ実行してください。

ダウンロード→ orca_jp_script-1.02.zip
MD5:72b2e1773caf5b7d445b74074f55aac3

※ 追記 2011/05/05 orca_jp_script-1.02.zip公開。対応するOpenJtalkのバージョンを1.03にしました。また関連ファイルを音声フォルダに持ってくるとmei音声も簡易的に使えるようにしました。
※ 追記 2011/05/03 申し訳ありません。利用するmbttsのバージョン番号を間違えていました。このスクリプトは1.01に置き換えます。

なお、上記のインストール操作だけでも、MBROLAで読み上げてくれるようになりますが、同梱している oj_inst.sh を実行すると、open jtalk をダウンロードして、内部で使用しているmbttsの音声としてインストールします。

また、Aquestalk2の評価版を評価したいときは、上記のスクリプトを展開したフォルダに、aqtk2-lnx-eva_210.zip をそのまま追加して、aq_inst.sh を実行すると、これを mbtts の音声としてインストールします。なお、新しいライセンスになってから製品版での動作確認はまだやっていません。

インストールが完了したら、検索画面からorcaを見つけて、実行します。初回起動のときには、初期設定のウィザードがいろいろ質問してきます。この設定は後からでも修正できます。



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

2011年05月03日

GNOME Orca 3 系列での日本語対応

注意:
このプログラムは実験的なものです。自己責任でお使いください。
動作が確認できたのは Ubuntu11.04 です。
それ以後では動作しません。インストールしないでください。
2011.10.18

前回は、open_jtalk 1.03 への対応だけの簡単な修正をして、アップロードしたつもりが、内部のバージョン番号を間違えてしまって、動かないものをアップしてしまった。

今回は、せっかくなので、Orca の最新版へ対応してみた。対応と言っても、とりあえず使える程度で、今まで通り細かな設定はできない。またときどき終了できない。

ダウンロード:orca-3.0.1-jp_scripts-002.tar.gz
MD5:4a5763efb6c6ba8c0b16d46cd7e328bb

なお、MBROLAの利用は非商用・非軍用のライセンスの同意を、よろしく。

(追記 2011/05/05 orca-3.0.1-jp_scripts-002.tar.gz 公開。気づかないままOpenJtalkのバージョンアップと重なってしまって、バージョンが混乱したままだったのを修正。設定ファイルでOpenJTalkの数値パラメータを設定できるようにしたので、新しい音声やmeiの音声もなんとか使えるはず。ただこの方法だとOpenJTalkの複数の音声を同時に対応できないので、今後、仕様を変更をする予定。以前のバージョンから使っている場合はoj_inst.shでOpenJTalk1.03をインストールしなおす必要がある。)

上記のファイルをダウンロードして、orca-jp_inst.sh を実行すると、自動的に必要なファイルをダウンロードして、インストールしてくれる。

今後はこちらの3系列をターゲットにして修正していく。今後は以前からの課題だった、linux版 mbtts での pygame 依存から脱却を行いたい。そして、Orca の理解をもう少し進めて、Orcaに特化したTTSにしあげたい。MBROLAを標準音声にしてきたけれど、ライセンス的に Open JTalk のほうが使いやすいので、Orca の日本語標準音声はそちらにすべきだと思う。mbttsからpygameの対応コードと、mecab 変換処理、MBROLAの対応コードを抜いたら、原型がなくなるくらいシンプルなものができるだろう。最大の難問は漢字変換の音読になるだろうが、ソースを読めば何とかなるだろう。

《春》も面白いパズルだったけれど、これもそれなりに歯ごたえのある対象だ。



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

2011年05月06日

mbtts を Open JTalk 1.03 に対応させるときに困ったこと

注意:
このプログラムは実験的なものです。自己責任でお使いください。
動作が確認できたのは Ubuntu11.04 です。
それ以後では動作しません。インストールしないでください。
2011.10.18


まず、前置きから

mbtts というのを作っています。マルチプラットフォームで使えるMBROLAを使った Python用の音声合成モジュールです。漢字を含む日本語文字列を与えると、それを音読してくれます。

ダウンロード→ mbtts-0.97.9.zip
MD5:503cb6f73b3c14588eec338431609fc6

去年のことになりますが、これをGNOME Orcaに組み込むことで、Ubuntuのスクリーンリーダーを日本語化させることに成功しました。まだまだ不安定なところはありますが。

今は、主として mbtts はGNOME Orca用の下請けモジュールとして開発を進めています(いや進めていますと言うと語弊があります。半年ぶりの Ubuntu の最新版リリースをきっかけに作業を再開したところです。)。mbtts を使って、画面上に表示されている日本語文字列を発声できるようになったので、さらに mbtts に Aquestalk2 と Open JTalk を組み込むことで、Orca で Aquestalk2 や Open JTalkの音声が使えるようになりました。ただし、本来 MBROLA 向けのモジュールなので、追加の音声合成に関してはまだ細かな設定ができていないのが現状です。MBROLAに関する設定もまだ半分もできていません。

今後は、mbtts を発展させてこれ自体をもっと高機能にしていく道もありますが、Orcaの下請け処理を簡潔にするためにそれぞれの音声合成専用のモジュールを作って対応していこうと画策しています。

そういうわけで、単独で Open JTalk を動かそうと思っていたのですが、Open JTalk  のバージョン1.03がリリースされたので、これに mbtts が対応してから、その作業を進めることにしました。軽い気持ちでこのバージョンアップを考えていたのですが、ちょっと手こずってしまいました。

では、本題

Open JTalk 1.03 をコンパイルし、同時にリリースされた1.03の辞書と音声を使って、しゃべらせてみると、しゃべりがゆっくりになってしまいます。ゆっくりと言っても、ゆっくりボイスのゆっくりではなくもちろんスローの意味でです。

解決策が分かるのに1日かかりました。「Open JTalk で音声合成して日本語テキスト読み上げ」のページで、MMDAgent の mei_normal 用の Perl スクリプトを見て気づきました。いままでは open_jtalk に周波数以外の数値パラメータを与えていませんでした。以前の Open JTalk の標準音声m001は省略してもしゃべってくれていました。でもバージョン1.03ではうまくいきません。いろいろやってみると、-aオプションを 0.1 以下にすると症状が改善します。とりあえず上記のページを参考にしてmbttsの初期設定は 0.075 にしておきました。他の数値も変えるべきなのかもしれませんが、標準値のままにしてあります。

 

このように数値を設定できるようにしたので、mbtts の音声として、Windows 用のスクリーンリーダーNVDA のように mei_normal などの他の Open JTalk 音声を利用できるようになりました。

そのためには、 ~/.mbtts/open_jtalk/voices フォルダに音声ファイルの集まりをフォルダごと入れる必要があります。この音声ファイルは MMDAgent からダウンロードできる MMDAgent_Example-1.0.zip 内にあります。パラメータは音声ごとに個別に登録できないので、その都度手書きで、~/.mbtts/config.txt 内の値を修正する必要があります。これは今後の課題です。



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

2011年10月25日

GNOME Orca を改造して、Ubuntu11.10でも日本語をしゃべるようにする

先日 Ubuntu11.10 が出ましたが、あいにく今までのGNOME Orcaの改造版では、うまく動作してくれなくなりました。

それで、急遽、といってもちょっと時間がかかりましたが、Ubuntu11.10対応版を作りました。まだまだ実用向きにはなれませんが、Linuxで日本語のスクリーンリーダーを実現するにはこんな感じにやればいいんだという参考になればよいと思います。

今回は、Box.net で50GBゲットできたので、そこで公開してみます。なおこの日本語Orcaは内部で非商用・非軍事利用が条件のMBROLAを使用していますので、その旨を同意された方のみダウンロードしてください。
http://tcts.fpms.ac.be/synthesis/

また、このプログラムによるいかなる損害の責任も負いかねますので、自己責任での利用をご理解ください。

 

上のFlashが表示されていれば、マウスで選んでダウンロードしてみてください。上のFlashが表示されないときは、次のリンクからダウンロードしてみてください。
→→ orca-3.2.1-jp_scripts-003.tar.gz

インストール方法を具体的に書きました。下記の二つのページをご覧ください。
GNOME Orca で日本語を使う方法(Ubunt11.10向け) 準備
GNOME Orca で日本語を使う方法(Ubunt11.10向け) インストール
(2011.11.03追記および修正)

orca-3.2.1-jp_scripts-003.tar.gz を展開して中にある orca-jp_inst.sh を端末から実行してください。ビルドや実行に必要なパッケージをインストールして、GNOME Orca3.2.1 のソースをダウンロードし、日本語が使えるパッチを当ててビルドしてくれます。

上の文が何言っているか分からない人向けには、後日、デスクトップの画像を使って簡単な導入方法をまとめる予定です。画像の撮影は終わってますので、 しばらくお待ちください。

最初の開発から1年ちょっと経ってしまいましたが、Ubuntuでもスクリーンリーダーが日本語をしゃべるぞ、ということを確認する程度の出来でしかありません。努力が足りないと反省しています。



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