AI 팟캐스트 제작기
inference.sh 파이프라인(초상화 생성 → TTS 오디오 → 아바타 비디오 → 병합)을 사용하여 여러 명이 대화하는 토킹 헤드 팟캐스트 비디오를 제작합니다. 실제 사람(Phota 사용), 3D 마스코트, 일러스트 캐릭터, 혼합 캐스트를 지원합니다.
사용자가 팟캐스트, 토킹 헤드 비디오, 데모 릴, 홍보 대화 또는 여러 발화자가 있는 모든 형태의 비디오 콘텐츠를 만들고자 할 때 사용하세요.
파이프라인 개요
캐릭터(이미지) → TTS(턴별 오디오) → 아바타(턴별 비디오) → 병합(최종 비디오)
프로세스
1단계: 캐릭터 생성
캐릭터 유형별로 적절한 도구를 선택하세요.
| 캐릭터 유형 | 도구 | 비고 |
|---|---|---|
| 실제 사람 (신규) | pruna/p-image | 16:9, prompt_upsampling: true. 빠르고 학습 불필요하나, 여러 번 생성 시 정체성 일관성 없음. |
| 실제 사람 (일관된 ID) | phota/generate + [[profile_id]] | 모든 샷에서 일관된 정체성 유지. 먼저 Phota 프로필 학습 필요 (아래 참조). |
| 브랜드 마스코트/로고 캐릭터 | google/gemini-3-pro-image-preview | 로고 + 캐릭터 시트를 참조 이미지로 전달 |
| 일러스트/스타일화된 캐릭터 | google/gemini-3-pro-image-preview | 스타일 참조를 입력 이미지로 전달 |
Phota 정체성 학습 (권장, 실제 사람의 경우):
다양한 각도와 샷에서 일관된 정체성을 가진 실제 사람 캐릭터가 필요하다면 먼저 Phota 프로필을 학습하세요.
infsh app run phota/train --input '{
"images": ["url1.jpg", "url2.jpg", ...],
"wait": true
}' --save profile.json
- 피사체의 얼굴 이미지 30-50장 필요
wait: true로 설정 시 학습에 몇 분 소요phota/generate에서[[profile_id]]로 사용할profile_id반환- 프로필은 영구 재사용 가능 — 한 번 학습으로 무제한 샷 생성
샷 간 일관성이 필요 없는 경우(예: 단일 발화자 비디오, 한 각도만 사용)에는 pruna/p-image가 더 간단하고 저렴합니다.
캐릭터 시트 우선, 팟캐스트 프레임 차후:
- 각 캐릭터의 캐릭터 시트(흰색 배경, 여러 각도)를 먼저 생성합니다.
- 그런 다음 시트를 참조로 캐릭터를 팟캐스트 스튜디오 설정에 배치합니다.
브랜드 캐릭터(옷에 로고가 있는 경우):
- 의복의 기본 버전으로 캐릭터를 생성합니다.
phota/edit을 사용하고 두 번째 참조 이미지로 로고를 전달하여 로고를 추가합니다.- 새로운 각도를 생성할 때는 항상 로고 이미지를 캐릭터 참조와 함께 전달합니다.
2단계: 다양한 각도 생성
시각적 다양성을 위해 캐릭터당 최소 2개의 각도를 생성하세요.
| 각도 | 사용 시기 |
|---|---|
| 전면/중간 | 도입 샷, 오프닝, 클로징 |
| 클로즈업 | 반응, 감정적 순간, 임팩트 있는 대사 |
클로즈업의 경우 "타이트한 프레임, 가슴 위, 얕은 심도"로 프롬프트하세요. "옆으로 돌린"은 피하세요 (그냥 다른 곳을 보는 것처럼 보입니다).
정체성 일관성 규칙:
- Phota 프로필이 있는 실제 사람: 새로운 각도에는
phota/generate또는phota/edit사용 — Gemini는 얼굴 정체성을 보존하지 않아 완전히 다른 사람이 생성됩니다. - Phota 프로필이 없는 실제 사람:
pruna/p-image로 필요한 모든 각도를 한 번에 생성하거나, 많은 샷이 필요하면 Phota 프로필 학습을 고려하세요. - 마스코트/일러스트: Gemini 3 Pro를 사용하고 기존 프레임을 참조로 전달하세요.
프레이밍 규칙: 개별 발화자에게는 타이트한 프레임을 사용하세요. 여러 좌석이 있는 와이드 샷은 한 사람만 화면에 있을 때 빈 의자가 보입니다.
3단계: 프레임 품질 검사(QA)
비디오 생성 전에 모든 프레임을 시각적으로 검사하여 다음을 확인하세요.
- 배경에 추가 인물
- 여러 개의 마이크 (샷당 하나여야 함)
- 잘못되었거나 왜곡된 로고
- 각도 간 캐릭터 정체성 불일치
- 이상한 아티팩트 (추가 팔, 병합된 객체)
비디오 생성 전에 문제를 수정하세요. 비디오 재렌더링은 파이프라인에서 가장 비용이 많이 드는 단계입니다.
4단계: 스크립트 작성
자연스러운 대화를 위한 규칙:
- 실제 대화처럼 작성하세요. 돌아가며 광고 카피를 읽는 듯한 느낌이 아니어야 합니다.
- 반응("잠깐만, ""말도 안 돼"), 끼어들기, 후속 질문을 포함하세요.
- 턴 길이를 다양하게 하세요. 짧은 반응(1문장)과 긴 설명(2-3문장)을 섞으세요.
- 진행자는 실제 질문을 해야 하며, 명백한 화제를 설정해서는 안 됩니다.
- 총 길이 목표를 염두에 두세요: 1.05배 속도로 자연스러운 말하기 약 2.5단어/초.
길이 가이드:
| 목표 | 단어 수 |
|---|---|
| 15초 | ~38단어 |
| 30초 | ~75단어 |
| 60초 | ~150단어 |
5단계: TTS 오디오 생성
각 턴에 대해 inworld/text-to-speech-2를 사용하세요.
infsh app run inworld/text-to-speech-2 --input '{
"text": "...",
"voice_id": "...",
"speaking_rate": 1.05,
"audio_encoding": "MP3"
}' --save output.json
음성 선택:
- 후보 음성들로 동일한 대사를 샘플로 생성한 후 최종 결정 전에 사용자에게 듣게 하세요.
- 사용자가 음성을 듣고 승인하도록 하세요.
- 좋은 팟캐스트 음성: Tyler, Nate, Lauren, Kelsey, Naomi, Anjali (EN_US)
- 사용 가능한 모든 음성 목록은
inworld/text-to-speech-2:voices를 사용하세요.
말하기 속도:
- 기본값 1.05 (자연스러운 팟캐스트 페이스)
- 짧고 빠른 반응에는 1.1 사용
- 절대 1.0 미만으로 설정하지 마세요. — 느리고 지루하게 들립니다.
- 모든 턴에서 캐릭터별로 속도를 일관되게 유지하세요.
모든 TTS 턴은 병렬로 실행 가능합니다 (저렴하고 빠름, 약 2-8초).
6단계: 비디오 클립 생성
각 턴에 대해 pruna/p-video-avatar를 사용하세요.
infsh app run pruna/p-video-avatar --input '{
"image": "<character_frame_url>",
"audio": "<tts_audio_url>",
"resolution": "720p",
"video_prompt": "..."
}' --save output.json
중요: 클립을 순차적으로 실행하세요, 병렬로 실행하지 마세요. 병렬 실행은 동일한 GPU에서 CUDA OOM 오류를 발생시킵니다. 각 클립은 오디오 길이에 따라 15-90초가 소요됩니다.
각도 배치 계획: 시각적 다양성을 위해 턴 전체에서 전면 샷과 클로즈업 샷을 번갈아 사용하세요. 6턴 예시:
T1: 발화자 A — 전면
T2: 발화자 B — 전면
T3: 발화자 C — 전면 (또는 클로즈업)
T4: 발화자 A — 클로즈업
T5: 발화자 B — 클로즈업
T6: 발화자 A — 전면
7단계: 병합
infsh/media-merger를 사용하여 모든 클립을 최종 비디오로 이어 붙입니다.
# 입력 JSON 구축
{
"media_files": [
{"file": "<clip1_url>"},
{"file": "<clip2_url>"},
...
],
"fps": 24,
"output_format": "mp4"
}
infsh app run infsh/media-merger --input merger_input.json --save final.json
병합은 무료이며 총 길이에 따라 2-6분이 소요됩니다.
규칙
-
Gemini는 사람의 얼굴 정체성을 보존하지 않습니다. — 실제 사람의 대체 각도를 Gemini로 생성하면 완전히 다른 사람이 생성됩니다. 정체성이 일관된 사람 샷을 위해서는 학습된 profile_id와 함께 Phota를 사용하거나, 모든 각도를 단일 배치로 생성하세요. 이 규칙은 Gemini가 전면 샷과 일치해야 하는 클로즈업에서 완전히 다른 얼굴을 생성한 후에 학습되었습니다.
-
절대 p-video-avatar 클립을 병렬로 실행하지 마세요. — GPU 메모리를 두고 경쟁하여 CUDA OOM 오류로 실패합니다. 순차적으로 실행하세요. 이 규칙은 3개의 병렬 실행 중 2개가 실패한 후에 학습되었습니다.
-
절대 speaking_rate를 1.0 미만으로 설정하지 마세요. — 인위적이고 지루하게 들립니다. 기본값은 1.05입니다. 사용자 피드백에서 0.9 속도가 "이상하고 지루하게 느껴졌다"는 의견을 받은 후 학습되었습니다.
-
비디오 생성 전에 항상 프레임 QA를 수행하세요. — 비디오 생성은 파이프라인에서 가장 비용이 많이 드는 단계입니다. 이미지 단계에서 이중 마이크나 잘못된 로고를 발견하면 수정하는 데 비용이 적게 듭니다. 비디오 생성 후 발견하면 전체 클립을 다시 렌더링해야 합니다.
-
개별 발화자 샷에는 항상 타이트한 프레이밍을 사용하세요. — 와이드/도입 샷은 다른 발화자가 있어야 할 빈 자리를 보여줍니다. 허리나 가슴 위부터 프레이밍하여 빈 의자가 보이지 않도록 하세요.
-
브랜드 캐릭터를 생성할 때는 항상 로고를 참조 이미지로 전달하세요. — 텍스트로 로고를 설명하면 잘못된 결과가 생성됩니다. 실제 로고 파일을 두 번째 이미지 입력으로 전달하세요.
-
전체 제작 전에 항상 음성 승인을 받으세요. — 5-8개의 후보 음성으로 동일한 대사의 샘플을 생성하고 사용자가 전체 스크립트에 투입하기 전에 선택하도록 하세요.
-
스크립트는 대화처럼 읽혀야 하며, 광고처럼 읽혀서는 안 됩니다. — 돌아가며 광고 카피를 읽는 사람들은 가짜처럼 들립니다. 반응, 끼어들기, 다양한 턴 길이, 진정한 질문을 포함하세요. 진행자는 개성이 있어야 하며, 단순히 화제를 설정하는 역할이 아니어야 합니다.
앱 참조
| 앱 | 목적 |
|---|---|
pruna/p-image | 텍스트로 초상화 생성 |
phota/train | 30-50장의 얼굴 이미지로 정체성 프로필 학습 |
phota/generate | [[profile_id]]로 학습된 정체성을 사용한 이미지 생성 |
phota/edit | 알려진 피사체의 정체성을 유지하며 이미지 편집 |
google/gemini-3-pro-image-preview | 이미지 생성/편집, 마스코트, 스타일 전이 |
inworld/text-to-speech-2 | 텍스트 음성 변환, 100개 이상 언어, 음성 제어 |
pruna/p-video-avatar | 초상화 + 오디오 → 토킹 헤드 비디오 |
infsh/media-merger | 비디오 클립을 하나로 연결 |
개별 작업의 비용을 확인하려면 belt task cost <task-id>를 사용하세요.