Lorsque les enfants regardent des albums illustrés, ils fixent souvent une image pendant longtemps. Les feuilles bougent-elles ? Que contient le bocal dans les mains du petit renard ? Cette luciole a-t-elle fini par retrouver sa maison ?

Si l’on fait légèrement frémir les oreilles dans l’image, si l’on laisse doucement la lumière de la lune tomber dans le bocal, puis qu’on y ajoute une douce narration, l’histoire gagne une nouvelle façon d’être racontée.

Ce type de journal illustré animé peut servir d’histoire du soir, de courte présentation d’histoire en classe, et convient aussi pour essayer de réaliser le storyboard d’un dessin animé pour enfants. Il n’est pas nécessaire qu’il comporte des mouvements complexes. Tant que l’image est agréable, que les personnages restent cohérents d’une image à l’autre et que les enfants peuvent suivre et comprendre, c’est déjà un bon début.

Cette fois, nous allons utiliser Ace Data Cloud Studio et GPT Image 2.6 pour créer une petite histoire — « Le petit renard emprunte la lumière de la lune ». Nous allons d’abord dessiner l’histoire, puis faire bouger les images, et enfin y ajouter du son, afin d’en faire une vidéo pouvant être lue.

Illustration de l’histoire « Le petit renard emprunte la lumière de la lune »

L’histoire n’a pas besoin d’être longue, il faut d’abord la raconter clairement

Une nuit éclairée par la lune, le petit renard rencontre une petite luciole perdue. La forêt est trop sombre, et la petite luciole ne trouve pas le chemin du retour. Le petit renard lève son bocal en verre et emprunte un peu de lumière à la lune pour l’accompagner à travers les bois et la ramener auprès de ses compagnons. Avant de partir, le petit renard agite la main et n’oublie pas de lever les yeux pour remercier la lune.

Cette histoire est courte, mais elle comporte une rencontre, une aide et des adieux. Elle est parfaite pour raconter une histoire complète sous forme de quatre cases.

Nous ouvrons Ace Data Cloud Studio et écrivons dans la conversation ce que nous souhaitons créer. En plus de l’histoire elle-même, nous précisons aussi clairement le style visuel, les personnages et les accessoires.

Saisir les besoins de création de l’histoire dans Ace Data Cloud Studio

Vous pouvez le décrire ainsi :

Veuillez utiliser GPT Image 2.6 pour créer le journal illustré en quatre cases de « Le petit renard emprunte la lumière de la lune », avec un ordre de lecture en haut à gauche, en haut à droite, en bas à gauche, en bas à droite, représentant respectivement la rencontre, l’emprunt de lumière, le chemin parcouru ensemble et le retour à la maison. Adoptez un style doux d’aquarelle dessinée à la main, en conservant la texture du papier. L’apparence du petit renard, la couleur de son écharpe et le bocal en verre doivent rester cohérents dans les quatre images. La forêt doit être principalement composée de bleu profond doux et de vert grisâtre, tandis que la lumière de la lune et celle dans le bocal doivent être représentées en or chaud, sans être éblouissantes. L’image ne doit contenir ni texte, ni bulles de dialogue, ni filigrane.

Voici une petite habitude très pratique : définissez d’abord les personnages et le style visuel, puis organisez ce qui se passe dans chaque case. Sinon, chaque image peut sembler réussie individuellement, mais une fois réunies, elles ressemblent à quatre histoires différentes.

Commencez par quatre cases, et vérifiez si l’histoire est fluide

Cette fois-ci, il s’agit d’une démonstration, nous utilisons donc d’abord une simple grille de quatre cases. Il n’y a pas beaucoup d’images, il est donc plus facile de vérifier : le petit renard a-t-il toujours la même apparence, l’écharpe a-t-elle changé de couleur, le bocal en verre devient-il tantôt grand tantôt petit, et les quatre cases permettent-elles de comprendre l’histoire lorsqu’elles sont reliées ?

Organiser le contenu de l’histoire en quatre cases dans Studio

Si vous souhaitez créer une histoire plus longue, vous pouvez découper la partie « chemin parcouru ensemble ». Par exemple, ils traversent d’abord un ruisseau, puis passent près de racines d’arbres, et enfin aperçoivent les petites lueurs dans un trou d’arbre. Chaque image ne raconte qu’une seule action, ce qui facilite également l’organisation de l’animation et du doublage par la suite.

Voici le journal illustré en quatre cases créé spécialement pour cet article. Laissez un peu de blanc du papier afin que les couleurs de la forêt et la lumière de la lune puissent ressortir, sans avoir besoin de remplir chaque recoin.

Journal illustré en quatre cases de « Le petit renard emprunte la lumière de la lune » : rencontre, emprunt de lumière, chemin parcouru ensemble, retour à la maison

L’image ci-dessous est le journal illustré en quatre cases utilisé dans la démonstration originale. Les GIF et le script de composition qui suivent dans cet article reprennent ce groupe de ressources de démonstration, afin de faciliter la reproduction directe ; les nouvelles illustrations ci-dessus servent à présenter l’histoire, ne mélangez pas les deux groupes de ressources comme s’il s’agissait des dessins originaux d’une même animation.

Journal illustré en quatre cases utilisé dans la démonstration originale

Il suffit de faire bouger légèrement l’image

Une fois les illustrations originales prêtes, nous continuons en demandant à Studio d’écrire des prompts dynamiques pour les quatre segments.

Les mouvements du journal illustré n’ont pas besoin d’être nombreux. Un léger mouvement des oreilles, un doux balancement des brins d’herbe, une lumière dans le bocal qui ondule lentement : ces petits changements suffisent à donner vie à l’image. À l’inverse, de grandes courses ou des changements de plan fréquents risquent de perturber l’atmosphère calme d’origine.

La version suivante du prompt complète le segment « retour à la maison » et précise également la relation entre chaque illustration originale et l’animation correspondante :

Prompts dynamiques pour quatre GIF

Contraintes générales : conserver le personnage, l’écharpe, le bocal en verre et la texture du papier aquarelle de l’illustration originale correspondante ; caméra fixe, ne faire que de petits mouvements, ne pas ajouter de personnages, ne pas afficher de texte, et faire en sorte que le début et la fin s’enchaînent autant que possible. Chaque segment n’utilise qu’une seule illustration originale spécifiée et l’étend en une image unique ; ne pas animer toute la grille de quatre cases en même temps.

La rencontre
Sélectionner la case en haut à gauche et l’étendre en une image unique. Le renard baisse légèrement la tête, ses oreilles bougent subtilement ; la luciole sur la feuille s’allume et s’éteint lentement, les brins d’herbe autour se balancent doucement. Maintenir stables les proportions du corps du renard et la composition de l’arrière-plan.

Emprunter de la lumière
Sélectionner la case en haut à droite et l’étendre en une image unique. Le renard garde la pose où il tient le bocal levé, une douce lumière lunaire s’écoule lentement dans le bocal en verre, la lumière dorée à l’intérieur ondule délicatement. La forme du bocal en verre reste inchangée, la lumière est douce, sans scintillement intense.

Cheminer ensemble
Sélectionner la case en bas à gauche et l’étendre en une image unique. Le renard marche à petits pas, son écharpe et sa queue se balancent doucement, le bocal qu’il porte oscille légèrement ; la luciole flotte à côté du bocal, l’arrière-plan reste stable. Les mouvements sont de faible amplitude, en formant autant que possible une boucle naturelle.

Rentrer à la maison
Sélectionner la case en bas à droite et l’étendre en une image unique. Le renard agite lentement la main, les lucioles déjà présentes près du creux de l’arbre tournent en cercle dans une petite zone, la lumière lunaire sur le sol ondule doucement, les brins d’herbe se balancent légèrement. Maintenir globalement stables les positions du creux de l’arbre, du bocal en verre et du renard, et faire revenir naturellement la fin vers une posture proche du début.

Ensuite, dans Studio, indiquez clairement : utilisez la fonction d’animation GIF de GPT Image 2.6 pour générer séparément ces quatre segments, et renvoyez leurs fichiers GIF respectifs.

Ici, il s’agit de courtes animations en boucle, et non de générer directement une longue vidéo complète. Une fois la tâche terminée, nous obtenons quatre images animées, puis nous les assemblons avec la narration pour en faire une vidéo.

Voici les quatre GIF générés dans la démonstration originale.

La rencontre

La rencontre : le petit renard découvre une petite luciole perdue

Emprunter de la lumière

Emprunter de la lumière : le petit renard lève un bocal en verre pour recueillir la lumière de la lune

Cheminer ensemble

Cheminer ensemble : le petit renard porte la lumière de la lune et accompagne la luciole à travers la forêt

Rentrer à la maison

Rentrer à la maison : la luciole retourne auprès de ses compagnons, le petit renard lui fait signe d’adieu

Si l’écharpe, le bocal ou l’apparence du personnage change dans un segment, corrigez d’abord ce segment ; il n’est pas nécessaire de recommencer toute la série de ressources. Une fois les images confirmées, passez à l’enregistrement de la voix.

La voix off ressemble à une histoire du soir, sans trop en faire

Une fois les images animées, nous continuons à saisir les besoins de voix off dans Studio. Générez séparément les quatre narrations, il sera plus facile de les associer ensuite à leurs images respectives.

Saisir les besoins de voix off de la narration dans Studio

Vous pouvez dire ceci :

Veuillez générer quatre segments indépendants de narration chinoise pour « Le petit renard emprunte la lumière de la lune », et renvoyer les liens audio respectifs. Utilisez une voix féminine douce et naturelle, comme si elle racontait une histoire du soir à un enfant, sans ton de présentatrice ni mignonnerie forcée. Les quatre segments doivent conserver le même timbre de voix, avec un débit calme et une légère pause en fin de phrase. Générez d’abord uniquement la narration, sans musique de fond. La rencontre : sous la lumière de la lune, le petit renard rencontre une petite luciole perdue. Emprunter de la lumière : le petit renard emprunte à la lune une douce lumière. Cheminer ensemble : il porte la lumière de la lune et accompagne la petite luciole à travers la forêt. Rentrer à la maison : la luciole retourne auprès de ses compagnons, et le petit renard remercie lui aussi la lune.

Quatre phrases suffisent pour raconter l’histoire, inutile d’ajouter un long paragraphe d’explications. Laissez aussi les images raconter un peu, cela sera plus agréable à écouter.

Après la génération de la voix off, il est préférable d’écouter chaque segment une fois. Vérifiez ici s’il y a des mots mal prononcés, si les pauses sont naturelles, et si chaque segment peut être terminé dans le temps prévu. Le script de démonstration ci-dessous utilise les quatre liens audio existants ; si vous régénérez la voix off, n’oubliez pas de les remplacer par vos propres liens.

Enfin, assembler localement le livre illustré en vidéo

Les ressources sont prêtes, nous demandons à Studio de préparer un script de composition FFmpeg, puis nous le récupérons pour l’exécuter sur l’ordinateur local.

Ce script créera un livre illustré à double page horizontal : à gauche, le titre du chapitre et le texte de l’histoire ; à droite, le GIF est lu. Les quatre pages sont reliées dans l’ordre de l’histoire, avec leurs narrations respectives.

Avant l’exécution, vous devez installer FFmpeg et remplacer FONT par le chemin d’une police chinoise réellement présente sur l’ordinateur. FFmpeg doit également prendre en charge le filtre drawtext utilisé par le script, l’encodage H.264 et l’encodage AAC. Le script convient à une exécution avec Bash sous Linux, macOS ou dans l’environnement WSL de Windows ; ne le collez pas directement dans PowerShell.

Les liens des ressources de démonstration sont conservés ci-dessous, et le nom du fichier de sortie ainsi que les titres des pages ont été uniformisés en « Le petit renard emprunte la lumière de la lune ». Il s’agit d’un script à exécuter localement ; cet article ne l’a pas exécuté localement à la place du lecteur.

bash <<'BASH'
set -euo pipefail

# ===== Modifiez uniquement ici =====

GIF1="https://cdn.acedata2.cloud/gpt-image/d8d0bdffeb50f57fa700e3b0e973541e62361c1bce243f795c66b12c27a79ada.gif"
GIF2="https://cdn.acedata2.cloud/gpt-image/2361e32502087a5d14a1030ec26c94bade43ad7abddff7f51294ae70cffabd03.gif"
GIF3="https://cdn.acedata2.cloud/gpt-image/c9091c98a64df06baecc7be2e5bb4b7521deff9caa3a0f67bca46c5409b92133.gif"
GIF4="https://cdn.acedata2.cloud/gpt-image/e6f322e1dea87af933a00e6053166cd5ce2f9a7ab59358c37f7b79d3b0126885.gif"

# Chemin de la police chinoise, veuillez le modifier selon votre situation réelle :
# Exemple Linux : /usr/share/fonts/opentype/noto/NotoSerifCJK-Regular.ttc
# Exemple macOS : /System/Library/Fonts/PingFang.ttc
FONT="/usr/share/fonts/opentype/noto/NotoSerifCJK-Regular.ttc"

OUTPUT="Le_petit_renard_emprunte_le_clair_de_lune.mp4"

# ===== Quatre narrations déjà disponibles =====

AUDIO1="https://platform2.cdn.acedata.cloud/fish/bb9140fc-c0c5-4397-995c-5a4eba813ef6.mp3"
AUDIO2="https://platform2.cdn.acedata.cloud/fish/ffe157ea-7fc4-422c-b153-e3bdb7db59ad.mp3"
AUDIO3="https://platform2.cdn.acedata.cloud/fish/2eb05b03-e833-48b9-9373-38b4c6a6456c.mp3"
AUDIO4="https://platform2.cdn.acedata.cloud/fish/429392ee-4012-4775-b1d9-fec7b88ddf1f.mp3"

command -v ffmpeg >/dev/null || {
  echo "Veuillez d'abord installer FFmpeg"
  exit 1
}

[[ -f "$FONT" ]] || {
  echo "Police chinoise introuvable, veuillez modifier FONT : $FONT"
  exit 1
}

gifs=("$GIF1" "$GIF2" "$GIF3" "$GIF4")
audios=("$AUDIO1" "$AUDIO2" "$AUDIO3" "$AUDIO4")

titles=("La rencontre" "Emprunter la lumière" "En chemin" "Retour à la maison")
lines1=(
  "Sous le clair de lune, le petit renard rencontra"
  "Le petit renard emprunta à la lune"
  "Il porta le clair de lune, accompagnant la petite luciole"
  "La luciole retourna auprès de ses compagnons"
)
lines2=(
  "une petite luciole perdue."
  "une douce lumière."
  "pour traverser ensemble la forêt."
  "Le petit renard remercia aussi la lune."
)

# Durée fixe de chaque chapitre ; le temps restant après la fin de la narration reste silencieux.
# Durée totale : 19 secondes. Les narrations dépassant la durée du chapitre seront tronquées.
durations=("5" "4.5" "4.5" "5")

inputs=()
filters=""

for i in 0 1 2 3; do
  vi=$((i * 2))
  ai=$((vi + 1))
  page=$((i + 1))
  d="${durations[$i]}"

  # Désactive le marqueur de boucle interne du GIF, la boucle infinie est assurée uniformément par stream_loop.
  inputs+=(
    -stream_loop -1 -ignore_loop 1 -i "${gifs[$i]}"
    -i "${audios[$i]}"
  )

  # Fond du livre : table aux tons chauds, pages doubles, reliure et texte à gauche.
  filters+="
color=c=0xD6C7B3:s=1920x1080:r=30:d=${d},
drawbox=x=72:y=64:w=1788:h=972:color=0xB6A38C:t=fill,
drawbox=x=60:y=50:w=900:h=970:color=0xFFF9EE:t=fill,
drawbox=x=960:y=50:w=900:h=970:color=0xFFF9EE:t=fill,
drawbox=x=940:y=50:w=20:h=970:color=0xE2D6C3:t=fill,
drawbox=x=960:y=50:w=12:h=970:color=0xEFE5D5:t=fill,
drawbox=x=150:y=320:w=110:h=4:color=0xB28A60:t=fill,
drawtext=fontfile='${FONT}':text='Le petit renard emprunte le clair de lune':x=150:y=155:fontsize=28:fontcolor=0x927A60,
drawtext=fontfile='${FONT}':text='${titles[$i]}':x=150:y=235:fontsize=64:fontcolor=0x493A2C,
drawtext=fontfile='${FONT}':text='${lines1[$i]}':x=150:y=400:fontsize=36:fontcolor=0x685846,
drawtext=fontfile='${FONT}':text='${lines2[$i]}':x=150:y=465:fontsize=36:fontcolor=0x685846,
drawtext=fontfile='${FONT}':text='${page} / 4':x=150:y=910:fontsize=24:fontcolor=0xA28D76
[book${i}];

[${vi}:v]
setpts=PTS-STARTPTS,
fps=30,
scale=780:800:force_original_aspect_ratio=decrease:force_divisible_by=2,
setsar=1,
format=rgba
[gif${i}];

[book${i}][gif${i}]
overlay=x='1020+(780-overlay_w)/2':y='130+(800-overlay_h)/2':shortest=1,
trim=duration=${d},
setpts=PTS-STARTPTS,
format=yuv420p
[v${i}];

[${ai}:a]
asetpts=PTS-STARTPTS,
aresample=48000,
aformat=sample_fmts=fltp:channel_layouts=stereo,
apad,
atrim=duration=${d},
asetpts=PTS-STARTPTS
[a${i}];
"
done

filters+="
[v0][a0][v1][a1][v2][a2][v3][a3]
concat=n=4:v=1:a=1[vout][aout]
"

# Une seule exécution : assemble toutes les pages du livre, les animations et les narrations.
ffmpeg -hide_banner -y \
  "${inputs[@]}" \
  -filter_complex "$filters" \
  -map "[vout]" \
  -map "[aout]" \
  -c:v libx264 \
  -preset medium \
  -crf 18 \
  -pix_fmt yuv420p \
  -c:a aac \
  -b:a 192k \
  -ar 48000 \
  -movflags +faststart \
  "$OUTPUT"

printf '\nGénéré : %s\n' "$OUTPUT"
BASH

Ce script règle la durée des quatre pages à 5 secondes, 4,5 secondes, 4,5 secondes et 5 secondes, pour un total de 19 secondes. Les GIF boucleront jusqu'à la fin de cette page et, lorsque la narration est plus courte, la partie restante à la fin reste silencieuse.

Il faut particulièrement faire attention à ceci : si la narration est plus longue que cette page, le script tronquera la partie excédentaire. Lors de la régénération de la narration, écoutez-la d'abord avant de décider s'il faut allonger durations, ne faites pas tourner la page au milieu de l'histoire juste pour atteindre 19 secondes.

Une connexion Internet est nécessaire lors de l'exécution pour charger les ressources. Si un lien est inaccessible, vous pouvez d'abord télécharger les GIF et les MP3 en local, puis modifier les variables correspondantes en chemins de fichiers. Le -y dans le script écrasera le fichier de sortie portant le même nom ; si vous avez déjà une vidéo finale, changez d'abord le nom du fichier. D’après les enregistrements fournis dans la démonstration, les crédits de génération de ressources pour ce petit échantillon sont d’environ 1 crédit. Cette valeur sert uniquement de référence pour cette démonstration, elle ne correspond pas à un forfait fixe et ne signifie pas que n’importe quelle vidéo de 19 secondes ne nécessite qu’1 crédit. La version du modèle, la taille de l’image, la qualité, la durée de la voix off et le nombre de tentatives influencent tous la consommation réelle ; les crédits facturés affichés par Studio font foi. Cette dernière étape consiste à effectuer la composition localement avec FFmpeg, et non à appeler à nouveau le service de génération vidéo dans le cloud.

Mettre tout le processus sur une seule image

En y repensant, ce n’est pas si compliqué : il faut d’abord imaginer l’histoire, dessiner quatre cases, faire bouger un peu chaque case, puis ajouter une narration, et enfin faire la composition en local.

Studio nous aide à préparer l’histoire, les illustrations originales, les GIF et les ressources de voix off ; FFmpeg se charge de disposer les ressources comme les pages d’un livre, de raccorder le son et d’exporter un MP4. En séparant ces deux parties, si une page ne convient pas, il suffit de modifier cette page.

Processus de création, de la conception de l’histoire, aux illustrations originales en quatre cases, à l’animation GIF, à la narration, puis à la composition locale

Un peu de clair de lune suffit pour raconter toute une histoire

« Le petit renard emprunte le clair de lune » ne compte pas beaucoup de personnages, ni de grandes scènes animées. Il laisse simplement un petit renard accompagner une luciole égarée sur un bout de chemin.

Pour réaliser une telle affiche d’histoire illustrée, les éléments qui méritent de prendre du temps sont souvent ces petits détails : le renard a-t-il le même aspect dans les quatre images, la lumière dans le bocal est-elle assez douce, la narration peut-elle être écoutée avec sérénité jusqu’au bout.

Si vous voulez vous aussi essayer, vous pouvez commencer par une petite histoire en quatre cases. Dans Ace Data Cloud Studio, décrivez clairement le style visuel et les personnages, vérifiez les illustrations originales, puis ajoutez lentement les mouvements et le son. Bien réaliser d’abord une courte histoire permet plus facilement de trouver ce que vous aimez, plutôt que de partir dès le début sur un contenu très long.

Lorsque l’image et le son sont tous les deux adaptés, tournez encore quelques pages. Un petit livre illustré qui bouge se crée ainsi, petit à petit.