ML Kit के GenAI Speech Recognition API की मदद से, ऑडियो कॉन्टेंट को टेक्स्ट में बदला जा सकता है. यह एपीआई इन मोड के साथ काम करता है:
- बेसिक: Speech Recognition API, उपयोगकर्ता के डिवाइस पर मौजूद परंपरागत बोली की पहचान मॉडल का इस्तेमाल करता है. यह SpeechRecognizer API की तरह ही काम करता है
- आम तौर पर, यह सुविधा Android के एपीआई लेवल 31 और इसके बाद के वर्शन वाले ज़्यादातर डिवाइसों पर उपलब्ध है
- ऐडवांस: Speech Recognition API, GenAI मॉडल का इस्तेमाल करता है. इससे, ज़्यादा भाषाओं में काम करने की सुविधा मिलती है और बेहतर क्वालिटी मिलती है
- Pixel 10 और Pixel 11 डिवाइसों पर उपलब्ध है. साथ ही, इसे अन्य डिवाइसों के लिए भी उपलब्ध कराने पर काम किया जा रहा है
मुख्य सुविधाएं
- यह कुकी, माइक्रोफ़ोन या ऑडियो फ़ाइल से स्ट्रीमिंग इनपुट को कैप्चर करती है
- ट्रांसक्राइब किया गया टेक्स्ट, लगातार स्ट्रीम के तौर पर उपलब्ध कराया जाता है. ऐसा हो सकता है कि शुरुआती तौर पर यह टेक्स्ट अधूरा हो और इसमें बदलाव किया जा सकता हो. हालांकि, बाद में यह पूरा टेक्स्ट बन जाता है.
परिणामों के उदाहरण
| ऑडियो | मोड | स्थान-भाषा | ट्रांसक्रिप्शन |
|---|---|---|---|
| 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()
}
ऑडियो इनपुट से जुड़ी ज़रूरी शर्तें
GenAI Speech Recognition API, माइक्रोफ़ोन या फ़ाइल डिस्क्रिप्टर के ज़रिए कस्टम सोर्स से इनपुट स्वीकार करता है.
अगर AudioSource.fromPfd(parcelFileDescriptor) का इस्तेमाल किया जाता है, तो इनपुट ऑडियो को इन ज़रूरी शर्तों को पूरा करना होगा:
- फ़ॉर्मैट: रॉ, हेडरलेस 16-बिट पीसीएम.
- चैनल: मोनो (सिंगल चैनल).
- सैंपल रेट: 16 किलोहर्ट्ज़.
ज़्यादातर मामलों में, AudioSource.fromMic() का इस्तेमाल करने का सुझाव दिया जाता है, क्योंकि यह इन शर्तों को अपने-आप मैनेज करता है.
इन भाषाओं और डिवाइसों पर यह सुविधा काम करती है
| मोड | 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, Pixel 11 |
सेटअप से जुड़ी सामान्य समस्याएं
ML Kit GenAI API, Gemini Nano को ऐक्सेस करने के लिए Android 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 है: होस्ट ... को हल नहीं किया जा सका | नेटवर्क कनेक्शन चालू रखें. कुछ मिनट इंतज़ार करें और फिर से कोशिश करें. |
checkFeatureStatus() या checkStatus() को कॉल करने के बाद ही, इससे जुड़ा कोई यूज़र इंटरफ़ेस (यूआई) दिखाएं. इससे आपके ऐप्लिकेशन के उपयोगकर्ताओं को ये गड़बड़ियां नहीं दिखेंगी.
सैंपल कोड
- GitHub पर, ML Kit Speech Recognition API का कोड सैंपल देखें