2011年01月06日

GoSen と Aquestalk2 を使って日本語をしゃべる Android アプリを作ってみた。

今年もよろしくお願いします。
さて、年末に作り始めたAndroidアプリを公開します。
仮公開先:[nihongoyomiagetest.apk]
(2011.01.09 19:20 数字・アルファベットに対応)
(2011.01.07 01:40 速度の情報が保存されない不具合修正)
(2011.01.07 01:12 再生ボタンの不具合修正)

まだテスト中ですので、不具合があるかもしれません。そのときは速やかにアンインストールしてください。

Aquestalk2の音声で日本語を読みます。
通常、Aquestalk2 は仮名文字しか読めませんが、GoSenを使って日本語の形態素解析をし、漢字仮名交じり文の読みを推定しています。機能そのものは入力されたテキストをただ変換し読み上げるだけのシンプルなものです。


辞書はとても巨大なので本体には同梱していません(50MB)。SDカード上に後述する専用のフォルダを作って、その中に配置してください。もしくは、このアプリのメニューに入れてあるネット上からダウンロードしてインストールする機能を使ってもよいです。ですが、スリープさせずに実行させて1時間近くかかってしまいます。スリープさせながらだと2時間以上かかります(IS03にて)。

そういうわけで、Java のプログラムに慣れた人ならば、辞書のインストールはパソコンでコンパイルした後SDカードにコピーしたほうが簡単です。パソコンでのコンパイルは1分ほどで終わります。そのかわり、ちょっと準備が必要です。

パソコンで辞書を作成するには、JDKantがインストールされている必要があります。そして GoSen のソースコードも必要です。GoSen のソースコードは svn を使って、https://itadaki.svn.sourceforge.net/svnroot/itadaki/GoSen からダウンロードしてください。
まず、ant を使って、GoSen をコンパイルします。その後、testdata/dictionary フォルダで、ant を実行すると、ipadic-2.6.0 の辞書データがコンパイルされます。GoSen は Sen よりは新しいですが、それでもやはり古いプログラムなので 2.6.2 以降のipadic 辞書にはそのままでは対応できません。今回のアプリで利用している jarでは、この対策を施していますが、パソコンで使うときの対策は次回詳しく説明します。
参考:GoSenのちょっとした改良

コンパイルが終われば辞書をSDカードに移します。Android本体をケーブルで繋ぐ方法でも、SDカードを外してパソコンに差す方法でも、 DropBox などパソコンからAndroid内にファイルを転送できるソフトやファイルマネージャーアプリを駆使する方法でもかません。SDカードの所定の場所(/sdcard/GoSen/ipadic-xxxxx/)にコピーしてください。/sdcard/GoSen/内に ipadic で始まるフォルダを見つけると、その中に ipadic の辞書データが入っていると判断するようにしています。

パソコンでコンパイルした場合、dictionary フォルダにはいくつかのファイルができていますが、コピーするのは dictionary.xml、connectionCost.sen、partOfSpeech.sen、token.sen、trie.sen の5つです。将来、辞書の再構築が Android 内でできるようになったらさらに二つのcsvファイルも必要になりますが、今はいりません。

JDK や ant の環境構築はプログラミングをやったことがない人にはハードルの高いものです。SDカードへのコピーも難しいかもしれません。そういう方はこのアプリで辞書をコンパイルしてください。時間はとってもかかってしまいますが。細かいことは何もせずにすみます。なお変換途中で終了すると、次回インストールでは展開するところからやり直します。



この GoSen の辞書は一度入れてしまえば、他のアプリからでも利用できます。今回作ったソフトの辞書関連のクラスを独立させて、辞書管理のアプリを別に作ってみようと思っています。単語を追加して、辞書を構築しなおすたびに一時間かかるような今の状況では使い物にはなりませんが。


今回公開するアプリにはアクエスト社のAndroid向けAquesTalk2ライブラリ、および音声Phontファイルが含まれています。このAquesTalk2ライブラリは非営利の個人利用に限り無償で使用できます。それ以外のご利用の場合はライセンスの購入が必要です。また、AquesTalk2ライブラリ単体での再配布はできません。


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