Avec l'API GenAI Text-to-Speech de ML Kit, vous pouvez synthétiser du contenu textuel en contenu audio. L'API Text-to-Speech utilise un modèle d'IA générative pour fournir une synthèse vocale de haute qualité.
Nous vous recommandons d'utiliser l'API ML Kit Text-to-Speech dans la mesure du possible, car elle fournit des voix très humaines. Toutefois, si elle n'est pas disponible, vous pouvez utiliser l'API TextToSpeech de la plate-forme Android à la place.
Capacités clés
- Options de téléchargement et d'inférence unifiées dans un seul SDK.
- API Kotlin-first qui utilise des coroutines et Flow pour diffuser l'état de lecture et l'audio.
Prérequis
Pour utiliser l'API Text-to-Speech, vous devez remplir les conditions suivantes :
- Vous possédez l'un des appareils compatibles suivants :
- Google : Pixel 8, Pixel 9, Pixel 10, Pixel 11
- Samsung : Galaxy S25, Galaxy S26, Galaxy Z Fold8, Galaxy Z Fold8 Ultra, Galaxy Z Flip8
- Vous disposez de la dernière version de l'application Reconnaissance et synthèse vocales (
com.google.android.tts) sur Google Play. Si l'application est manquante ou obsolète, la méthodecheckStatus()renvoieFeatureStatus.UNAVAILABLElors de l'implémentation de la synthèse vocale. - Votre projet utilise une version minimale du SDK (
minSdk) de 26 ou plus.
Commencer
Pour commencer, ajoutez la dépendance ML Kit Text-to-Speech au fichier build.gradle.kts (ou build.gradle) au niveau du module :
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'
}
Intégrer l'API Text-to-Speech
Pour utiliser l'API Text-to-Speech, procédez comme suit :
- Initialisez le client : créez une instance de client
SpeechSynthesizeren transmettant un objet de configurationSpeechSynthesizerOptions. Vous n'avez besoin que d'une seule instance client pour prendre en charge toutes les langues. Les paramètres régionaux spécifiés dans votre objet d'options déterminent simplement la liste de langues par défaut renvoyée par la méthodegetSupportedVoices(). - Télécharger le modèle : vérifiez la disponibilité de votre voix cible. Si l'état est
FeatureStatus.DOWNLOADABLE, appelez la méthodedownload()pour télécharger l'empreinte vocale sur l'appareil. - Synthétiser le contenu : créez un objet
SpeechSynthesizerRequestcontenant votre texte d'entrée et la voix cible. Appelez la méthodesynthesize()pour générer l'audio, et collectez les mises à jour de l'état de lecture et les segments 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()
Voix compatibles
L'API Text-to-Speech de ML Kit est compatible avec les voix suivantes. Sélectionnez une voix par nom à l'aide de la propriété VoiceInfo.name.
- star02 : femme, ton moyen
- star04 : homme, ton moyennement aigu
- star05 : homme, ton grave
- star08 : femme, ton grave
- star11 : homme, ton moyen, voix jeune
- star12 : femme, tonalité moyennement aiguë
- star13 : homme, ton moyen
- star16 : femme, ton moyen grave
Langues disponibles
L'API Text-to-Speech de ML Kit est compatible avec les paramètres régionaux suivants :
- Arabe (ar-XA)
- Danois (da-DK)
- German (de-DE)
- English (en-GB)
- English (en-US)
- Spanish (es-ES)
- Espagnol (es-US)
- Français (fr-CA)
- French (fr-FR)
- Hindi (hi-IN)
- Indonesian (id-ID)
- Italian (it-IT)
- Japanese (ja-JP)
- Coréen (ko-KR)
- Norvégien (nb-NO)
- Dutch (nl-NL)
- Polonais (pl-PL)
- Portugais (pt-BR)
- Russe (ru-RU)
- Suédois (sv-SE)
- Turkish (tr-TR)
Problèmes de configuration courants
Voici quelques problèmes courants et des conseils pour les résoudre :
| Problème | Motif possible | Correction recommandée |
|---|---|---|
La liste des voix (de la méthode getSupportedVoices()) est vide. |
L'appareil n'est pas compatible, ou l'application Reconnaissance et synthèse vocales est manquante ou obsolète. | Vérifiez que votre appareil est compatible et mettez à jour l'application Reconnaissance et synthèse vocales. |
La méthode checkStatus() renvoie FeatureStatus.UNAVAILABLE. |
L'appareil n'est pas compatible, ou l'application Reconnaissance et synthèse vocales est manquante ou obsolète. | Vérifiez que votre appareil est compatible et mettez à jour l'application Speech Recognition & Synthesis. |
La méthode checkStatus() renvoie FeatureStatus.DOWNLOADABLE. |
La voix n'est pas encore téléchargée sur l'appareil. | Appelez la méthode download() et attendez qu'elle se termine avant d'appeler la méthode synthesize(). |
| Le téléchargement échoue ou ne progresse pas. | Aucune connexion réseau. | Réessayez lorsque l'appareil sera en ligne. |