GenAI Text-to-Speech API

Mit der GenAI Text-to-Speech API von ML Kit können Sie Textinhalte in Sprachaudio synthetisieren. Die Text-to-Speech API verwendet ein generatives KI-Modell, um eine hochwertige Sprachsynthese zu ermöglichen.

Wir empfehlen, nach Möglichkeit die ML Kit Text-to-Speech API zu verwenden, da sie sehr menschenähnliche Stimmen bietet. Wenn sie nicht verfügbar ist, können Sie stattdessen die TextToSpeech API der Android-Plattform verwenden.

Hauptmerkmale

  • Einheitliche Download- und Inferenzoptionen in einem einzigen SDK.
  • Kotlin-First-API, die Koroutinen und Flow verwendet, um den Wiedergabestatus und Audio zu streamen.

Vorbereitung

Damit Sie die Text-to-Speech API verwenden können, müssen die folgenden Anforderungen erfüllt sein:

  • Du hast eines der folgenden unterstützten Geräte:
    • Google: Pixel 8, Pixel 9, Pixel 10, Pixel 11
    • Samsung: Galaxy S25, Galaxy S26, Galaxy Z Fold8, Galaxy Z Fold8 Ultra, Galaxy Z Flip8
  • Sie haben die aktuelle Version der App für Spracherkennung und -Synthese (com.google.android.tts) von Google Play. Wenn die App fehlt oder veraltet ist, gibt die Methode checkStatus() bei der Implementierung von Text-zu-Sprache FeatureStatus.UNAVAILABLE zurück.
  • Ihr Projekt verwendet eine SDK-Mindestversion (minSdk) von 26 oder höher.

Jetzt starten

Fügen Sie zuerst die ML Kit-Abhängigkeit für die Text-zu-Sprache der Datei build.gradle.kts (oder build.gradle) auf Modulebene hinzu:

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 einbinden

So verwenden Sie die Text-to-Speech API:

  1. Client initialisieren: Erstellen Sie eine SpeechSynthesizer-Clientinstanz, indem Sie ein SpeechSynthesizerOptions-Konfigurationsobjekt übergeben. Sie benötigen nur eine einzige Clientinstanz, um alle Sprachen zu unterstützen. Das im Optionsobjekt angegebene Gebietsschema bestimmt nur die Standard-Sprachliste, die von der Methode getSupportedVoices() zurückgegeben wird.
  2. Modell herunterladen: Prüfen Sie die Verfügbarkeit der Zielstimme. Wenn der Status FeatureStatus.DOWNLOADABLE lautet, rufen Sie die Methode download() auf, um das Sprachmodell auf das Gerät herunterzuladen.
  3. Inhalt synthetisieren: Erstellen Sie ein SpeechSynthesizerRequest-Objekt, das Ihren Eingabetext und die Zielstimme enthält. Rufen Sie die Methode synthesize() auf, um die Audioinhalte zu generieren und die Updates zum Wiedergabestatus und die Audioblöcke zu erfassen.
// 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()

Unterstützte Stimmen

Die ML Kit Text-to-Speech API unterstützt die folgenden Stimmen. Wählen Sie eine Stimme anhand des Namens mit dem Attribut VoiceInfo.name aus.

  • star02: weiblich, mittlere Tonlage
  • star04: männlich, mittelhohe Tonlage
  • star05: männlich, niedrige Tonlage
  • star08: weiblich, niedrige Tonlage
  • star11: männlich, mittlere Tonlage, jünger klingend
  • star12: weiblich, mittelhohe Tonlage
  • star13: männlich, mittlere Tonlage
  • star16: weiblich, mitteltiefe Tonlage

Unterstützte Sprachen

Die ML Kit Text-to-Speech API unterstützt die folgenden Sprachen:

  • Arabisch (ar-XA)
  • Dänisch (da-DK)
  • Deutsch (de-DE)
  • Englisch (en-GB)
  • Englisch (en-US)
  • Spanisch (es-ES)
  • Spanisch (es-US)
  • Französisch (fr-CA)
  • Französisch (fr-FR)
  • Hindi (hi-IN)
  • Indonesisch (id-ID)
  • Italienisch (it-IT)
  • Japanisch (ja-JP)
  • Koreanisch (ko-KR)
  • Norwegisch (nb-NO)
  • Niederländisch (nl-NL)
  • Polnisch (pl-PL)
  • Portugiesisch (pt-BR)
  • Russisch (ru-RU)
  • Schwedisch (sv-SE)
  • Türkisch (tr-TR)

Häufig auftretende Probleme bei der Einrichtung

Hier sind einige häufige Probleme und Tipps zur Fehlerbehebung:

Problem Mögliche Ursache Empfohlene Fehlerbehebung
Die Stimmenliste (aus der Methode getSupportedVoices()) ist leer. Das Gerät wird nicht unterstützt oder die App „Spracherkennung und -synthese“ fehlt oder ist veraltet. Prüfen Sie, ob Ihr Gerät unterstützt wird, und aktualisieren Sie die App „Spracherkennung und -Synthese“.
Die Methode checkStatus() gibt FeatureStatus.UNAVAILABLE zurück. Das Gerät wird nicht unterstützt oder die App „Spracherkennung und -synthese“ fehlt oder ist veraltet. Prüfen Sie, ob Ihr Gerät unterstützt wird, und aktualisieren Sie die App „Spracherkennung und -Synthese“.
Die Methode checkStatus() gibt FeatureStatus.DOWNLOADABLE zurück. Die Stimme wurde noch nicht auf das Gerät heruntergeladen. Rufen Sie die Methode download() auf und warten Sie, bis sie abgeschlossen ist, bevor Sie die Methode synthesize() aufrufen.
Der Download schlägt fehl oder wird nicht fortgesetzt. Keine Netzwerkverbindung. Versuchen Sie es noch einmal, wenn das Gerät online ist.