Как обрабатывать аудиовыход для аудио- и видеоочков с помощью синтеза речи

Поддерживаемые XR-устройства
Это руководство поможет вам создавать продукты для таких XR-устройств.
Аудио- и
видеоочки

Один из способов общения с пользователями – технология синтеза речи (TTS). Функция TTS встроена в Android (дополнительные библиотеки не требуются) и работает даже в офлайн-режиме. Эти характеристики делают TTS идеальным для обработки условий ошибок в режиме без дисплея. Вы можете ссылаться на функции TTS, используя класс TextToSpeech.

Создайте экземпляр TextToSpeech

Рекомендуем создать экземпляр класса TextToSpeech в методе onCreate проецируемого действия, чтобы он был доступен в течение всего времени существования Activity:

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

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

Уведомлять пользователя о начале озвучивания текста

Если у устройства нет экрана, сообщите пользователю, что приложение запущено, в методе onStart:

override fun onStart() {
  super.onStart()

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

Важные сведения о коде

  • TextToSpeech.QUEUE_FLUSH указывает, что текст должен быть озвучен немедленно, а любое другое озвучивание должно быть прервано.
  • utteranceId, в данном случае "welcome_utterance", используется для определения того, когда этот текст закончит произноситься. Дополнительную информацию вы найдете в UtteranceProgressListener.

Прервать озвучивание текста

Если приложению нужно прервать озвучивание, вызовите метод stop:

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

Очистка ресурсов TTS

Когда объект activity удаляется, необходимо освободить ресурсы, вызвав метод shutdown в методе onDestroy объекта activity:

override fun onDestroy() {
    super.onDestroy()

    tts?.shutdown()
}