Tâche Text To Speech
Résumé
- Nom interne :
TextToSpeech - Catégorie : Notifications
- Objectif : Lire un texte à voix haute via le moteur de synthèse vocale de l'appareil. La tâche attend la fin de la lecture.
- Type de tâche : Normale
Compatibilité
-
Version AndroMate minimale :
1.1.0 -
Version AndroMate maximale :
1.1.0 -
Android minimum :
Android 13 (API 33) -
Android testé maximum :
Android 16 (API 36) -
Permissions requises : Aucune
Description détaillée
La tâche Text To Speech lit un texte à voix haute via le moteur Android TextToSpeech. Elle fonctionne en arrière-plan (foreground service) — c'est une sortie audio, pas de l'UI, et ne nécessite aucune permission runtime spéciale.
Le moteur TTS a un cycle de vie asynchrone (init → speak → done). La tâche gère cela en interne et bloque jusqu'à la fin de la lecture (ou expiration du timeout), puis libère le moteur. L'attente est obligatoire : libérer le moteur trop tôt couperait la parole.
Si le moteur échoue à s'initialiser, si les données de la langue choisie sont absentes, ou si le timeout expire, la tâche lève TTS-TASK-001.
Paramètres d'entrée
| Paramètre | Type | Requis | Valeurs possibles / Règles | Compatibilité Android | Compatibilité AndroMate | Défaut |
|---|---|---|---|---|---|---|
tts_text |
String | Oui | Texte à lire (interpolation supportée) | Android 13 (API 33) → Android 16 (API 36) | 1.1.0 → 1.1.0 | "" |
language |
Enum / String | Non | Tag BCP-47 (en, fr, ar, …) ; vide → langue de l'appareil |
Android 13 (API 33) → Android 16 (API 36) | 1.1.0 → 1.1.0 | "" |
timeout_s |
Integer | Non | Timeout de sécurité pour init + lecture (secondes) | Android 13 (API 33) → Android 16 (API 36) | 1.1.0 → 1.1.0 | 30 |
Paramètres de sortie
Cette tâche ne produit aucune variable de sortie. Elle retourne un VoidResult en cas de succès.
Exceptions
| Code | Condition de déclenchement |
|---|---|
TTS-TASK-001 |
Échec d'init du moteur TTS, langue indisponible, ou timeout expiré |
Diagramme d'exécution
flowchart TD
Start([▶ TextToSpeech]) --> Resolve[🔧 Résolution texte & langue]
Resolve --> Init[⚙️ Init moteur TTS\nattente onInit]
Init --> Ok{Init réussie ?}
Ok -->|Non| Throw([❌ TTS-TASK-001])
Ok -->|Oui| Lang[🌐 Définir la langue\nfallback défaut]
Lang --> Speak[🗣️ speak QUEUE_FLUSH]
Speak --> Wait[⏳ Attente onDone / timeout]
Wait --> Shutdown[🧹 libération moteur]
Shutdown --> Success([✅ VoidResult])
style Start fill:#e3f2fd
style Success fill:#c8e6c9
style Throw fill:#ffcdd2
style Init fill:#fff9c4
style Speak fill:#f3e5f5
style Wait fill:#fff9c4
Fonctionnement :
- Résolution :
tts_textetlanguagesont résolus avec le contexte AndroMate - Init : le moteur TTS est initialisé ; la tâche attend le callback
onInit(jusqu'àtimeout_s) - Langue : la langue demandée est définie ; si non supportée, fallback sur la langue de l'appareil
- Lecture : le texte est lu avec
QUEUE_FLUSH - Attente : la tâche bloque jusqu'au callback
onDone(ou le timeout) - Libération : le moteur est libéré
- Résultat : retourne
VoidResult, ou lèveTTS-TASK-001en cas d'échec
Exemples de code
Exemple 1 — Lire un message en anglais
{
"TextToSpeech": [
{
"id": "1",
"title": "Parler",
"tts_text": "Test completed successfully",
"language": "en",
"timeout_s": 30
}
]
}
Exemple 2 — Lire une variable dans la langue de l'appareil
{
"TextToSpeech": [
{
"id": "2",
"title": "Annoncer résultat",
"tts_text": "La vitesse est de $speed_kmh kilomètres par heure",
"language": ""
}
]
}
Détails des paramètres d'entrée
tts_text — Texte à lire
Le texte lu à voix haute. Supporte l'interpolation $variable et ${SPECIAL_VAR}.
language — Langue
Un tag de langue BCP-47 sélectionnant la langue de la voix :
| Valeur | Langue |
|---|---|
"" |
Langue de l'appareil |
en |
Anglais |
fr |
Français |
ar |
Arabe |
es |
Espagnol |
de |
Allemand |
it |
Italien |
Si la langue choisie n'est pas disponible sur l'appareil, le moteur retombe sur la langue par défaut.
timeout_s — Timeout de sécurité
Temps maximum (en secondes) d'attente pour l'init du moteur et la lecture. Évite que le workflow ne bloque indéfiniment si le moteur se fige. Défaut 30.
Détails des paramètres de sortie
Cette tâche ne produit aucune variable de sortie.