Dengan API Text to Speech GenAI ML Kit, Anda dapat menyintesis konten teks menjadi audio ucapan. Text to Speech API menggunakan model AI generatif untuk menyediakan sintesis ucapan berkualitas tinggi.
Sebaiknya gunakan Text to Speech API ML Kit jika memungkinkan karena API ini
memberikan suara yang sangat mirip dengan manusia, tetapi jika tidak tersedia, Anda dapat menggunakan
TextToSpeech API
platform Android.
Kemampuan utama
- Opsi download dan inferensi terpadu dalam satu SDK.
- API yang mengutamakan Kotlin yang menggunakan coroutine dan Flow untuk melakukan streaming status pemutaran dan audio.
Prasyarat
Untuk menggunakan Text to Speech API, Anda harus memenuhi persyaratan berikut:
- Anda memiliki salah satu perangkat yang didukung berikut:
- Google: Pixel 8, Pixel 9, Pixel 10, Pixel 11
- Samsung: Galaxy S25, Galaxy S26, Galaxy Z Fold8, Galaxy Z Fold8 Ultra, Galaxy Z Flip8
- Anda memiliki
aplikasi Pengenalan & Sintesis Ucapan
(
com.google.android.tts) versi terbaru dari Google Play. Jika aplikasi tidak ada atau sudah tidak berlaku, saat menerapkan text to speech, metodecheckStatus()akan menampilkanFeatureStatus.UNAVAILABLE. - Project Anda menggunakan SDK minimum (
minSdk) versi 26 atau yang lebih tinggi.
Mulai
Untuk memulai, tambahkan dependensi Text to Speech ML Kit ke file build.gradle.kts (atau build.gradle) level modul Anda:
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'
}
Mengintegrasikan Text to Speech API
Untuk menggunakan Text to Speech API, ikuti langkah-langkah berikut:
- Lakukan inisialisasi klien: Buat instance klien
SpeechSynthesizerdengan meneruskan objek konfigurasiSpeechSynthesizerOptions. Anda hanya memerlukan satu instance klien untuk mendukung semua bahasa. Lokalitas yang ditentukan dalam objek opsi Anda hanya menentukan daftar bahasa default yang ditampilkan oleh metodegetSupportedVoices(). - Download model: Periksa ketersediaan suara target Anda. Jika
statusnya adalah
FeatureStatus.DOWNLOADABLE, panggil metodedownload()untuk mendownload model suara ke perangkat. - Sintesis konten: Buat objek
SpeechSynthesizerRequestyang berisi teks input dan suara target Anda. Panggil metodesynthesize()untuk membuat audio, serta mengumpulkan update status pemutaran dan gugus audio.
// 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()
Suara yang didukung
Text to Speech API ML Kit mendukung suara berikut. Pilih suara berdasarkan nama menggunakan properti VoiceInfo.name.
- star02: perempuan, nada suara sedang
- star04: laki-laki, nada suara sedang-tinggi
- star05: laki-laki, nada suara rendah
- star08: perempuan, nada suara rendah
- star11: laki-laki, nada suara sedang, terdengar lebih muda
- star12: perempuan, nada sedang-tinggi
- star13: laki-laki, nada suara sedang
- star16: perempuan, nada suara sedang-rendah
Bahasa yang didukung
Text to Speech API ML Kit mendukung lokalitas berikut:
- Arab (ar-XA)
- Denmark (da-DK)
- German (de-DE)
- Inggris (en-GB)
- Inggris (en-US)
- Spanyol (es-ES)
- Spanyol (es-US)
- Prancis (fr-CA)
- French (fr-FR)
- Hindi (hi-IN)
- Indonesian (id-ID)
- Italia (it-IT)
- Jepang (ja-JP)
- Korea (ko-KR)
- Norwegia (nb-NO)
- Dutch (nl-NL)
- Polandia (pl-PL)
- Portugis (pt-BR)
- Rusia (ru-RU)
- Swedia (sv-SE)
- Turkish (tr-TR)
Masalah penyiapan umum
Berikut beberapa masalah umum dan tips pemecahan masalah:
| Masalah | Kemungkinan alasan | Perbaikan yang direkomendasikan |
|---|---|---|
Daftar suara (dari metode getSupportedVoices()) kosong. |
Perangkat tidak didukung, atau aplikasi Pengenalan & Sintesis Ucapan tidak ada atau sudah tidak berlaku. | Pastikan perangkat Anda didukung dan update aplikasi Pengenalan dan Sintesis Ucapan. |
Metode checkStatus() menampilkan FeatureStatus.UNAVAILABLE. |
Perangkat tidak didukung, atau aplikasi Pengenalan & Sintesis Ucapan tidak ada atau sudah tidak berlaku. | Pastikan perangkat Anda didukung dan update aplikasi Pengenalan dan Sintesis Ucapan. |
Metode checkStatus() menampilkan FeatureStatus.DOWNLOADABLE. |
Suara belum didownload ke perangkat. | Panggil metode download() dan tunggu hingga selesai sebelum memanggil metode synthesize(). |
| Download gagal atau tidak berjalan. | Tidak ada koneksi jaringan. | Coba lagi saat perangkat online. |