Packs d'Annonces
Les packs d'annonces sont des collections de modèles de texte qui pilotent les annonces cabine pendant les vols. Chaque pack contient un ou plusieurs modèles liés à des phases de vol spécifiques, et le texte est converti en audio à l'aide de la synthèse vocale ElevenLabs. Cela permet aux compagnies aériennes virtuelles de diffuser des annonces PA réalistes et adaptées à chaque phase aux pilotes via les clients ACARS.
Chemin backoffice : backoffice/speech-packs
Accessible aux rôles : Administrateur Système, Administrateur
Structure du Pack
Chaque pack d'annonces possède les champs de premier niveau suivants :
| Champ | Description |
|---|---|
| Nom | Nom d'affichage du pack (ex. : "PA Standard Anglais", "Lufthansa Régional") |
| Description | Notes optionnelles sur l'utilisation prévue ou le public du pack |
| Actif | Bascule pour activer ou désactiver l'ensemble du pack |
Un pack contient un ou plusieurs modèles, chacun définissant une annonce unique jouée à un moment spécifique du vol.
Modèles
Chaque modèle au sein d'un pack d'annonces configure une annonce unique. Les modèles ont les champs suivants :
| Champ | Description |
|---|---|
| Phase de Déclenchement | La phase de vol qui déclenche cette annonce (voir le tableau ci-dessous) |
| Rôle Vocal | Soit COMMANDANT soit PERSONNEL_CABINE — détermine quel personnage délivre l'annonce |
| Profil Vocal | Lien vers un Profil Vocal qui définit la voix ElevenLabs et ses paramètres TTS |
| Substitution de Langue d'Annonce | Remplace optionnellement la Langue d'Annonce par défaut du profil vocal pour ce modèle |
| Texte du Modèle | Le corps de l'annonce, qui peut inclure des variables de modèle (voir ci-dessous) |
| Ordre de Tri | Classement numérique lorsque plusieurs modèles partagent la même phase de déclenchement |
| Actif | Bascule pour activer ou désactiver ce modèle individuel |
Phases de Déclenchement
Les modèles peuvent être déclenchés à ces phases de vol :
| Phase | Identifiant | Quand Elle Se Déclenche |
|---|---|---|
| Départ Porte | gate_departure | Avant le repoussage, encore à la porte |
| Repoussage | pushback | Pendant le repoussage depuis la porte |
| Roulage | taxi | Pendant le roulage vers la piste |
| Montée Initiale | climb_out | Après le décollage, pendant la montée initiale (60s après l'entrée en zone de montée) |
| Croisière | cruise | À l'atteinte de l'altitude de croisière |
| Descente | descend | Lorsque la descente commence près de la destination |
| Passage 10 000 | passing_10000 | En montée au passage de 10 000 ft après le décollage |
| Descente 10 000 | descending_10000 | En descente au passage de 10 000 ft à l'approche |
| Approche Finale | final_approach | En approche finale vers la piste |
| Après Atterrissage | after_landing | Après le toucher des roues et le roulage |
| Arrivée Porte | gate_arrival | À l'arrivée à la porte de destination |
Variables de Modèle
Le texte du modèle prend en charge des variables dynamiques qui sont résolues au moment de la génération en utilisant les données réelles du vol :
| Variable | Se Résout En | Exemple |
|---|---|---|
{salute} | Salutation selon l'heure de la journée basée sur la configuration de salutation de la langue d'annonce | "Bonjour" |
{flight_number} | Numéro de vol avec les chiffres prononcés en mots (localisé) | "un deux trois quatre" |
{destination} | Nom de la ville de l'aéroport d'arrivée | "Londres" |
{origin} | Nom de la ville de l'aéroport de départ | "Francfort" |
{airline} | Nom de la compagnie aérienne | "Lufthansa" |
{aircraft_type} | Nom de la flotte ou du type d'aéronef | "Airbus A320" |
{captain} | Nom du commandant de bord | "Commandant Mueller" |
{callsign} | Indicatif ATC | "Speedbird 42" |
Exemple de texte de modèle :
{salute}, mesdames et messieurs. Ici votre commandant de bord. Bienvenue à bord du vol {airline} {flight_number}
au départ de {origin} à destination de {destination}. Nous volerons aujourd'hui à bord d'un {aircraft_type}.
Veuillez vous assurer que vos ceintures de sécurité sont attachées et que vos tablettes sont en position verticale.
Assignation et Résolution de Priorité
Les packs d'annonces ne sont pas globaux par défaut. Ils doivent être explicitement assignés à une ou plusieurs des entités suivantes :
- Compagnies Aériennes — s'applique à tous les vols exploités par la compagnie
- Flottes — s'applique à tous les aéronefs de la flotte
- Sous-flottes — s'applique à tous les aéronefs de la sous-flotte
- Aéronefs — s'applique à un numéro de queue spécifique
- Aéroports — s'applique dans un contexte de départ ou d'arrivée
Lorsque plusieurs packs d'annonces s'appliquent à un vol donné (par exemple, un assigné à la compagnie et un autre à l'aéronef spécifique), le système résout les conflits en utilisant une hiérarchie de priorité. L'assignation la plus spécifique l'emporte :
| Priorité | Niveau d'Assignation | Description |
|---|---|---|
| 1 (la plus haute) | Aéronef | Pack assigné au numéro de queue spécifique |
| 2 | Aéroport d'Arrivée | Pack assigné à l'aéroport d'arrivée |
| 3 | Aéroport de Départ | Pack assigné à l'aéroport de départ |
| 4 | Sous-flotte | Pack assigné à la sous-flotte de l'aéronef |
| 5 | Flotte | Pack assigné à la flotte de l'aéronef |
| 6 (la plus basse) | Compagnie | Pack assigné à la compagnie exploitante |
Ce système de superposition vous permet de définir un pack de base au niveau de la compagnie puis de remplacer des annonces spécifiques pour des aéroports, types d'aéronefs ou numéros de queue particuliers. Par exemple, vous pourriez avoir un pack standard en anglais pour la compagnie mais assigner un pack bilingue aux aéronefs opérant vers Tokyo Narita.
Génération et Mise en Cache Audio
Lorsque le texte d'un modèle (après substitution des variables) est envoyé à ElevenLabs pour la synthèse, l'audio résultant est mis en cache en utilisant un hash SHA-256 du texte rendu. Cela signifie :
- Si exactement le même texte a été généré auparavant, l'audio en cache est réutilisé et ElevenLabs n'est pas appelé à nouveau.
- Changer toute valeur de variable (numéro de vol différent, destination différente) produit un hash différent et déclenche une nouvelle génération audio.
- Modifier le texte du modèle lui-même produira également un nouvel audio lors de la prochaine utilisation.
Format Audio et Effet PA
Les fragments audio générés sont stockés sous forme de fichiers MP3. Un effet microphone PA optionnel peut être appliqué pour simuler un système de PA cabine réaliste. Cette chaîne d'effets comprend :
- Filtre passe-bande — atténue les basses et hautes fréquences pour émuler un haut-parleur de cabine
- Compression — nivelle les pics et creux de volume
- Écho — ajoute une réverbération subtile typique de l'acoustique de cabine d'aéronef
Diffusion aux Clients
L'audio en cache est diffusé aux clients ACARS via le point de terminaison API :
GET /api/acars/sound
Le client demande les annonces pour la phase de vol actuelle, et le serveur retourne le(s) fragment(s) audio approprié(s) en fonction du pack d'annonces résolu et du contexte de vol actuel.
Conseils d'Utilisation
- Commencez avec un seul pack assigné au niveau de la compagnie pour couvrir tous les vols, puis ajoutez des packs spécialisés selon les besoins.
- Utilisez le champ ordre de tri pour séquencer plusieurs annonces dans la même phase de vol (ex. : accueil du commandant suivi du briefing sécurité du personnel de cabine au départ porte).
- Désactivez les modèles individuels avec la bascule actif plutôt que de les supprimer — cela préserve votre travail si vous souhaitez les réactiver plus tard.
- La substitution de langue d'annonce sur les modèles individuels est utile pour les annonces bilingues : créez deux modèles pour la même phase, un dans chaque langue, avec un ordre de tri approprié.
- Surveillez votre consommation ElevenLabs, car chaque rendu de texte unique consomme des crédits API. La mise en cache SHA-256 aide à minimiser les appels redondants.