高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

AndroidのTTSを使ってみた

Androidは1.6からTextToSpeech(以下TTS)という文字列の音声読み上げ機能がついています。
読んで字のごとく、このTTSに何らかの文字列を渡すと、その文字列を読み上げてくれるという機能。別途エンジンを指定することで様々な言語をしゃべることができるというもので、初期(エンジンがない場合、インストールを促されるエンジンのみ)状態では、英語、ドイツ語、フランス語、イタリア語に対応しています。有料ですが日本語のエンジンも製作されている模様。

で、このTTSを使って現在の時刻読み上げプログラムを作ってみたわけです。

まだまだこれだけの機能しかないですが、ひとまず毎時0分や30分の時報を鳴らす機能を作ってみようかな と(ちなみにソースコードGoogle Codeに配置してあります。興味があればどうぞ)。

プログラムの際に注意すべきことはあまりなし。ひとまずプログラムが始まったらTTSオブジェクトのInitを呼び出して、初期化が終わったらSpeakすればいいだけ。
ただしそこはAndroid、基本的にすべての動作は非同期で動作します。なのでメインスレッドで呼び出してもUIの処理は止まらず、読み上げ処理と並行して動作します。なのでTTSがしゃべってる間にアクティビティを終了させるようなことをしてはいけませんよ と。今回は検索ボタン長押しからの起動で、「時刻読み上げだけして終了する」という機能を作って、それでちょっと詰まった。

Androidのアプリ作り自体は簡単ですが、基本的に非同期で動作する処理が多いため、そこだけは気を付けないといけないなと思いました。