GenAI Text to Speech API

ML Kit'in GenAI Text to Speech API'si ile metin içeriğini konuşma sesine dönüştürebilirsiniz. Text-to-Speech API, yüksek kaliteli konuşma sentezi sağlamak için üretken yapay zeka modeli kullanır.

İnsan sesine çok benzeyen sesler sağladığı için mümkün olduğunda ML Kit Text to Speech API'yi kullanmanızı öneririz. Ancak bu API kullanılamıyorsa Android platformu TextToSpeech API'yi kullanabilirsiniz.

Temel özellikler

  • Tek bir SDK'da birleştirilmiş indirme ve çıkarım seçenekleri.
  • Oynatma durumunu ve sesi aktarmak için eş yordamları ve Flow'u kullanan, Kotlin öncelikli API.

Ön koşullar

Text-to-Speech API'yi kullanmak için aşağıdaki koşulları karşılamanız gerekir:

  • Aşağıdaki desteklenen cihazlardan birine sahip olmanız gerekir:
    • 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'den Konuşma Tanıma ve Sentezleme uygulamasının (com.google.android.tts) en yeni sürümünü yüklediğinizden emin olun. Uygulama eksik veya güncel değilse metin okuma uygulanırken checkStatus() yöntemi FeatureStatus.UNAVAILABLE değerini döndürür.
  • Projeniz, minimum SDK (minSdk) sürümü olarak 26 veya daha yeni bir sürümü kullanıyor.

Başlayın

Başlamak için ML Kit Text to Speech bağımlılığını modül düzeyindeki build.gradle.kts (veya build.gradle) dosyanıza ekleyin:

Kotlin

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

Modern

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

Text-to-Speech API'yi entegre etme

Text-to-Speech API'yi kullanmak için aşağıdaki adımları uygulayın:

  1. İstemciyi başlatma: SpeechSynthesizerOptions yapılandırma nesnesi ileterek SpeechSynthesizer istemci örneği oluşturun. Tüm dilleri desteklemek için tek bir istemci örneği yeterlidir. Seçenekler nesnenizde belirtilen yerel ayar, yalnızca getSupportedVoices() yöntemi tarafından döndürülen varsayılan dil listesini belirler.
  2. Modeli indirme: Hedef sesinizin kullanılabilir olup olmadığını kontrol edin. Durum FeatureStatus.DOWNLOADABLE ise ses modelini cihaza indirmek için download() yöntemini çağırın.
  3. İçeriği sentezleme: Giriş metninizi ve hedef sesi içeren bir SpeechSynthesizerRequest nesnesi oluşturun. Sesi oluşturmak, oynatma durumu güncellemelerini ve ses parçalarını toplamak için synthesize() yöntemini çağırın.
// 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()

Desteklenen sesler

ML Kit Text to Speech API aşağıdaki sesleri destekler. VoiceInfo.name özelliğini kullanarak bir sesi adıyla seçin.

  • star02: kadın, orta perde
  • star04: erkek, orta-yüksek perde
  • star05: erkek, düşük perde
  • star08: kadın, düşük perde
  • star11: erkek, orta perde, genç sesli
  • star12: kadın, orta-yüksek perde
  • star13: erkek, orta perde
  • star16: kadın, orta-düşük perde

Desteklenen diller

ML Kit Text to Speech API aşağıdaki yerel ayarları destekler:

  • Arapça (ar-XA)
  • Danca (da-DK)
  • German (de-DE)
  • İngilizce (en-GB)
  • Türkçe
  • İspanyolca (es-ES)
  • İspanyolca (es-US)
  • Fransızca (fr-CA)
  • French (fr-FR)
  • Hindi (hi-IN)
  • Indonesian (id-ID)
  • İtalyanca (it-IT)
  • Japonca (ja-JP)
  • Korece (ko-KR)
  • Norveççe (nb-NO)
  • Dutch (nl-NL)
  • Lehçe (pl-PL)
  • Portekizce (pt-BR)
  • Rusça (ru-RU)
  • İsveççe (sv-SE)
  • Turkish (tr-TR)

Sık karşılaşılan kurulum sorunları

Yaygın olarak karşılaşılan bazı sorunlar ve sorun giderme ipuçları aşağıda açıklanmaktadır:

Sorun Olası neden Önerilen düzeltme
Ses listesi (getSupportedVoices() yönteminden) boş. Cihaz desteklenmiyor veya Ses Tanıma ve Sentez uygulaması eksik ya da güncel değil. Cihazınızın desteklendiğinden emin olun ve Konuşma Tanıma ve Sentezleme uygulamasını güncelleyin.
checkStatus() yöntemi FeatureStatus.UNAVAILABLE değerini döndürür. Cihaz desteklenmiyor veya Ses Tanıma ve Sentez uygulaması eksik ya da güncel değil. Cihazınızın desteklendiğinden emin olun ve Konuşma Tanıma ve Sentezleme uygulamasını güncelleyin.
checkStatus() yöntemi FeatureStatus.DOWNLOADABLE değerini döndürür. Ses henüz cihaza indirilmemiştir. download() yöntemini çağırın ve synthesize() yöntemini çağırmadan önce işlemin tamamlanmasını bekleyin.
İndirme işlemi başarısız oluyor veya ilerlemiyor. Ağ bağlantısı yok. Cihaz internete bağlandığında tekrar deneyin.