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 MethodecheckStatus()bei der Implementierung von Text-zu-SpracheFeatureStatus.UNAVAILABLEzurü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:
- Client initialisieren: Erstellen Sie eine
SpeechSynthesizer-Clientinstanz, indem Sie einSpeechSynthesizerOptions-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 MethodegetSupportedVoices()zurückgegeben wird. - Modell herunterladen: Prüfen Sie die Verfügbarkeit der Zielstimme. Wenn der Status
FeatureStatus.DOWNLOADABLElautet, rufen Sie die Methodedownload()auf, um das Sprachmodell auf das Gerät herunterzuladen. - Inhalt synthetisieren: Erstellen Sie ein
SpeechSynthesizerRequest-Objekt, das Ihren Eingabetext und die Zielstimme enthält. Rufen Sie die Methodesynthesize()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. |