ऑटोमैटिक स्पीच रिकॉग्निशन का इस्तेमाल करके, ऑडियो ग्लास और डिसप्ले ग्लास से ऑडियो इनपुट को मैनेज करना

इन XR डिवाइसों पर लागू होता है
इस गाइड की मदद से, इन तरह के एक्सआर डिवाइसों के लिए अनुभव बनाए जा सकते हैं.
ऑडियो और
डिसप्ले ग्लास

ऑटोमैटिक तरीके से बोली की पहचान करने (एएसआर) की सुविधा का इस्तेमाल करके, 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) वाले मैच का इस्तेमाल किया जाता है.

  • यह पता लगाने के लिए कि उपयोगकर्ता को कौनसी कार्रवाई करनी है, केस-संवेदी स्ट्रिंग मैच किया जाता है.

मिलान करते समय अन्य तरीके

ऊपर दिए गए उदाहरण में, सबसे ज़्यादा कॉन्फ़िडेंस वैल्यू वाले मैच का इस्तेमाल किया गया है. इस विकल्प का मतलब है कि सिस्टम को यह पक्का होना चाहिए कि उसने उपयोगकर्ता की बात समझ ली है. ऐसा न होने पर, वह किसी भी मैच को फ़्लैग नहीं करेगा. इस तरीके का इस्तेमाल करने पर, आपको गलत नेगेटिव मिल सकते हैं.

एक और तरीका यह हो सकता है कि कॉन्फ़िडेंस स्कोर की परवाह किए बिना, सभी मैच देखे जाएं और ऐसा मैच ढूंढा जाए जो आपकी ज़रूरत के हिसाब से हो. इसके उलट, इस तरह के तरीके से ज़्यादा गलत पॉज़िटिव नतीजे मिल सकते हैं. आपको किस तरह का तरीका अपनाना चाहिए, यह काफ़ी हद तक आपके इस्तेमाल के उदाहरण पर निर्भर करता है.

सुनना शुरू करें

उपयोगकर्ता की बात सुनने के लिए, startListening को कॉल करते समय ACTION_RECOGNIZE_SPEECH इंटेंट तय करें.

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)

}

कोड के बारे में अहम बातें