Générateur de Podcast IA
Créez des vidéos de podcast avec têtes parlantes et plusieurs participants en utilisant le pipeline inference.sh : génération de portraits → synthèse vocale audio → vidéo d'avatar → assemblage final. Prend en charge les humains réels (via Phota), les mascottes 3D, les personnages illustrés et les casts mixtes.
À utiliser lorsque l'utilisateur souhaite créer un podcast, une vidéo de tête parlante, une démo, une conversation promotionnelle ou tout contenu vidéo avec plusieurs intervenants.
Aperçu du Pipeline
Personnages (images) → TTS (audio par tour) → Avatar (vidéo par tour) → Assemblage (vidéo finale)
Processus
Étape 1 : Création des Personnages
Choisissez l'outil adapté à chaque type de personnage :
| Type de Personnage | Outil | Notes |
|---|---|---|
| Humain réel (nouveau) | pruna/p-image | 16:9, prompt_upsampling: true. Rapide, pas d'entraînement nécessaire, mais l'identité ne sera pas cohérente entre plusieurs générations. |
| Humain réel (ID cohérent) | phota/generate avec [[profile_id]] | Identité cohérente sur tous les plans. Nécessite d'abord l'entraînement d'un profil Phota (voir ci-dessous). |
| Mascotte de marque / logo | google/gemini-3-pro-image-preview | Passez le logo + la fiche personnage comme images de référence |
| Illustré / stylisé | google/gemini-3-pro-image-preview | Passez une référence de style comme image d'entrée |
Entraînement d'une identité Phota (optionnel mais recommandé pour les humains) :
Si vous avez besoin d'un personnage humain réel avec une identité cohérente sur plusieurs angles et plans, entraînez d'abord un profil Phota :
infsh app run phota/train --input '{
"images": ["url1.jpg", "url2.jpg", ...],
"wait": true
}' --save profile.json
- Nécessite 30 à 50 images du visage du sujet
- L'entraînement prend quelques minutes avec
wait: true - Renvoie un
profile_idque vous utilisez ensuite dansphota/generatecomme[[profile_id]]dans les prompts - Le profil est réutilisable indéfiniment — entraînez-le une fois, générez un nombre illimité de plans
Si vous n'avez pas besoin de cohérence entre les plans (par exemple, vidéo avec un seul intervenant, un seul angle), pruna/p-image est plus simple et moins cher.
D'abord les fiches personnages, ensuite les plans de podcast :
- Générez une fiche personnage (fond blanc uni, plusieurs angles) pour chaque personnage
- Placez ensuite les personnages dans le décor du studio de podcast en utilisant la fiche comme référence
Pour les personnages de marque (logo sur les vêtements) :
- Générez le personnage avec une version unie du vêtement
- Utilisez
phota/editavec le logo comme deuxième image de référence pour ajouter le logo - Passez toujours l'image du logo avec les références du personnage lors de la génération de nouveaux angles
Étape 2 : Angles Alternatifs
Générez au moins 2 angles par personnage pour la variété visuelle :
| Angle | Quand l'utiliser |
|---|---|
| Face/plan moyen | Plans d'établissement, ouverture, fermeture |
| Gros plan | Réactions, moments émotionnels, répliques percutantes |
Pour les gros plans, demandez "cadrage serré, poitrine visible, faible profondeur de champ" — pas "tourné sur le côté" (ce qui les ferait regarder ailleurs).
Règles de cohérence d'identité :
- Pour les humains réels avec un profil Phota : utilisez
phota/generateouphota/editpour les nouveaux angles — Gemini ne préserve pas l'identité faciale et produira une personne différente - Pour les humains réels sans profil Phota : essayez de générer tous les angles nécessaires en une seule fois avec
pruna/p-image, ou envisagez d'entraîner un profil Phota si vous avez besoin de nombreux plans - Pour les mascottes/illustrations : Gemini 3 Pro convient, passez le plan établi comme référence
Règle de cadrage : Utilisez un cadrage serré pour les intervenants individuels. Les plans larges avec plusieurs sièges montrent des chaises vides lorsqu'une seule personne est à l'écran.
Étape 3 : Validation des Images
Avant de continuer, inspectez visuellement toutes les images pour détecter :
- Personnes supplémentaires en arrière-plan
- Microphones multiples (un seul micro par plan est souhaité)
- Logos déformés ou incorrects
- Identité de personnage incohérente entre les angles
- Artefacts étranges (membres supplémentaires, objets fusionnés)
Corrigez les problèmes avant de générer la vidéo — le rendu vidéo est l'étape la plus coûteuse du pipeline.
Étape 4 : Rédaction du Script
Règles pour une conversation naturelle :
- Rédigez-le comme une vraie conversation, PAS comme des personnes lisant un texte publicitaire à tour de rôle
- Incluez des réactions (« attends, tient bon », « c'est dingue »), des interruptions et des questions de suivi
- Variez la longueur des tours — réactions courtes (1 phrase) mélangées à des explications plus longues (2-3 phrases)
- L'hôte doit poser de vraies questions, pas préparer des points de discussion évidents
- Gardez à l'esprit la durée totale visée : ~2.5 mots/seconde pour une parole naturelle à un débit de 1.05x
Guide de durée :
| Cible | Mots |
|---|---|
| 15s | ~38 mots |
| 30s | ~75 mots |
| 60s | ~150 mots |
Étape 5 : Génération Audio TTS
Utilisez inworld/text-to-speech-2 pour chaque tour.
infsh app run inworld/text-to-speech-2 --input '{
"text": "...",
"voice_id": "...",
"speaking_rate": 1.05,
"audio_encoding": "MP3"
}' --save output.json
Sélection de la voix :
- Générez des échantillons avec la même réplique sur plusieurs voix candidates AVANT de vous engager
- Laissez l'utilisateur écouter et approuver les voix
- Bonnes voix pour podcast : Tyler, Nate, Lauren, Kelsey, Naomi, Anjali (EN_US)
- Utilisez
inworld/text-to-speech-2:voicespour lister toutes les voix disponibles
Débit de parole :
- Par défaut, utilisez 1.05 pour un rythme de podcast naturel
- Utilisez 1.1 pour des réactions courtes et vives
- NE JAMAIS descendre en dessous de 1.0 — cela semble lent et peu engageant
- Gardez le débit constant par personnage sur tous ses tours
Tous les tours TTS peuvent être exécutés en parallèle (peu coûteux, rapide ~2-8s chacun).
Étape 6 : Génération de Clips Vidéo
Utilisez pruna/p-video-avatar pour chaque tour.
infsh app run pruna/p-video-avatar --input '{
"image": "<url_image_personnage>",
"audio": "<url_audio_tts>",
"resolution": "720p",
"video_prompt": "..."
}' --save output.json
Critique : Exécutez les clips SÉQUENTIELLEMENT, pas en parallèle. Les exécutions parallèles utilisent le même GPU et provoquent des erreurs CUDA OOM. Chaque clip prend 15 à 90 secondes selon la durée audio.
Plan d'attribution des angles : Alternez entre plans frontaux et gros plans pour la variété visuelle. Exemple pour 6 tours :
T1 : Intervenant A — plan frontal
T2 : Intervenant B — plan frontal
T3 : Intervenant C — plan frontal (ou gros plan)
T4 : Intervenant A — gros plan
T5 : Intervenant B — gros plan
T6 : Intervenant A — plan frontal
Étape 7 : Assemblage
Utilisez infsh/media-merger pour assembler tous les clips en une seule vidéo finale.
# Construire le JSON d'entrée
{
"media_files": [
{"file": "<url_clip1>"},
{"file": "<url_clip2>"},
...
],
"fps": 24,
"output_format": "mp4"
}
infsh app run infsh/media-merger --input merger_input.json --save final.json
L'assembleur est gratuit et prend 2 à 6 minutes selon la durée totale.
Règles
-
Gemini ne préserve pas l'identité faciale humaine — générer des angles alternatifs d'un humain réel avec Gemini produira une personne différente. Pour des plans humains avec une identité cohérente, utilisez Phota avec un profile_id entraîné, ou générez tous les angles en un seul lot. Cette règle a été apprise après que Gemini a produit un visage complètement différent pour un gros plan censé correspondre au plan frontal.
-
NE JAMAIS exécuter les clips p-video-avatar en parallèle — ils se font concurrence pour la mémoire GPU et échouent avec une erreur CUDA OOM. Exécutez-les séquentiellement. Cette règle a été apprise après que 2 des 3 exécutions parallèles ont échoué.
-
NE JAMAIS régler le débit de parole en dessous de 1.0 — cela semble artificiel et peu engageant. Par défaut, utilisez 1.05. Appris grâce aux retours d'utilisateurs indiquant qu'un débit de 0.9 « semblait étrange et peu engageant ».
-
TOUJOURS valider les images avant de générer la vidéo — la génération vidéo est l'étape la plus coûteuse du pipeline. Détecter un double micro ou un mauvais logo au stade de l'image est peu coûteux à corriger. Le détecter après la génération vidéo signifie devoir refaire le rendu de tout le clip.
-
TOUJOURS utiliser un cadrage serré pour les plans d'intervenants individuels — les plans larges/d'établissement montrent des sièges vides là où les autres intervenants devraient être. Cadrez à partir de la taille ou de la poitrine pour qu'aucune chaise vide ne soit visible.
-
TOUJOURS passer le logo comme image de référence lors de la génération de personnages de marque — décrire un logo en texte donne des résultats erronés. Passez le fichier logo réel comme deuxième image d'entrée.
-
TOUJOURS obtenir l'approbation de la voix avant la production complète — générez des échantillons avec la même réplique sur 5 à 8 voix candidates et laissez l'utilisateur choisir avant de s'engager sur le script complet.
-
Le script doit se lire comme une conversation, pas comme une publicité — les personnes lisant un texte publicitaire à tour de rôle sonnent faux. Incluez des réactions, des interruptions, des longueurs de tour variées et des questions authentiques. L'hôte doit avoir de la personnalité, pas seulement préparer des points de discussion.
Référence des Applications
| Application | Objectif |
|---|---|
pruna/p-image | Générer des portraits à partir de texte |
phota/train | Entraîner un profil d'identité à partir de 30 à 50 images de visage |
phota/generate | Générer des images avec une identité entraînée via [[profile_id]] |
phota/edit | Modifier des images en préservant l'identité des sujets connus |
google/gemini-3-pro-image-preview | Génération/modification d'images, mascottes, transfert de style |
inworld/text-to-speech-2 | Synthèse vocale, 100+ langues, réglage de la voix |
pruna/p-video-avatar | Portrait + audio → vidéo de tête parlante |
infsh/media-merger | Concaténer des clips vidéo en une seule vidéo |
Utilisez belt task cost <task-id> pour vérifier le coût d'une tâche individuelle.