التعامل مع مخرجات الصوت لنظارات الذكاء الاصطناعي باستخدام ميزة "تحويل النص إلى كلام"

أجهزة XR المعنيّة
تساعدك هذه الإرشادات في إنشاء تجارب لهذه الأنواع من أجهزة الواقع الممتد.
نظارات AI Glasses

إحدى الطرق التي يمكنك من خلالها التواصل مع المستخدمين هي استخدام تكنولوجيا "تحويل النص إلى كلام" (TTS). تتوفّر ميزة "تحويل النص إلى كلام" في نظام التشغيل Android (بدون الحاجة إلى مكتبات إضافية)، وتعمل حتى عندما تكون غير متصل بالإنترنت. هذه الخصائص تجعل ميزة "تحويل النص إلى كلام" مثالية للتعامل مع حالات الخطأ في الوضع بدون شاشة. يمكنك الرجوع إلى ميزات تحويل النص إلى كلام باستخدام الفئة 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()
...

تنظيف موارد تحويل النص إلى كلام

يجب تنظيف الموارد عند إيقاف نشاطك من خلال استدعاء الإجراء shutdown() ضمن الإجراء onDestroy() الخاص بالنشاط:

override fun onDestroy() {
    super.onDestroy()

    tts?.shutdown()
}