¿Qué hace Generador de Podcasts con IA?
Crea videos de podcast con múltiples interlocutores usando el pipeline de inference.sh: generación de retratos → audio TTS → video avatar → unión. Soporta humanos reales (mediante Phota), mascotas 3D, personajes ilustrados y elencos mixtos.
Úsalo cuando el usuario quiera crear un podcast, un video con una persona hablando, un reel de demostración, una conversación promocional o cualquier contenido de video con múltiples oradores.
Resumen del Pipeline
Personajes (imágenes) → TTS (audio por turno) → Avatar (video por turno) → Unión (video final)
Proceso
Paso 1: Creación de Personajes
Elige la herramienta adecuada según el tipo de personaje:
| Tipo de personaje | Herramienta | Notas |
|---|---|---|
| Humano real (nuevo) | pruna/p-image | 16:9, prompt_upsampling: true. Rápido, sin entrenamiento, pero la identidad no será consistente entre generaciones. |
| Humano real (identidad consistente) | phota/generate con [[profile_id]] | Identidad consistente en todas las tomas. Requiere un perfil Phota entrenado primero (ver más abajo). |
| Mascota de marca / personaje de logo | google/gemini-3-pro-image-preview | Pasa el logo + la hoja de personaje como imágenes de referencia |
| Ilustrado / estilizado | google/gemini-3-pro-image-preview | Pasa una referencia de estilo como imagen de entrada |
Entrenar una identidad Phota (opcional pero recomendado para humanos):
Si necesitas un personaje humano real con identidad consistente en múltiples ángulos y tomas, entrena un perfil Phota primero:
infsh app run phota/train --input '{
"images": ["url1.jpg", "url2.jpg", ...],
"wait": true
}' --save profile.json
- Requiere de 30 a 50 imágenes del rostro del sujeto
- El entrenamiento toma unos minutos con
wait: true - Devuelve un
profile_idque luego usas enphota/generatecomo[[profile_id]]en los prompts - El perfil es reutilizable indefinidamente: entrena una vez, genera tomas ilimitadas
Si no necesitas consistencia entre tomas (por ejemplo, video de un solo orador, un único ángulo), pruna/p-image es más simple y económico.
Primero las hojas de personaje, luego los fotogramas del podcast:
- Genera una hoja de personaje (fondo blanco liso, múltiples ángulos) para cada personaje
- Luego coloca a los personajes en el entorno del estudio de podcast usando la hoja como referencia
Para personajes de marca (logo en la ropa):
- Genera el personaje con una versión lisa de la prenda
- Usa
phota/editcon el logo como segunda imagen de referencia para agregar el logo - Siempre pasa la imagen del logo junto con las referencias del personaje al generar nuevos ángulos
Paso 2: Ángulos Alternados
Genera al menos 2 ángulos por personaje para variedad visual:
| Ángulo | Cuándo usarlo |
|---|---|
| Frontal/medio | Tomas de establecimiento, apertura, cierre |
| Primer plano | Reacciones, momentos emocionales, líneas impactantes |
Para primeros planos, indica "encuadre cerrado, de pecho para arriba, poca profundidad de campo" — no "girado hacia un lado" (que solo hace que miren hacia otro lado).
Reglas de consistencia de identidad:
- Para humanos reales con perfil Phota: usa
phota/generateophota/editpara nuevos ángulos — Gemini no conserva la identidad facial y producirá una persona diferente - Para humanos reales sin perfil Phota: intenta generar todos los ángulos necesarios de una sola vez con
pruna/p-image, o considera entrenar un perfil Phota si necesitas muchas tomas - Para mascotas/ilustraciones: Gemini 3 Pro es suficiente, pasa el fotograma establecido como referencia
Regla de encuadre: Usa encuadre cerrado para los oradores individuales. Las tomas amplias con múltiples asientos muestran sillas vacías cuando solo una persona está en pantalla.
Paso 3: Control de Calidad de Fotogramas
Antes de continuar, inspecciona visualmente todos los fotogramas para detectar:
- Personas extra en el fondo
- Múltiples micrófonos (debe haber un solo micrófono por toma)
- Logos incorrectos o distorsionados
- Identidad inconsistente del personaje entre ángulos
- Artefactos extraños (extremidades adicionales, objetos fusionados)
Corrige los problemas antes de generar video: volver a renderizar video es el paso más costoso del pipeline.
Paso 4: Escribir el Guion
Reglas para una conversación natural:
- Escríbelo como una conversación real, NO como si las personas leyeran un texto publicitario por turnos
- Incluye reacciones ("espera, un momento", "eso es increíble"), interrupciones y preguntas de seguimiento
- Varía la longitud de los turnos: reacciones cortas (1 frase) mezcladas con explicaciones más largas (2-3 frases)
- El presentador debe hacer preguntas reales, no preparar puntos de discusión obvios
- Mantén en mente la duración total objetivo: ~2.5 palabras/segundo para un habla natural con velocidad 1.05x
Guía de duración:
| Objetivo | Palabras |
|---|---|
| 15s | ~38 palabras |
| 30s | ~75 palabras |
| 60s | ~150 palabras |
Paso 5: Generar Audio TTS
Usa inworld/text-to-speech-2 para cada turno.
infsh app run inworld/text-to-speech-2 --input '{
"text": "...",
"voice_id": "...",
"speaking_rate": 1.05,
"audio_encoding": "MP3"
}' --save output.json
Selección de voz:
- Genera muestras con la misma línea entre las voces candidatas ANTES de comprometerte
- Deja que el usuario escuche y apruebe las voces
- Buenas voces para podcast: Tyler, Nate, Lauren, Kelsey, Naomi, Anjali (EN_US)
- Usa
inworld/text-to-speech-2:voicespara listar todas las voces disponibles
Velocidad de habla:
- Por defecto usa 1.05 para un ritmo natural de podcast
- Usa 1.1 para reacciones cortas y rápidas
- NUNCA bajes de 1.0 — suena lento y desenganchante
- Mantén la velocidad constante por personaje en todos sus turnos
Todos los turnos de TTS se pueden ejecutar en paralelo (baratos, rápidos ~2-8s cada uno).
Paso 6: Generar Clips de Video
Usa pruna/p-video-avatar para cada turno.
infsh app run pruna/p-video-avatar --input '{
"image": "<url_fotograma_personaje>",
"audio": "<url_audio_tts>",
"resolution": "720p",
"video_prompt": "..."
}' --save output.json
Crítico: Ejecuta los clips SECUENCIALMENTE, no en paralelo. Las ejecuciones en paralelo compiten por la misma GPU y causan fallos CUDA OOM. Cada clip toma de 15 a 90 segundos dependiendo de la longitud del audio.
Plan de asignación de ángulos: Alterna entre tomas frontales y primeros planos a lo largo de los turnos para variedad visual. Ejemplo para 6 turnos:
T1: Orador A — frontal
T2: Orador B — frontal
T3: Orador C — frontal (o primer plano)
T4: Orador A — primer plano
T5: Orador B — primer plano
T6: Orador A — frontal
Paso 7: Unión
Usa infsh/media-merger para unir todos los clips en el video final.
# Construir JSON de entrada
{
"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
El merger es gratuito y toma de 2 a 6 minutos dependiendo de la duración total.
Reglas
-
Gemini no conserva la identidad facial humana — generar ángulos alternativos de un humano real con Gemini producirá una persona diferente. Para tomas humanas con identidad consistente, usa Phota con un profile_id entrenado, o genera todos los ángulos en un solo lote. Esto se aprendió después de que Gemini produjera una cara completamente diferente para un primer plano que se suponía debía coincidir con la toma frontal.
-
NUNCA ejecutes clips de p-video-avatar en paralelo — compiten por la memoria de la GPU y fallan con CUDA OOM. Ejecútalos secuencialmente. Esto se aprendió después de que 2 de 3 ejecuciones paralelas fallaran.
-
NUNCA establezcas speaking_rate por debajo de 1.0 — suena artificial y desenganchante. Por defecto usa 1.05. Aprendido de comentarios de usuarios que la velocidad 0.9 "se sentía extraña y desenganchante".
-
SIEMPRE haz control de calidad de los fotogramas antes de generar video — la generación de video es el paso más costoso del pipeline. Detectar un micrófono doble o un logo incorrecto en la etapa de imagen es barato de corregir. Detectarlo después de la generación de video significa volver a renderizar todo el clip.
-
SIEMPRE usa encuadre cerrado para tomas de oradores individuales — las tomas amplias/de establecimiento muestran asientos vacíos donde deberían estar otros oradores. Encuadra de cintura o pecho para arriba para que no se vean sillas vacías.
-
SIEMPRE pasa el logo como imagen de referencia al generar personajes de marca — describir un logo en texto produce resultados incorrectos. Pasa el archivo real del logo como una segunda entrada de imagen.
-
SIEMPRE obtén aprobación de la voz antes de la producción completa — genera muestras con la misma línea entre 5-8 voces candidatas y deja que el usuario elija antes de comprometerte con el guion completo.
-
El guion debe leerse como una conversación, no como un anuncio — personas leyendo texto publicitario por turnos suena falso. Incluye reacciones, interrupciones, longitudes de turno variadas y preguntas genuinas. El presentador debe tener personalidad, no solo preparar puntos de discusión.
Referencia de Aplicaciones
| App | Propósito |
|---|---|
pruna/p-image | Generar retratos a partir de texto |
phota/train | Entrenar perfil de identidad con 30-50 imágenes faciales |
phota/generate | Generar imágenes con identidad entrenada mediante [[profile_id]] |
phota/edit | Editar imágenes conservando la identidad de sujetos conocidos |
google/gemini-3-pro-image-preview | Generación/edición de imágenes, mascotas, transferencia de estilo |
inworld/text-to-speech-2 | Texto a voz, más de 100 idiomas, control de voz |
pruna/p-video-avatar | Retrato + audio → video de persona hablando |
infsh/media-merger | Concatenar clips de video en un solo video |
Usa belt task cost <task-id> para verificar el costo de cualquier tarea individual.