Contenu requis du ZIP
- cover.jpg — image de couverture (format
.jpg).
- Fichiers audio au format
.mp3 ou .ogg. Les noms doivent correspondre aux
références dans story.json (ex. 001.ogg).
- story.json — fichier décrivant la structure de l'histoire (titre, couverture, chapitres,
commandes, audio, choix).
Nommage
- Le fichier JSON doit être nommé exactement
story.json.
Format de story.json — résumé
Champs requis:
- title -- titre de l'oravox, sera afficher dans la gallerie
- cover -- nom du fichier qui servira de couverture (cover.jpg)
- chapters -- Description des chapitres
Chaque chapitre doit contenir :
label : titre ou texte du chapitre.
commands : tableau de mots/expressions déclenchant le chapitre.
audio : nom du fichier audio à jouer (présent dans le ZIP).
choices : tableau d'identifiants des chapitres accessibles depuis ce chapitre (ex.
["002","003"]).
Champs additionel pour les chapitres
has: tableau (intro, outro, timeout) - permet de determiner si le generique d'introduction,
le generique de fin, ou un timeout doit etre lu avec le chapitre. Plusieur valeur possible.
effects: tableau (timeout)
Pour les informations sur la production, tels que le genre, la duree, et la realisation: se referer à
l'exemple ci-dessous. Voici la description de certains champs. Notez que ces champs sont optionel.
title: Le titre de l'oravox
subtitle: Un eventuel sous-titre
genre: Genres ou categories de l'oravox. Ex: Aventure, Historique. Lister par ordre
d'importance.
duration: Duree total de l'oravox en seconde
synopsis: Le synopsis
actions: Nombre d'interaction disponible dans l'oravox
actors: Nombre d'acteur
choicePerInteraction: Nombre maximal de choix lors de chaque interaction
endings: Nombre de fin eventuelle
audience: Tranche d'age du publique. Valeurs possible: 3TO6, 6TO12, 6TO99, 12TO18, 18TO81
Bonnes pratiques
- Respectez exactement le nommage des fichiers (sensible à la casse selon le serveur).
- Utilisez des commandes courtes et des synonymes pour améliorer la détection vocale.
- Pour un chapitre sans suite, utilisez
"choices": [].
- Ne laissez pas de virgules finales dans les objets/tableaux JSON (syntaxe stricte).
- Validez
story.json avec un validateur JSON avant envoi.
Exemple (story.json)
{
"title": "Ce text sera afficher sur la page d'acceuil",
"cover": "cover.avif",
"spec": {
"title": "Un titre",
"subtitle": "un sous-titre",
"genre": "Aventure/Historique/Burlesque",
"duration": 900,
"synopsis": "Une narration plein de rebondissement",
"goal": "Conquerir le monde",
"mode": "FULL, Interactif et Immersif avec musique, bruitage, et voix",
"actions": 3,
"actors": 1,
"choicePerInteraction": 2,
"endings": 4,
"audience": "6TO99",
"direction": "Me, Myself, and I",
"production": "Providence.be",
"free": true
},
"chapters": {
"001": {
"label": "Introduction.",
"commands": ["intro", "introduction", "début"],
"audio": "001.mp3",
"choices": ["002", "003"],
"has": ["intro","timeout"]
},
"002": {
"label": "Aller à gauche dans la forêt",
"commands": ["gauche", "forêt"],
"audio": "002.mp3",
"choices": ["004"]
},
"003": {
"label": "Aller à droite vers la montagne",
"commands": ["droite", "montagne"],
"audio": "003.mp3",
"choices": ["004"]
},
"004": {
"label": "Fin de l'histoire",
"commands": ["fin", "conclusion"],
"audio": "004.mp3",
"choices": ["001"],
"has": ["outro"]
}
}
}
Attention : les fichiers manquants ou mal nommés empêcheront l'import.