GenAI Text to Speech API

بااستفاده از GenAI Text to Speech API در ML Kit، می‌توانید محتوای نوشتاری را به گفتار صوتی ترکیب کنید. ‫Text to Speech API از مدل هوش مصنوعی زایا برای ارائه ترکیب گفتار با کیفیت بالا استفاده می‌کند.

توصیه می‌کنیم درصورت امکان از ML Kit Text to Speech API استفاده کنید زیرا صداهای بسیار شبیه به انسان ارائه می‌دهد، اما اگر دردسترس نباشد می‌توانید به‌جای آن از TextToSpeech API پلاتفرم Android استفاده کنید.

قابلیت‌های کلیدی

  • گزینه‌های بارگیری و استنتاج یکپارچه در یک کیت توسعه نرم‌افزار واحد.
  • میانای برنامه‌سازی کاربردی Kotlin-first که از روال‌های مشترک و 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
  • جدیدترین نسخه برنامه «ترکیب و تشخیص گفتار» (com.google.android.tts) را از Google Play داشته باشید. اگر برنامه وجود نداشته باشد یا قدیمی باشد، هنگام پیاده‌سازی نوشتار به گفتار، روش checkStatus() مقدار FeatureStatus.UNAVAILABLE را برمی‌گرداند.
  • پروژه شما از حداقل نسخه کیت توسعه نرم‌افزار (minSdk) ۲۶ یا بالاتر استفاده می‌کند.

شروع کنید

برای شروع، وابستگی «نوشتار به گفتار» ML Kit را به فایل سطح ماژول build.gradle.kts (یا build.gradle) اضافه کنید:

Kotlin

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

Groovy

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 ایجاد کنید. برای پشتیبانی از همه زبان‌ها، فقط به یک نمونه مشتری نیاز دارید. منطقه زبانی مشخص‌شده در شیء گزینه‌های شما فقط فهرست زبان پیش‌فرض برگردانده‌شده توسط روش 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 Text to Speech API از منطقه‌های زبانی زیر پشتیبانی می‌کند:

  • عربی (ar-XA)
  • دانمارکی (da-DK)
  • آلمانی (de-DE)
  • انگلیسی (en-GB)
  • انگلیسی (en-US)
  • اسپانیایی (اسپانیایی)
  • اسپانیایی (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()) خالی است. دستگاه پشتیبانی نمی‌شود یا برنامه «ترکیب و تشخیص گفتار» وجود ندارد یا قدیمی است. بررسی کنید که دستگاهتان پشتیبانی می‌شود و برنامه «تشخیص و ترکیب گفتار» را به‌روز کنید.
روش checkStatus() مقدار FeatureStatus.UNAVAILABLE را برمی‌گرداند. دستگاه پشتیبانی نمی‌شود یا برنامه «ترکیب و تشخیص گفتار» وجود ندارد یا قدیمی است. بررسی کنید که دستگاهتان پشتیبانی می‌شود و برنامه «تشخیص و ترکیب گفتار» را به‌روز کنید.
روش checkStatus() مقدار FeatureStatus.DOWNLOADABLE را برمی‌گرداند. صدا هنوز در دستگاه بارگیری نشده است. روش download() را فراخوانی کنید و منتظر بمانید تا تمام شود، سپس روش synthesize() را فراخوانی کنید.
بارگیری ناموفق است یا پیشرفتی ندارد. اتصال شبکه ندارید. وقتی دستگاه آنلاین شد، دوباره امتحان کنید.