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

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

يمكنك استخدام ميزة "التعرّف التلقائي على الكلام" (ASR) للتعرّف على عبارات محدّدة من المستخدِم باستخدام SpeechRecognizer وتحويلها إلى نص. SpeechRecognizer مدمَج في نظام التشغيل Android (ولا يتطلّب أي مكتبات إضافية) ويعمل حتى بدون اتصال بالإنترنت.

لكي يحوّل SpeechRecognizer كلام المستخدم إلى نص، يجب أن يمنح المستخدم تطبيقك الإذن RECORD_AUDIO. لمعرفة كيفية طلب هذا الإذن لتطبيقك، اطّلِع على طلب أذونات الأجهزة.

إنشاء مثيل SpeechRecognizer

أنشئ مثيلاً من SpeechRecognizer في طريقة onCreate() الخاصة بنشاط نظارات الذكاء الاصطناعي لكي يكون متاحًا طوال مدة النشاط:

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

    //The RECORD_AUDIO permission must be granted to your app before instantiation

    speechRecognizer = SpeechRecognizer.createOnDeviceSpeechRecognizer(this)
    speechRecognizer?.setRecognitionListener(recognitionListener)
    ...
}

ضبط RecognitionListener

تتيح لك الطريقة setRecognitionListener() تحديد العنصر الذي يتم فيه إجراء عمليات معاودة الاتصال المهمة، مثل RecognitionListener.onResults()، التي يستدعيها النظام بعد التعرّف على اللغة المنطوقة.

val recognitionListener = object : RecognitionListener {

    override fun onResults(results: Bundle?) {

        val matches = results?.getStringArrayList(RESULTS_RECOGNITION)
        val confidences = results?.getFloatArray(CONFIDENCE_SCORES)

        val mostConfidentIndex = confidences!!.indices.maxByOrNull { confidences[it] }

        if (mostConfidentIndex != null){
            val spokenText = matches[mostConfidentIndex]

            if (spokenText.equals("Start my Run", ignoreCase = true)){
                // User indicated they want to start a run
            }
        }

    }
    ...
}

النقاط الرئيسية حول الرمز

  • يتم طلب حزمتَين من المصفوفات. تتضمّن المصفوفة الأولى جميع التطابقات، بينما تتضمّن المصفوفة الثانية مستوى ثقة أداة التعرّف على الكلام في ما تم سماعه. تتطابق فهارس هذه الصفائف مع بعضها البعض. يتم استخدام المطابقة التي تتضمّن أعلى قيمة ثقة (mostConfidentIndex).

  • يتم إجراء مطابقة للسلسلة غير حساسة لحالة الأحرف لتحديد الإجراء الذي يريد المستخدم اتخاذه.

طُرق بديلة عند المطابقة

في المثال السابق، يتم استخدام المطابقة ذات أعلى قيمة ثقة. ويعني هذا الخيار أنّه يجب أن يكون النظام واثقًا تمامًا من فهمه لطلب المستخدم، وإلا لن يحدّد أي تطابق. عند استخدام هذا النهج، قد تحصل على نتائج سلبية خاطئة.

يمكن اتّباع أسلوب آخر يتمثل في الاطّلاع على جميع النتائج المطابقة بغض النظر عن مستوى الثقة والعثور على أي نتيجة مطابقة تناسب الإدخال الذي تبحث عنه. في المقابل، قد تؤدي هذه الطريقة إلى المزيد من النتائج الإيجابية الخاطئة. يعتمد النهج الذي يجب اتّباعه بشكل كبير على حالة الاستخدام.

بدء الاستماع

لبدء الاستماع إلى المستخدم، حدِّد ACTION_RECOGNIZE_SPEECH النية عند طلب startListening().

override fun onStart() {
    super.onStart()

    val intent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH).apply {
        putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM)
    }

    speechRecognizer?.startListening(intent)

}

النقاط الرئيسية حول الرمز