使用文字转语音功能处理音频眼镜和显示眼镜的音频输出

适用的 XR 设备
本指南可帮助您为以下类型的 XR 设备打造优质体验。
音频和
显示眼镜

您可以使用文字转语音 (TTS) 技术与用户进行沟通。TTS 内置于 Android 中(无需额外的库),即使在离线状态下也能正常运行。这些特性使 TTS 非常适合在无显示模式下处理错误情况。您可以使用 TextToSpeech 类引用 TTS 功能。

实例化 TextToSpeech

我们建议在投影 activity 的 onCreate 方法中实例化 TextToSpeech 类,以便在 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 资源

当您的 activity 被销毁时,您应在 activity 的 onDestroy 方法中调用 shutdown 方法来清理资源:

override fun onDestroy() {
    super.onDestroy()

    tts?.shutdown()
}