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ırkencheckStatus()yöntemiFeatureStatus.UNAVAILABLEdeğ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:
- İstemciyi başlatma:
SpeechSynthesizerOptionsyapılandırma nesnesi ileterekSpeechSynthesizeristemci örneği oluşturun. Tüm dilleri desteklemek için tek bir istemci örneği yeterlidir. Seçenekler nesnenizde belirtilen yerel ayar, yalnızcagetSupportedVoices()yöntemi tarafından döndürülen varsayılan dil listesini belirler. - Modeli indirme: Hedef sesinizin kullanılabilir olup olmadığını kontrol edin. Durum
FeatureStatus.DOWNLOADABLEise ses modelini cihaza indirmek içindownload()yöntemini çağırın. - İçeriği sentezleme: Giriş metninizi ve hedef sesi içeren bir
SpeechSynthesizerRequestnesnesi oluşturun. Sesi oluşturmak, oynatma durumu güncellemelerini ve ses parçalarını toplamak içinsynthesize()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. |