Gerador de Podcast com IA
Crie vídeos de podcast com múltiplos participantes usando o pipeline inference.sh: geração de retratos → áudio TTS → vídeo avatar → junção. Suporta humanos reais (via Phota), mascotes 3D, personagens ilustrados e elencos mistos.
Use quando o usuário desejar criar um podcast, vídeo com apresentador, demo reel, conversa promocional ou qualquer conteúdo de vídeo com vários falantes.
Visão Geral do Pipeline
Personagens (imagens) → TTS (áudio por fala) → Avatar (vídeo por fala) → Junção (vídeo final)
Processo
Etapa 1: Criação de Personagens
Escolha a ferramenta certa para cada tipo de personagem:
| Tipo de Personagem | Ferramenta | Observações |
|---|---|---|
| Humano real (novo) | pruna/p-image | 16:9, prompt_upsampling: true. Rápido, sem necessidade de treino, mas a identidade não será consistente entre várias gerações. |
| Humano real (ID consistente) | phota/generate com [[profile_id]] | Identidade consistente em todas as tomadas. Exige um perfil Phota treinado primeiro (veja abaixo). |
| Mascote da marca / personagem logotipo | google/gemini-3-pro-image-preview | Passe o logotipo + ficha do personagem como imagens de referência |
| Ilustrado / estilizado | google/gemini-3-pro-image-preview | Passe uma referência de estilo como imagem de entrada |
Treinando uma identidade Phota (opcional, mas recomendado para humanos):
Se você precisar de um personagem humano real com identidade consistente em vários ângulos e tomadas, treine um perfil Phota primeiro:
infsh app run phota/train --input '{
"images": ["url1.jpg", "url2.jpg", ...],
"wait": true
}' --save profile.json
- Requer 30-50 imagens de rosto do sujeito
- O treinamento leva alguns minutos com
wait: true - Retorna um
profile_idque você usa emphota/generatecomo[[profile_id]]nos prompts - O perfil é reutilizável para sempre — treine uma vez, gere tomadas ilimitadas
Se você não precisar de consistência entre tomadas (ex.: vídeo com um único apresentador, apenas um ângulo), pruna/p-image é mais simples e barato.
Fichas de personagens primeiro, quadros de podcast depois:
- Gere uma ficha do personagem (fundo branco liso, múltiplos ângulos) para cada personagem
- Depois, coloque os personagens no cenário do estúdio de podcast usando a ficha como referência
Para personagens com marca (logotipo na roupa):
- Gere o personagem com uma versão lisa da peça de roupa
- Use
phota/editcom o logotipo como segunda imagem de referência para adicionar o logotipo - Sempre passe a imagem do logotipo junto com as referências do personagem ao gerar novos ângulos
Etapa 2: Ângulos Alternados
Gere pelo menos 2 ângulos por personagem para variedade visual:
| Ângulo | Quando usar |
|---|---|
| Frente/médio | Tomadas de estabelecimento, abertura, encerramento |
| Close-up | Reações, momentos emocionais, falas impactantes |
Para close-ups, peça "enquadramento fechado, busto para cima, profundidade de campo rasa" — não "virado para o lado" (que só faz a pessoa olhar para o lado).
Regras de consistência de identidade:
- Para humanos reais com perfil Phota: use
phota/generateouphota/editpara novos ângulos — o Gemini não preserva a identidade facial e produzirá uma pessoa diferente - Para humanos reais sem perfil Phota: tente gerar todos os ângulos necessários de uma só vez com
pruna/p-image, ou considere treinar um perfil Phota se precisar de muitas tomadas - Para mascotes/ilustrações: o Gemini 3 Pro é suficiente, passe o quadro estabelecido como referência
Regra de enquadramento: Use enquadramento fechado para falantes individuais. Tomadas abertas com múltiplos assentos mostram cadeiras vazias quando apenas uma pessoa está na tela.
Etapa 3: Revisão de Quadros
Antes de prosseguir, inspecione visualmente todos os quadros para:
- Pessoas extras no fundo
- Múltiplos microfones (deve haver um único microfone por tomada)
- Logotipos errados ou distorcidos
- Identidade inconsistente do personagem entre ângulos
- Artefatos estranhos (membros extras, objetos mesclados)
Corrija problemas antes de gerar vídeo — regerar vídeo é a etapa mais cara do pipeline.
Etapa 4: Escreva o Roteiro
Regras para conversa natural:
- Escreva como uma conversa real, NÃO como pessoas lendo texto de anúncio em turnos
- Inclua reações ("pera aí", "isso é loucura"), interrupções e perguntas de acompanhamento
- Varie o comprimento dos turnos — reações curtas (1 frase) misturadas com explicações mais longas (2-3 frases)
- O apresentador deve fazer perguntas reais, não preparar pontos de discussão óbvios
- Mantenha a duração total alvo em mente: ~2,5 palavras/segundo para fala natural a uma taxa de 1,05x
Guia de duração:
| Alvo | Palavras |
|---|---|
| 15s | ~38 palavras |
| 30s | ~75 palavras |
| 60s | ~150 palavras |
Etapa 5: Gere Áudio TTS
Use inworld/text-to-speech-2 para cada fala.
infsh app run inworld/text-to-speech-2 --input '{
"text": "...",
"voice_id": "...",
"speaking_rate": 1.05,
"audio_encoding": "MP3"
}' --save output.json
Seleção de voz:
- Gere amostras com a mesma linha em vozes candidatas ANTES de confirmar
- Deixe o usuário ouvir e aprovar as vozes
- Boas vozes para podcast: Tyler, Nate, Lauren, Kelsey, Naomi, Anjali (EN_US)
- Use
inworld/text-to-speech-2:voicespara listar todas as vozes disponíveis
Taxa de fala:
- Padrão: 1,05 para ritmo natural de podcast
- Use 1,1 para reações curtas e rápidas
- NUNCA abaixo de 1,0 — soa lento e desinteressante
- Mantenha a taxa consistente por personagem em todas as suas falas
Todas as falas TTS podem ser executadas em paralelo (barato, rápido ~2-8s cada).
Etapa 6: Gere Clipes de Vídeo
Use pruna/p-video-avatar para cada fala.
infsh app run pruna/p-video-avatar --input '{
"image": "<url_do_quadro_do_personagem>",
"audio": "<url_do_audio_tts>",
"resolution": "720p",
"video_prompt": "..."
}' --save output.json
Crítico: Execute clipes SEQUENCIALMENTE, não em paralelo. Execuções paralelas atingem a mesma GPU e causam falhas CUDA OOM. Cada clipe leva 15-90s dependendo da duração do áudio.
Plano de atribuição de ângulos: Alterne entre tomadas frontais e close-ups entre as falas para variedade visual. Exemplo para 6 falas:
F1: Falante A — frente
F2: Falante B — frente
F3: Falante C — frente (ou close-up)
F4: Falante A — close-up
F5: Falante B — close-up
F6: Falante A — frente
Etapa 7: Junção
Use infsh/media-merger para unir todos os clipes no vídeo final.
# Construa o JSON de entrada
{
"media_files": [
{"file": "<url_clipe1>"},
{"file": "<url_clipe2>"},
...
],
"fps": 24,
"output_format": "mp4"
}
infsh app run infsh/media-merger --input merger_input.json --save final.json
O merger é gratuito e leva 2-6 minutos dependendo da duração total.
Regras
-
O Gemini não preserva a identidade facial humana — gerar ângulos alternados de um humano real com o Gemini produzirá uma pessoa diferente. Para tomadas humanas com identidade consistente, use Phota com um profile_id treinado, ou gere todos os ângulos em um único lote. Isso foi aprendido depois que o Gemini produziu um rosto completamente diferente para um close-up que deveria corresponder à tomada frontal.
-
NUNCA execute clipes p-video-avatar em paralelo — eles competem pela memória da GPU e falham com CUDA OOM. Execute-os sequencialmente. Isso foi aprendido depois que 2 de 3 execuções paralelas falharam.
-
NUNCA defina speaking_rate abaixo de 1.0 — soa artificial e desinteressante. Padrão: 1.05. Aprendido com feedback do usuário de que a taxa 0.9 "parecia estranha e desinteressante".
-
SEMPRE revise os quadros antes de gerar vídeo — a geração de vídeo é a etapa mais cara do pipeline. Detectar um microfone duplicado ou logotipo errado na fase de imagem é barato de corrigir. Detectar após a geração de vídeo significa regerar o clipe inteiro.
-
SEMPRE use enquadramento fechado para tomadas de falante individual — tomadas abertas/de estabelecimento mostram assentos vazios onde outros falantes deveriam estar. Enquadre da cintura ou busto para cima para que nenhuma cadeira vazia fique visível.
-
SEMPRE passe o logotipo como imagem de referência ao gerar personagens de marca — descrever um logotipo em texto produz resultados errados. Passe o arquivo real do logotipo como uma segunda imagem de entrada.
-
SEMPRE obtenha aprovação de voz antes da produção completa — gere amostras com a mesma linha em 5-8 vozes candidatas e deixe o usuário escolher antes de confirmar com o roteiro completo.
-
O roteiro deve soar como uma conversa, não como um anúncio — pessoas lendo texto de anúncio em turnos soa falso. Inclua reações, interrupções, comprimentos variados de turno e perguntas genuínas. O apresentador deve ter personalidade, não apenas preparar pontos de discussão.
Referência de Aplicativos
| Aplicativo | Propósito |
|---|---|
pruna/p-image | Gerar retratos a partir de texto |
phota/train | Treinar perfil de identidade a partir de 30-50 imagens de rosto |
phota/generate | Gerar imagens com identidade treinada via [[profile_id]] |
phota/edit | Editar imagens preservando a identidade de sujeitos conhecidos |
google/gemini-3-pro-image-preview | Geração/edição de imagens, mascotes, transferência de estilo |
inworld/text-to-speech-2 | Texto para fala, 100+ idiomas, direcionamento de voz |
pruna/p-video-avatar | Retrato + áudio → vídeo com apresentador |
infsh/media-merger | Concatenar clipes de vídeo em um único vídeo |
Use belt task cost <task-id> para verificar o custo de qualquer tarefa individual.