GenAI Text to Speech API

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, metode checkStatus() akan menampilkan FeatureStatus.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:

  1. Lakukan inisialisasi klien: Buat instance klien SpeechSynthesizer dengan meneruskan objek konfigurasi SpeechSynthesizerOptions. 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 metode getSupportedVoices().
  2. Download model: Periksa ketersediaan suara target Anda. Jika statusnya adalah FeatureStatus.DOWNLOADABLE, panggil metode download() untuk mendownload model suara ke perangkat.
  3. Sintesis konten: Buat objek SpeechSynthesizerRequest yang berisi teks input dan suara target Anda. Panggil metode synthesize() 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.