テキスト読み上げを使用して AI グラスの音声出力を処理する

対象の XR デバイス
このガイダンスは、このようなタイプの XR デバイス向けのエクスペリエンスを構築する際に役立ちます。
AI メガネ

ユーザーとコミュニケーションをとる方法の 1 つに、テキスト読み上げ(TTS)技術があります。TTS は Android に組み込まれており(追加のライブラリは不要)、オフラインでも動作します。このような特性により、TTS はディスプレイレス モードでのエラー条件の処理に最適です。TextToSpeech クラスを使用して、TTS 機能を参照できます。

TextToSpeech をインスタンス化する

Activity のライフタイムの間利用できるように、AI グラス アクティビティの onCreate() メソッドで TextToSpeech クラスをインスタンス化することをおすすめします。

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    tts = TextToSpeech(this) { status ->
        if(status == TextToSpeech.SUCCESS) {
        // Initialization successful
        }else {
            // Initialization failed
        }
    }
    ...
}

TTS の開始時にユーザーに通知する

ディスプレイのない(音声のみの)エクスペリエンスでは、onStart() メソッドでユーザーに通知して、アプリが正常に起動したことを知らせます。

override fun onStart() {
  super.onStart()

  tts?.speak("Welcome to Android XR Glasses!",
  TextToSpeech.QUEUE_FLUSH,
  null,
  "welcome_utterance")
  ...
}

コードに関する主なポイント

  • TextToSpeech.QUEUE_FLUSH は、テキストをすぐに読み上げ、他の TTS 発話は中断する必要があることを示します。
  • この場合、utteranceId"welcome_utterance")は、このテキストの読み上げが終了したタイミングを特定するために使用されます。詳細については、UtteranceProgressListener をご覧ください。

TTS を中断する

アプリで TTS を中断する必要がある場合は、stop() メソッドを呼び出します。

// This interrupts the current utterance and discards other utterances in the queue.
tts?.stop()
...

TTS リソースをクリーンアップする

アクティビティが破棄されるときにリソースをクリーンアップするには、アクティビティの onDestroy() メソッド内で shutdown() メソッドを呼び出します。

override fun onDestroy() {
    super.onDestroy()

    tts?.shutdown()
}