belt CLI 스킬 설치:
npx skills add belt-sh/cli
토킹 헤드 제작
inference.sh CLI를 통해 AI 아바타와 립싱크로 토킹 헤드 비디오를 만듭니다.
빠른 시작
inference.sh CLI(
belt)가 필요합니다. 설치 방법
belt login
# 권장: P-Video-Avatar (내장 TTS, 가장 빠르고 저렴함)
belt app run pruna/p-video-avatar --input '{
"image": "https://portrait.jpg",
"voice_script": "Welcome to our product tour. Today I will show you three features that will save you hours every week.",
"voice": "Zephyr (Female)"
}'
초상화 요구 사항
원본 초상화 이미지는 매우 중요합니다. 초상화가 좋지 않으면 비디오 출력도 좋지 않습니다.
필수 조건
| 요구 사항 | 이유 | 명세 |
|---|---|---|
| 중앙 프레임 | 아바타가 예측 가능한 위치에 얼굴이 필요함 | 얼굴이 프레임 중앙에 위치 |
| 머리와 어깨 | 자연스러운 제스처를 위해 몸이 보여야 함 | 가슴 아래에서 자름 |
| 카메라를 응시하는 눈 | 시청자와의 연결감 형성 | 정면 시선 |
| 중립 표정 | 애니메이션의 시작점 | 약간 미소는 괜찮지만 웃거나 찡그리지 않음 |
| 뚜렷한 얼굴 | 모델이 특징을 감지해야 함 | 선글라스, 짙은 그림자, 장애물 없음 |
| 고해상도 | 디테일 보존 | 최소 512x512 얼굴 영역, 이상적으로 1024x1024 이상 |
초상화 생성
# P-Image로 전문적인 초상화 생성
belt app run pruna/p-image --input '{
"prompt": "professional headshot portrait of a friendly business person, soft studio lighting, clean grey background, head and shoulders, direct eye contact, neutral pleasant expression, photorealistic",
"aspect_ratio": "9:16"
}'
배경 옵션
| 유형 | 사용 시기 |
|---|---|
| 단색 | 전문적이고 깔끔하며 합성하기 쉬움 |
| 소프트 보케 | 자연스럽고 라이프스타일 느낌 |
| 사무실/스튜디오 | 비즈니스 맥락 |
| 동적 (P-Video-Avatar) | video_prompt를 사용하여 배경 설정 |
모델 선택
P-Video-Avatar로 시작하세요 — 대안보다 18배 빠르고 6배 저렴하며 내장 TTS가 있습니다.
| 모델 | 앱 ID | 내장 TTS | 최적 용도 |
|---|---|---|---|
| P-Video-Avatar | pruna/p-video-avatar | 예 (30개 음성, 10개 언어) | 전반적으로 최고: 속도, 비용, 품질 |
| OmniHuman 1.5 | bytedance/omnihuman-1-5 | 아니요 | 다중 캐릭터, 제스처 |
| OmniHuman 1.0 | bytedance/omnihuman-1-0 | 아니요 | 단일 캐릭터 |
| Fabric 1.0 | falai/fabric-1-0 | 예 | 립싱크로 이미지 말하기 |
| PixVerse Lipsync | falai/pixverse-lipsync | 아니요 | 사실적인 립싱크 |
비용 및 속도 비교
| 모델 | 속도 (비디오 1초당) | 초당 비용 |
|---|---|---|
| P-Video-Avatar | ~1.83s/s | $0.025 |
| OmniHuman 1.5 | ~28s/s (15배 느림) | $0.16 (6.4배 비쌈) |
| Fabric 1.0 | ~34s/s (18배 느림) | $0.14 (5.6배 비쌈) |
제작 워크플로우
간단: 텍스트 스크립트 -> 비디오 (P-Video-Avatar)
별도의 TTS 단계가 필요 없습니다 — P-Video-Avatar에는 내장 음성이 있습니다:
belt app run pruna/p-video-avatar --input '{
"image": "https://portrait.jpg",
"voice_script": "Hi there! I am excited to share something with you today.",
"voice": "Puck (Male)",
"voice_language": "English (US)",
"resolution": "720p"
}'
스타일 제어 포함
belt app run pruna/p-video-avatar --input '{
"image": "https://portrait.jpg",
"voice_script": "This is exciting news for our community!",
"voice": "Aoede (Female)",
"voice_prompt": "Enthusiastic and energetic tone, slightly faster pace",
"video_prompt": "The person is presenting on stage with dramatic lighting",
"resolution": "1080p"
}'
오디오 기반 (모든 모델)
자체 오디오 파일 제공:
# 커스텀 오디오로 P-Video-Avatar
belt app run pruna/p-video-avatar --input '{
"image": "https://portrait.jpg",
"audio": "https://speech.mp3"
}'
# 커스텀 오디오로 OmniHuman
belt app run bytedance/omnihuman-1-5 --input '{
"image_url": "https://portrait.jpg",
"audio_url": "https://speech.mp3"
}'
전체 워크플로우: 초상화 생성 + 아바타
# 1. 초상화 이미지 생성
belt app run pruna/p-image --input '{
"prompt": "professional headshot portrait of a young woman, neutral background, looking at camera, studio lighting, photorealistic",
"aspect_ratio": "9:16"
}'
# 2. 내장 TTS로 아바타 비디오 생성
belt app run pruna/p-video-avatar --input '{
"image": "<image-url-from-step-1>",
"voice_script": "Hi there! Let me walk you through our latest features.",
"voice": "Zephyr (Female)"
}'
별도 TTS 사용 (TTS가 없는 모델용)
# 1. 음성 생성
belt app run falai/dia-tts --input '{
"prompt": "[S1] Your narration script here."
}'
# 2. 토킹 헤드 생성
belt app run bytedance/omnihuman-1-5 --input '{
"image_url": "https://portrait.jpg",
"audio_url": "<audio-url-from-step-1>"
}'
다중 캐릭터 대화
OmniHuman 1.5는 최대 2명의 캐릭터를 지원합니다:
# 1. 두 명의 화자로 대화 생성
belt app run falai/dia-tts --input '{
"prompt": "[S1] So tell me about the new feature. [S2] Sure! We built a dashboard that shows real-time analytics. [S1] That sounds great. How long did it take? [S2] About two weeks from concept to launch."
}'
# 2. 두 캐릭터로 비디오 생성
belt app run bytedance/omnihuman-1-5 --input '{
"image_url": "https://two-person-portrait.png",
"audio_url": "<audio-url>"
}'
장편 (분할 클립)
약 60초보다 긴 콘텐츠의 경우 세그먼트로 분할:
# 일관성을 위해 동일한 초상화로 클립 생성
belt app run pruna/p-video-avatar --input '{"image": "https://portrait.jpg", "voice_script": "Segment one..."}' --no-wait
belt app run pruna/p-video-avatar --input '{"image": "https://portrait.jpg", "voice_script": "Segment two..."}' --no-wait
belt app run pruna/p-video-avatar --input '{"image": "https://portrait.jpg", "voice_script": "Segment three..."}' --no-wait
# 모든 세그먼트 병합
belt app run infsh/media-merger --input '{
"media": ["segment1.mp4", "segment2.mp4", "segment3.mp4"]
}'
다국어 콘텐츠
P-Video-Avatar는 내장 TTS로 10개 언어를 지원합니다:
# 스페인어
belt app run pruna/p-video-avatar --input '{
"image": "https://portrait.jpg",
"voice_script": "Bienvenidos a nuestra demostración de producto.",
"voice": "Kore (Female)",
"voice_language": "Spanish"
}'
# 일본어
belt app run pruna/p-video-avatar --input '{
"image": "https://portrait.jpg",
"voice_script": "こんにちは、製品デモへようこそ。",
"voice": "Leda (Female)",
"voice_language": "Japanese"
}'
기존 비디오 더빙
# 1. 원본 비디오 자막 추출
belt app run infsh/fast-whisper-large-v3 --input '{"audio_url": "https://video.mp4"}'
# 2. 텍스트 번역 (수동 또는 LLM으로)
# 3. 새 언어로 음성 생성
belt app run infsh/kokoro-tts --input '{"text": "<translated-text>"}'
# 4. 새 오디오로 원본 비디오 립싱크
belt app run infsh/latentsync-1-6 --input '{
"video_url": "https://original-video.mp4",
"audio_url": "<new-audio-url>"
}'
오디오 품질 (TTS가 없는 워크플로우용)
자체 오디오를 제공할 때 품질이 립싱크 정확도에 직접적인 영향을 미칩니다.
| 파라미터 | 목표 | 이유 |
|---|---|---|
| 배경 소음 | 없음/최소 | 소음이 립싱크 타이밍을 혼란스럽게 함 |
| 볼륨 | 일관되게 유지 | 싱크 드리프트 방지 |
| 샘플 레이트 | 44.1kHz 또는 48kHz | 표준 품질 |
| 포맷 | MP3 128kbps+ 또는 WAV | 모든 도구와 호환 가능 |
사용 가능한 음성 (P-Video-Avatar)
여성: Zephyr, Kore, Leda, Aoede, Callirrhoe, Autonoe, Despina, Erinome, Laomedeia, Achernar, Gacrux, Pulcherrima, Vindemiatrix, Sulafat
남성: Puck, Charon, Fenrir, Orus, Enceladus, Iapetus, Umbriel, Algenib, Algieba, Schedar, Achird, Zubenelgenubi, Sadachbia, Sadaltager, Alnilam, Rasalgethi
언어: English (US), English (UK), Spanish, French, German, Italian, Portuguese (Brazil), Japanese, Korean, Hindi
프레이밍 가이드라인
┌─────────────────────────────────┐
│ 헤드룸 (최소) │
│ ┌───────────────────────────┐ │
│ │ │ │
│ │ ● ─ ─ 눈은 1/3 지점 ─│─ │ ← 눈은 상단 1/3 선에 위치
│ │ /|\ │ │
│ │ | 머리와 어깨 │ │
│ │ / \ 보여야 함 │ │
│ │ │ │
│ └───────────────────────────┘ │
│ 가슴 아래에서 자름 │
└─────────────────────────────────┘
일반적인 실수
| 실수 | 문제 | 해결책 |
|---|---|---|
| 저해상도 초상화 | 흐릿한 얼굴, 부실한 립싱크 | 1024x1024+ 얼굴 영역 사용 |
| 프로필/측면 각도 | 립싱크가 입을 잘 추적하지 못함 | 정면 또는 정면에 가깝게 사용 |
| 잡음이 있는 오디오 | 립싱크 드리프트, 부자연스러워 보임 | 내장 TTS 사용 또는 깨끗하게 녹음 |
| 너무 긴 클립 | 품질 저하 | 세그먼트로 분할, 스티칭 |
| 선글라스/장애물 | 얼굴 특징 숨겨짐 | 뚜렷한 얼굴 필요 |
| 일관되지 않은 조명 | 애니메이션 시 어색함 | 균일하고 부드러운 조명 |
관련 스킬
# 전용 P-Video-Avatar 스킬
npx skills add inference-sh/skills@p-video-avatar
# 모든 아바타 모델
npx skills add inference-sh/skills@ai-avatar-video
# 모든 비디오 생성 모델
npx skills add inference-sh/skills@ai-video-generation
# 텍스트-음성 변환
npx skills add inference-sh/skills@text-to-speech
# 이미지 생성 (초상화용)
npx skills add inference-sh/skills@ai-image-generation
모든 앱 둘러보기: belt app list