Xử lý đầu ra âm thanh cho kính AI bằng tính năng Chuyển văn bản sang lời nói

Các thiết bị XR áp dụng
Hướng dẫn này giúp bạn tạo trải nghiệm cho các loại thiết bị XR này.
Kính AI

Một trong những cách bạn có thể giao tiếp với người dùng là sử dụng công nghệ Chuyển văn bản sang lời nói (TTS). TTS được tích hợp sẵn trong Android (không yêu cầu thêm thư viện) và hoạt động ngay cả khi không có mạng. Những đặc điểm này khiến TTS trở thành lựa chọn lý tưởng để xử lý các điều kiện lỗi ở chế độ không có màn hình. Bạn có thể tham chiếu các tính năng TTS bằng lớp TextToSpeech.

Tạo thực thể TextToSpeech

Bạn nên tạo bản sao lớp TextToSpeech trên phương thức onCreate() của hoạt động kính AI để lớp này có sẵn trong suốt thời gian hoạt động của Activity:

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

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

Thông báo cho người dùng khi TTS bắt đầu

Đối với trải nghiệm không có màn hình (chỉ có âm thanh), hãy cho người dùng biết rằng ứng dụng của bạn đã khởi chạy thành công bằng cách thông báo cho họ trong phương thức onStart():

override fun onStart() {
  super.onStart()

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

Các điểm chính về mã

  • TextToSpeech.QUEUE_FLUSH cho biết văn bản cần được nói ngay lập tức và mọi câu nói TTS khác cần bị gián đoạn.
  • utteranceId (trong trường hợp này là "welcome_utterance") được dùng để xác định thời điểm đọc xong văn bản này. Để biết thêm thông tin, hãy xem UtteranceProgressListener.

Tạm dừng TTS

Nếu ứng dụng của bạn cần ngắt TTS, hãy gọi phương thức stop():

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

Dọn dẹp tài nguyên TTS

Bạn nên dọn dẹp tài nguyên khi hoạt động bị huỷ bằng cách gọi phương thức shutdown() trong phương thức onDestroy() của hoạt động:

override fun onDestroy() {
    super.onDestroy()

    tts?.shutdown()
}