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

Применимые устройства 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
        }
    }
    ...
}

Уведомлять пользователя о запуске 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

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

override fun onDestroy() {
    super.onDestroy()

    tts?.shutdown()
}