From f749256b0ec77d80e433bb7bd7397b037204e2bf Mon Sep 17 00:00:00 2001 From: bolbol Date: Fri, 24 Jul 2026 12:48:41 +0000 Subject: [PATCH] runbook: iakifech ep02 postmortem sous-titres desync + freeze fin (24/07) --- ...h-ep2-subtitle-desync-freeze-postmortem.md | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 hermes-nyora/iakifech-ep2-subtitle-desync-freeze-postmortem.md diff --git a/hermes-nyora/iakifech-ep2-subtitle-desync-freeze-postmortem.md b/hermes-nyora/iakifech-ep2-subtitle-desync-freeze-postmortem.md new file mode 100644 index 0000000..a980b7f --- /dev/null +++ b/hermes-nyora/iakifech-ep2-subtitle-desync-freeze-postmortem.md @@ -0,0 +1,68 @@ +# IAKifech Ep02 — postmortem sous-titres desync + freeze fin + logo (24/07/2026) + +## Contexte +`iakifech_ep02_final_v3.mp4` (99,46s) analysé sur demande de Nabil : sous-titres +en avance sur la voix, long silence/image figée en fin de vidéo, doute sur le logo. + +## 1. Sous-titres en avance sur la voix — CONFIRMÉ, cause trouvée + +Mesure : pixel-diff de la zone sous-titres vs onset audio réel (RMS 10ms) sur +3 transitions → sous-titres changent **0,40 à 0,70s avant** que la voix ne +reprenne (moyenne ~0,57s). + +Cause : le corps vidéo (`ep02_body.mp4` = `final-1.mp4` du skill +`moneyprinterturbo`, task `2fbc4b36-44de-48e4-8e3f-704c84c78eb1` sur +`moneyprinterturbo-api`, VPS) est généré avec voix + sous-titres **synchronisés +en interne** sur la voix edge-tts par défaut (`fr-FR-RemyMultilingualNeural-Male`, +`audio.mp3` = 75,55s, `subtitle.srt` calé dessus). Ensuite la piste audio a été +remplacée manuellement par une voix ElevenLabs (`ep02_george.mp3`, 79,49s, +débit différent) SANS régénérer `subtitle.srt` sur ce nouveau timing. Les +sous-titres restent gravés aux timestamps Rémy, qui ne collent plus au débit +George. + +C'est déjà documenté (mais pas corrigé) dans `BRAND.md` du projet : +« edge-tts déjà utilisé par erreur sur l'épisode 2 ». + +## 2. Silence + image figée en fin de vidéo — CONFIRMÉ, cause partielle + +- Silence audio réel : 79,06s → fin (99,46s) = **20,4s de silence**. +- `ep02_george.mp3` (voix utilisée) = 79,49s → colle à la fin de la parole détectée. +- `ep02_body.mp4` (corps vidéo) = **75,57s seulement** → manque ~3,9s pour + couvrir la voix George. +- Assemblage final : image quasi figée ~79s→90,5s (11,5s), puis `outro.mp4` + (5,5s, fichier validé BRAND.md) 90,5s→96s. Total vidéo 96s, total audio 99,46s. +- Total body(75,57)+outro(5,5)=81,07s attendu au minimum, réel 99,46s → **~18s + d'écart non expliqué**. Script d'assemblage non retrouvé (probablement + commande ffmpeg ad hoc de l'agent pendant la session, non sauvegardée en + fichier) — donc padding non reproductible, cause exacte du delta encore ouverte. + +## 3. Logo — présent et correct (à corriger : mon diagnostic initial était faux) + +Vérifié par comparaison pixel des coins entre `ep02_body.mp4` (aucun logo, +std=8,9 coin haut-gauche) et `iakifech_ep02_final_v3.mp4` (logo présent, +std=70,5, même zone) → le logo est ajouté après le rendu moneyprinterturbo, +dans une étape séparée. + +Mesures sur le logo appliqué : cercle marine ~115px de diamètre (10,6% de la +largeur 1080px, cohérent avec le ~8% visé dans `BRAND.md`), coin haut-gauche, +icône blanche + accent or (RGB 237,213,48 — cohérent avec le ton "accent_bright" +navy-safe du système de marque Nyora). Présent aussi sur l'écran de fin. +Correctement appliqué sur ce rendu — pas de logo gris/minuscule comme sur une +version antérieure. + +## Recommandations pour la suite (saison 2 / ep03+) + +1. Ne jamais garder les sous-titres brûlés par moneyprinterturbo si la voix est + remplacée après coup : soit regénérer un `.srt` aligné sur `ep02_george.mp3` + (whisper ou timestamps ElevenLabs) puis re-burn, soit désactiver le burn-in + sous-titre côté moneyprinterturbo et le faire dans une étape dédiée post-voix. +2. Calculer la durée de hold/freeze dynamiquement (durée_voix − durée_body), + jamais une valeur fixe/ad hoc, et sauvegarder la commande d'assemblage dans + un script versionné (pas une commande one-shot en session agent). +3. `logo_B_v6.png` validé dans `BRAND.md` — fonctionne bien tel qu'appliqué ici, + rien à changer sur ce point. + +Fichiers sources (VPS `hermes-nabil`, `/data/nyora/ia-tn/`) : +`ep02_body.mp4`, `ep02_george.mp3`, `ep02_elevenlabs.mp3` (non utilisé), +`outro.mp4`, `BRAND.md`, `ENDING-BRIEF.md`, `TACHES.md`. +Skill source : `moneyprinterturbo` (manuellement rédigé, hors curator auto).