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

Применимые устройства XR
Данное руководство поможет вам создавать приложения для устройств XR такого типа.
Аудио и
Очки для демонстрации

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

Создать экземпляр функции преобразования текста в речь

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

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 указывает, что текст должен быть произнесен немедленно, а любые другие реплики синтезатора речи должны быть прерваны.
  • Идентификатор utteranceId (в данном случае "welcome_utterance" ) используется для определения момента завершения произнесения текста. Дополнительную информацию см. в описании UtteranceProgressListener .

Прерывание TTS

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

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

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

При уничтожении активности следует освободить ресурсы, вызвав метод shutdown внутри метода onDestroy этой активности:

override fun onDestroy() {
    super.onDestroy()

    tts?.shutdown()
}