モバイルアプリ向けのテキスト読み上げ機能
Altova MobileTogetherは、テキスト読み上げ機能をサポートしています クロスプラットフォーム対応のモバイルアプリケーション, これにより、開発者は音声機能を組み込み、豊かで多様なマルチメディア体験をユーザーに提供できるようになります。
音声は、アプリ内のあらゆるテキストと完全に連携させることができます。例えば、Parcel Delivery MobileTogetherのようなアプリであれば、次回の配達先住所を音声で読み上げることで、特に運転手が交通渋滞に巻き込まれている場合に役立ちます。また、他の情報ブロックにあるメッセージボックス内のテキストも、モバイルデバイスを通じて音声で読み上げることができます。
モバイルアプリにおけるテキスト読み上げ機能の動作を検証するため、簡単なデモを作成しました。その後、その機能を「Parcel Delivery」アプリに追加しました。

この非常にシンプルなテキスト読み上げデモアプリには、以下の4つの機能があります
- 入力フィールドは、ユーザーが任意のテキストを入力したり、あらかじめ用意されたデフォルトのテキストを読み上げたりするための機能です
- 「読み上げ」ボタンをクリックすると、入力されたテキストが音声で読み上げられます
- 「ミュート」ボタンは、現在発言中であれば、それを停止します
- 「終了」ボタンをクリックすると、音声メッセージが表示されるメッセージボックスが表示され、アプリケーションを終了するオプションが提供されます
以下は、Androidデバイス上で動作しているアプリの画面で、入力フィールドにテキストが表示されています

アプリ内のテキストは、モバイルデバイスのコピー&ペースト機能を含む、さまざまなソースから提供されることがあります。以下に示すスクリーンショットでは、iPhoneのユーザーが、Altovaのウェブサイトからコピーしたデフォルトのテキストを削除し、入力フィールドに貼り付けています

複数行に対応する入力フィールドのプロパティが選択されると、貼り付けられたテキストに合わせてボックスが自動的にサイズ調整されます。
入力フィールドに入力されたテキストは、アプリのデータ構造内の特定の要素に保存されます。 「読み上げ」ボタンに割り当てられた機能により、デバイスに内蔵されているテキスト読み上げエンジンが、保存されたテキストを読み上げます。
この「MobileTogether Actions」ダイアログで定義された単一の操作は、アプリがAndroid、iOS、またはWindows Phoneで動作している場合でも、Windows 10のコンピューターで動作している場合でも、さらには別のデバイス上のWebブラウザで動作している場合でも、常に機能します。

「テキスト読み上げ」機能を、「話す」ボタンの操作に直接割り当てましたが、これはアクショングループ内でも使用できます。ここでは、例として「終了」ボタンにアクショングループを使用しています。ユーザーが「終了」ボタンをクリックすると、メッセージボックスを表示すると同時に、メッセージを読み上げたいと考えています。これは、Androidスマートフォンで以下のように実現できます

以下に、終了ボタンに設定されている機能を説明します

「このアプリを本当に終了しますか?」というフレーズは、データ構造内に保存されており、テキスト読み上げ機能の強調表示アクションや、その下のメッセージボックスで使用されるXPath式で使用されています。
ユーザーが「OK」をクリックすると、アプリが終了する前に、ループ処理がテキスト読み上げの完了を待ちます。
モバイルアプリ向けの荷物配送アプリに、テキスト読み上げ機能を搭載しました
Parcel Deliveryというサンプルアプリケーションは、もともとMobileTogetherで地理位置情報を扱う方法を示すために作成されました。このシミュレーションでは、ユーザーはニュージャージー州にある倉庫からニューヨーク市内の様々な場所へ荷物を配達する配送会社のドライバーとして活動します。
新しい配達先が割り当てられると、アプリは配達先住所と現在地からの距離を表示する「配達」画面を表示します。以下は、Androidスマートフォン用のMobileTogetherシミュレーターで表示される画面の例です

運転中に、ドライバーが移動するにつれて、新しい目的地や距離情報を音声で読み上げられるようにしたいと考えています。
まず、設定画面に新しいユーザー設定項目を追加し、テキスト読み上げ機能を有効または無効にするためのスイッチコントロールを設けることができます。以下に、iPhoneで動作する、改訂版の設定画面の例を示します

デザイナーの「配送」ページを見ると、配送先、現在地、そして配送先までの距離は、すべてXPath式から取得されていることがわかります

これらの表現は、テキスト読み上げ機能にも適用できます。まず、新しい目的地ごとに読み上げるためのアクショングループを作成しました。下図の青色で強調されている部分が、テキスト読み上げ機能の設定です。ここでは、concat関数を使用して、住所と開始地点からの距離を含む、より自然な表現になるように、いくつかの単語を追加しました

運転者が目的地に向かうにつれて、位置情報が定期的に更新され、目的地までの距離がリアルタイムで表示されます。新しい距離情報を音声で伝えるために、別の操作グループを作成しました

このループは、上記のデモアプリの「終了」ボタンで定義されている機能と似ており、以前の音声合成処理が完了していない場合に、新しい音声合成処理が中断されるのを防ぎます。もし、以前の音声合成処理が完了する前に位置情報が更新されると、通常はこのような中断が発生する可能性があります。
当社のテキスト読み上げ機能は、アプリの実行中に呼び出す必要があります。まず、配送ページにおける「ページ読み込み時」の処理シーケンスに、「次の目的地を読み上げ」という機能を追加することができます

初回配送時には、配送ページが一度読み込まれます。2回目以降の配送については、既存の「次の目的地へ進む」アクショングループに、新しいアクショングループを追加することができます

残された作業は、デリバリーページのOnPageRefreshアクションに、Vocalize New Distanceアクショングループを追加することです

現在、このアプリはMobileTogetherシミュレーター上でも、また実際のモバイルデバイス上でも動作しますが、運転者は音声による状況報告を受け取ることができ、運転中に視線を道路からそらす必要がありません!
モバイルアプリ向けのテキスト読み上げ機能を試してみたい場合は、無料で利用できるMobileTogether Designerをダウンロードしてみてください。このソフトウェアには、ヘルプ機能、チュートリアル、そしてParcel Deliveryなどの多くのサンプルアプリが付属しています。
この投稿で説明されているソリューションは、以下のURLからダウンロードできます:https://github.com/altova/MobileTogether-TTS
MobileTogether Designerで、いずれかの.mtdファイルを開き、そのファイルがどのように構築されているかを確認してください。その後、MobileTogetherシミュレーターでそのファイルを実行してください。
お使いのデバイスに対応したアプリストアにアクセスし、MobileTogetherモバイルアプリをダウンロードしてください。 その後、MobileTogetherデモサーバーに接続して、さらに多くのデモアプリを試すことができます。MobileTogetherモバイルアプリをインストールすると、MobileTogetherデザイナーをサーバーとして使用して、ご自身のデバイスでモバイルアプリ向けのテキスト読み上げ機能も試すことができます。