GenAI Speech Recognition API

ML Kit के GenAI Speech Recognition API की मदद से, ऑडियो कॉन्टेंट को टेक्स्ट में बदला जा सकता है. यह एपीआई इन मोड के साथ काम करता है:

  • बेसिक: Speech Recognition API, डिवाइस पर मौजूद स्पीच रिकग्निशन मॉडल का इस्तेमाल करता है. यह SpeechRecognizer API की तरह ही काम करता है
    • आम तौर पर, यह सुविधा Android के एपीआई लेवल 31 और उसके बाद के वर्शन वाले ज़्यादातर डिवाइसों पर उपलब्ध है
  • ऐडवांस: Speech Recognition API, GenAI मॉडल का इस्तेमाल करता है. इससे, ज़्यादा भाषाओं में काम करने की सुविधा मिलती है और बेहतर क्वालिटी मिलती है
    • यह सुविधा, Pixel 10 डिवाइसों पर उपलब्ध है. इसे अन्य डिवाइसों के लिए भी उपलब्ध कराने पर काम किया जा रहा है

मुख्य सुविधाएं

  • यह कुकी, माइक्रोफ़ोन या ऑडियो फ़ाइल से स्ट्रीमिंग इनपुट को कैप्चर करती है
  • ट्रांसक्राइब किया गया टेक्स्ट, लगातार स्ट्रीम के तौर पर उपलब्ध कराया जाता है. ऐसा हो सकता है कि शुरुआती तौर पर यह टेक्स्ट अधूरा हो और इसमें बदलाव किया जा सकता हो. हालांकि, बाद में यह फ़ाइनल कॉन्टेंट बन जाता है.

परिणामों के उदाहरण

ऑडियो मोड स्थान-भाषा बोली को लेख में बदलना
audio_1 सामान्य en-US "यह एक छोटा मैसेज है"
audio_2 बेहतर es-ES "Este es un mensaje corto."

प्लैटफ़ॉर्म के स्पीच रिकग्निशन एपीआई से तुलना

बेसिक मोड का इस्तेमाल करने पर, ML Kit Speech Recognition API, प्लैटफ़ॉर्म Speech Recognition API की तरह ही मुख्य फ़ंक्शन उपलब्ध कराता है. ML Kit का एक मुख्य फ़ायदा यह है कि यह Android प्लैटफ़ॉर्म के ज़्यादा वर्शन के साथ काम करता है. इसके लिए, एपीआई लेवल 31 या इससे बाद का वर्शन ज़रूरी है. यह कुछ प्लैटफ़ॉर्म एपीआई से ज़्यादा है.

साथ ही, ML Kit Speech Recognition API, ऐडवांस मोड में डिवाइस पर मौजूद Gemini मॉडल का इस्तेमाल करता है. इससे ज़्यादा भाषाओं में काम किया जा सकता है.

अपनी प्रोफ़ाइल बनाना शुरू करें

अपने build.gradle कॉन्फ़िगरेशन में, ML Kit Speech Recognition API को डिपेंडेंसी के तौर पर जोड़ें

implementation("com.google.mlkit:genai-speech-recognition:1.0.0-alpha1")

अपने ऐप्लिकेशन में Speech Recognition API को इंटिग्रेट करने के लिए, SpeechRecognizer क्लाइंट बनाएं. डिवाइस पर मौजूद ज़रूरी मॉडल की सुविधाओं की स्थिति देखें. अगर मॉडल पहले से डिवाइस पर मौजूद नहीं है, तो उसे डाउनलोड करें. SpeechRecognizerRequest में ऑडियो इनपुट तैयार करने के बाद, क्लाइंट का इस्तेमाल करके अनुमान लगाएं, ताकि Kotlin फ़्लो से स्ट्रीमिंग आउटपुट मिल सके. आखिर में, संसाधनों को रिलीज़ करने के लिए क्लाइंट को बंद करना न भूलें.

// 1. Create a SpeechRecognizer with desired options.
val options: SpeechRecognizerOptions =
    speechRecognizerOptions {
        locale = Locale.US
        preferredMode = SpeechRecognizerOptions.Mode.MODE_ADVANCED
    }
val speechRecognizer: SpeechRecognizer = SpeechRecognition.getClient(options)

// 2. Check if the recognition model is available or needs downloading.
launch {
    val status: Int = speechRecognizer.checkStatus()
    if (status == FeatureStatus.DOWNLOADABLE) {
        // 3. If needed, download the model and monitor progress.
        speechRecognizer.download.collect { downloadStatus ->
            when (downloadStatus) {
                is DownloadStatus.DownloadCompleted -> {
                    // Model is ready, start recognition.
                    startMyRecognition(speechRecognizer)
                }
                is DownloadStatus.DownloadFailed -> {
                    // Handle download failure (e.g., inform the user).
                }
                is DownloadStatus.DownloadProgress -> {
                    // Handle download progress (e.g., update a progress bar).
                }
            }
        }
    } else if (status == FeatureStatus.AVAILABLE) {
        // Model is already ready, start recognition immediately.
        startMyRecognition(speechRecognizer)
    } else {
        // Handle other statuses (e.g., DOWNLOADING, UNAVAILABLE).
    }
}

// 4. Define your recognition logic using a suspend function.
suspend fun startMyRecognition(recognizer: SpeechRecognizer) {
    // Create a request (e.g., specifying audio source).
    val request: SpeechRecognizerRequest
        = speechRecognizerRequest { audioSource = AudioSource.fromMic() }
    // Start recognition and process the continuous stream of responses.
    recognizer.startRecognition(request).collect {
        // Process the SpeechRecognitionResponse data here.
    }
}

// 5. Stop recognition and clean up resources when the session is complete.
launch {
    recognizer.stopRecognition()
    recognizer.close()
}

इन भाषाओं और डिवाइसों पर यह सुविधा काम करती है

मोड Locale
सामान्य en-US, fr-FR (बीटा), it-IT (बीटा), de-DE (बीटा), es-ES (बीटा), hi-IN (बीटा), ja-JP (बीटा), pt-BR (बीटा), tr-TR (बीटा), pl-PL (बीटा), cmn-Hans-CN (बीटा), ko-KR (बीटा), cmn-Hant-TW (बीटा), ru-RU (बीटा), vi-VN (बीटा)
बेहतर आम तौर पर, इन भाषाओं में सटीक नतीजे मिलते हैं: en-US, ko-KR, es-ES, fr-FR, de-DE, it-IT, pt-PT, cmn-Hans-CN, cmn-Hant-TW, ja-JP, th-TH, ru-RU, nl-NL (बीटा वर्शन), da-DK (बीटा वर्शन), sv-SE (बीटा वर्शन), pl-PL (बीटा वर्शन), hi-IN (बीटा वर्शन), vi-VN (बीटा वर्शन), id-ID (बीटा वर्शन), ar-SA (बीटा वर्शन), tr-TR (बीटा वर्शन)

इस्तेमाल किए जा सकने वाले डिवाइस

मोड यह सुविधा इन डिवाइसों पर काम करती है
सामान्य Android डिवाइसों में एपीआई लेवल 31 और इसके बाद के वर्शन का इस्तेमाल किया जा रहा हो.
बेहतर Pixel 10

सेटअप से जुड़ी सामान्य समस्याएं

ML Kit GenAI API, Gemini Nano को ऐक्सेस करने के लिए Android AICore ऐप्लिकेशन पर निर्भर करते हैं. जब किसी डिवाइस को सेट अप किया जाता है (रीसेट करने के बाद भी), तो AICore ऐप्लिकेशन को शुरू होने में समय लग सकता है. ऐसा तब भी हो सकता है, जब AICore ऐप्लिकेशन को रीसेट किया गया हो. जैसे, डेटा मिटाना, अनइंस्टॉल करना, और फिर से इंस्टॉल करना. इस वजह से, AICore ऐप्लिकेशन को शुरू होने में समय लग सकता है. इसमें सर्वर से नए कॉन्फ़िगरेशन डाउनलोड करना भी शामिल है. इस वजह से, ऐसा हो सकता है कि ML Kit के GenAI API उम्मीद के मुताबिक काम न करें. यहां, सेटअप से जुड़ी सामान्य गड़बड़ियों के मैसेज दिए गए हैं. साथ ही, उन्हें ठीक करने का तरीका भी बताया गया है:

गड़बड़ी के मैसेज का उदाहरण इस समस्या को कैसे ठीक करें
AICore में गड़बड़ी हुई है. गड़बड़ी का टाइप 4-CONNECTION_ERROR है और गड़बड़ी का कोड 601-BINDING_FAILURE है: AICore सेवा बाइंड नहीं हो सकी. ऐसा तब हो सकता है, जब डिवाइस सेटअप करने के तुरंत बाद ML Kit GenAI API का इस्तेमाल करके ऐप्लिकेशन इंस्टॉल किया गया हो या ऐप्लिकेशन इंस्टॉल होने के बाद AICore को अनइंस्टॉल कर दिया गया हो. AICore ऐप्लिकेशन को अपडेट करने के बाद, अपने ऐप्लिकेशन को फिर से इंस्टॉल करने से यह समस्या ठीक हो जाएगी.
AICore में गड़बड़ी हुई है. गड़बड़ी का टाइप 3-PREPARATION_ERROR और गड़बड़ी का कोड 606-FEATURE_NOT_FOUND है: सुविधा ... उपलब्ध नहीं है. ऐसा तब हो सकता है, जब AICore ने नए कॉन्फ़िगरेशन डाउनलोड न किए हों. डिवाइस के इंटरनेट से कनेक्ट होने पर, अपडेट होने में कुछ मिनट से लेकर कुछ घंटे तक लग सकते हैं. डिवाइस को रीस्टार्ट करने से, अपडेट की प्रोसेस तेज़ हो सकती है.

ध्यान दें कि अगर डिवाइस का बूटलोडर अनलॉक है, तो आपको यह गड़बड़ी भी दिखेगी. यह एपीआई, अनलॉक किए गए बूटलोडर वाले डिवाइसों के साथ काम नहीं करता.
AICore में गड़बड़ी हुई है. गड़बड़ी का टाइप 1-DOWNLOAD_ERROR है और गड़बड़ी का कोड 0-UNKNOWN है: सुविधा ... में गड़बड़ी हुई है. गड़बड़ी की स्थिति 0 है और गड़बड़ी esz: UNAVAILABLE है: होस्ट ... को हल नहीं किया जा सका इंटरनेट कनेक्शन चालू रखें. कुछ मिनट इंतज़ार करें और फिर से कोशिश करें.

नमूना कोड

  • GitHub पर, ML Kit Speech Recognition API का कोड सैंपल देखें