जेन एआई की मदद से, लिखे गए शब्दों को सुनने की सुविधा देने वाला एपीआई

ML Kit के जेन एआई टेक्स्ट-टू-स्पीच एपीआई की मदद से, टेक्स्ट कॉन्टेंट को स्पीच ऑडियो में बदला जा सकता है. Text to Speech API, अच्छी क्वालिटी में स्पीच सिंथेसिस उपलब्ध कराने के लिए, जनरेटिव एआई मॉडल का इस्तेमाल करता है.

हमारा सुझाव है कि जब भी संभव हो, ML Kit के लिखे गए शब्दों को सुनने की सुविधा API का इस्तेमाल करें. इससे आपको इंसानों जैसी आवाज़ें मिलती हैं. हालांकि, अगर यह उपलब्ध नहीं है, तो इसके बजाय Android प्लैटफ़ॉर्म के TextToSpeech API का इस्तेमाल किया जा सकता है.

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

  • एक ही एसडीके में, डाउनलोड करने और अनुमान लगाने के विकल्प उपलब्ध हैं.
  • Kotlin-फ़र्स्ट एपीआई, जो कोरूटीन और Flow का इस्तेमाल करके, प्लेबैक स्टेटस और ऑडियो को स्ट्रीम करता है.

ज़रूरी शर्तें

Text to Speech API का इस्तेमाल करने के लिए, आपको ये ज़रूरी शर्तें पूरी करनी होंगी:

  • आपके पास इनमें से कोई एक डिवाइस हो:
    • Google: Pixel 8, Pixel 9, Pixel 10, Pixel 11
    • Samsung: Galaxy S25, Galaxy S26, Galaxy Z Fold8, Galaxy Z Fold8 Ultra, Galaxy Z Flip8
  • आपके पास Google Play से डाउनलोड किया गया, Speech Recognition & Synthesis ऐप्लिकेशन (com.google.android.tts) का नया वर्शन हो. अगर ऐप्लिकेशन मौजूद नहीं है या पुराना है, तो लिखे गए शब्दों को सुनने की सुविधा लागू करते समय, checkStatus() मेथड FeatureStatus.UNAVAILABLE दिखाता है.
  • आपके प्रोजेक्ट में, SDK टूल (minSdk) का वर्शन 26 या इसके बाद का इस्तेमाल किया जा रहा हो.

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

शुरू करने के लिए, अपने मॉड्यूल-लेवल की build.gradle.kts (या build.gradle) फ़ाइल में, ML Kit की लिखे गए शब्दों को सुनने की सुविधा वाली डिपेंडेंसी जोड़ें:

Kotlin

dependencies {
    // ML Kit GenAI TTS SDK
    implementation("com.google.mlkit:genai-text-to-speech:1.0.0-alpha1")
}

ग्रूवी

dependencies {
    // ML Kit GenAI TTS SDK
    implementation 'com.google.mlkit:genai-text-to-speech:1.0.0-alpha1'
}

Text to Speech API को इंटिग्रेट करना

Text to Speech API का इस्तेमाल करने के लिए, यह तरीका अपनाएं:

  1. क्लाइंट को शुरू करें: SpeechSynthesizerOptions कॉन्फ़िगरेशन ऑब्जेक्ट को पास करके, SpeechSynthesizer क्लाइंट इंस्टेंस बनाएं. सभी भाषाओं के लिए, आपको सिर्फ़ एक क्लाइंट इंस्टेंस की ज़रूरत होगी. आपके options ऑब्जेक्ट में तय की गई स्थान-भाषा, getSupportedVoices() तरीके से मिलने वाली डिफ़ॉल्ट भाषा की सूची तय करती है.
  2. मॉडल डाउनलोड करें: देखें कि आपकी टारगेट आवाज़ उपलब्ध है या नहीं. अगर स्टेटस FeatureStatus.DOWNLOADABLE है, तो डिवाइस पर आवाज़ का मॉडल डाउनलोड करने के लिए, download() वाले तरीके को कॉल करें.
  3. कॉन्टेंट को सिंथेसाइज़ करना: इनपुट टेक्स्ट और टारगेट वॉइस वाला SpeechSynthesizerRequest ऑब्जेक्ट बनाएं. ऑडियो जनरेट करने के लिए, synthesize() वाले तरीके को कॉल करें. साथ ही, ऑडियो चलाने की स्थिति के अपडेट और ऑडियो के हिस्सों को इकट्ठा करें.
// Initialize the `SpeechSynthesizer` client.
// One client serves every language. `Locale.US` is only the default list locale.
val options = speechSynthesizerOptions(Locale.US)
val client = SpeechSynthesis.getClient(options)

// Query voices for multiple languages using the same client instance.
val englishVoice = client.getSupportedVoices().first() // Uses the default `Locale.US`
val frenchVoice = client.getSupportedVoices(Locale.FRANCE).first()

// Check and download a voice model (for example, the French voice model).
if (client.checkStatus(frenchVoice) == FeatureStatus.DOWNLOADABLE) {
    client.download(frenchVoice).collect { status -> println("Download status: $status") }
}

// Construct the request.
// The `VoiceInfo` instance, `frenchVoice` here, determines the spoken language.
val request = SpeechSynthesizerRequest(
    input = SpeechSynthesizerRequest.Input.Text("Bonjour tout le monde", frenchVoice),
    audioAttributes = AudioAttributes.Builder()
        .setUsage(AudioAttributes.USAGE_MEDIA)
        .setContentType(AudioAttributes.CONTENT_TYPE_SPEECH)
        .build()
)

// Speak and collect streaming audio or status.
client.synthesize(request).collect { response ->
    when (response) {
        is SpeechSynthesizerResponse.StatusUpdate -> println("Playback status: ${response.status}")
        is SpeechSynthesizerResponse.AudioAvailable -> println("Audio chunk: ${response.audio.size} bytes")
        is SpeechSynthesizerResponse.Error -> println("Error: ${response.errorCode}")
    }
}

// Release resources when done.
client.close()

इस्तेमाल की जा सकने वाली आवाज़ें

ML Kit के Text to Speech API में, ये आवाज़ें इस्तेमाल की जा सकती हैं. VoiceInfo.name प्रॉपर्टी का इस्तेमाल करके, नाम के हिसाब से कोई आवाज़ चुनें.

  • star02: महिला, सामान्य आवाज़
  • star04: पुरुष, सामान्य से थोड़ी तेज़ आवाज़
  • star05: पुरुष, भारी आवाज़
  • star08: महिला, भारी आवाज़
  • star11: पुरुष, सामान्य आवाज़, युवा आवाज़
  • star12: महिला, सामान्य से थोड़ी तेज़ आवाज़
  • star13: पुरुष, सामान्य आवाज़
  • star16: महिला, सामान्य से थोड़ी गहरी आवाज़

इस्तेमाल की जा सकने वाली भाषाएं

ML Kit का लिखे गए शब्दों को सुनने की सुविधा API, इन स्थान-भाषाओं के साथ काम करता है:

  • ऐरेबिक (ar-XA)
  • डेनिश (da-DK)
  • जर्मन (de-DE)
  • अंग्रेज़ी (en-GB)
  • अंग्रेज़ी (en-US)
  • स्पेनिश (es-ES)
  • स्पैनिश (es-US)
  • फ़्रेंच (fr-CA)
  • फ़्रेंच (fr-FR)
  • हिन्दी (hi-IN)
  • इंडोनेशियन (id-ID)
  • इटैलियन (it-IT)
  • जैपनीज़ (ja-JP)
  • कोरियन (ko-KR)
  • नॉर्वेजियन (nb-NO)
  • डच (nl-NL)
  • पोलिश (pl-PL)
  • पॉर्चुगीज़ (pt-BR)
  • रशियन (ru-RU)
  • स्वीडिश (sv-SE)
  • टर्किश (tr-TR)

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

यहां कुछ आम समस्याएं और उन्हें हल करने के तरीके बताए गए हैं:

समस्या संभावित वजह सुझाया गया समाधान
आवाज़ों की सूची (getSupportedVoices() तरीके से मिली) खाली है. डिवाइस पर यह सुविधा काम नहीं करती या Speech Recognition & Synthesis ऐप्लिकेशन मौजूद नहीं है या पुराना है. देखें कि आपके डिवाइस पर यह सुविधा काम करती है या नहीं. इसके बाद, Speech Recognition & Synthesis ऐप्लिकेशन को अपडेट करें.
checkStatus() वाला तरीका, FeatureStatus.UNAVAILABLE दिखाता है. डिवाइस पर यह सुविधा काम नहीं करती या Speech Recognition & Synthesis ऐप्लिकेशन मौजूद नहीं है या पुराना है. देखें कि आपके डिवाइस पर यह सुविधा काम करती है या नहीं. इसके बाद, Speech Recognition & Synthesis ऐप्लिकेशन को अपडेट करें.
checkStatus() वाला तरीका, FeatureStatus.DOWNLOADABLE दिखाता है. आवाज़ को अब तक डिवाइस पर डाउनलोड नहीं किया गया है. download() वाले तरीके को कॉल करें और इसके पूरा होने का इंतज़ार करें. इसके बाद, synthesize() वाले तरीके को कॉल करें.
डाउनलोड नहीं हो पा रहा है या डाउनलोड की प्रोसेस आगे नहीं बढ़ रही है. इंटरनेट कनेक्शन नहीं है. डिवाइस के ऑनलाइन होने पर फिर से कोशिश करें.