PLAN.md: Avatar als Kernbestandteil, PiP 20% unten rechts, SadTalker auf 3080 #2, neue Pipeline-Abfolge TTS→Avatar→Assembly
This commit is contained in:
parent
faafb9938e
commit
e38f502169
1 changed files with 194 additions and 99 deletions
293
ki-video/PLAN.md
293
ki-video/PLAN.md
|
|
@ -8,16 +8,51 @@ Kein Spielzeug-Demo, kein Forschungsprojekt: Thema rein → fertiges Video raus.
|
|||
|
||||
## Videoformat
|
||||
|
||||
Referenz-Stil: **"Geld & Imperien"** (YouTube, geopolitischer Commentary-Kanal)
|
||||
Beispielvideo: https://youtu.be/4XfhrrbklbM (24 Min, "Irans Hyperschall-Schlag")
|
||||
Referenz-Stil: **"Geld & Imperien"** / **"Money & People"** (YouTube, geopolitische Commentary-Kanaele)
|
||||
Beispielvideos:
|
||||
- https://youtu.be/4XfhrrbklbM (24 Min, "Irans Hyperschall-Schlag", Geld & Imperien)
|
||||
- https://youtu.be/MIkAOwJYaP0 (19 Min, "Irans Machtuebernahme", Money & People)
|
||||
|
||||
| Eigenschaft | Beschreibung |
|
||||
|---|---|
|
||||
| **Typ** | Commentary, Erklaervideos, Meinungs-/Analyseformate |
|
||||
| **Laenge** | 10-30 Minuten |
|
||||
| **Stil** | Professionelle Erzaehlstimme + Bilder + Karten + Infografiken + Text-Overlays + Ken-Burns |
|
||||
| **Kein** | Face-Cam, Schnitte auf Person, Realfilm |
|
||||
| **Optional** | Sprechender Avatar (SadTalker) — erst ab v2 |
|
||||
| **Avatar** | **Sprechender KI-Avatar als PiP-Overlay (~20% Bildschirm, unten rechts)** |
|
||||
| **Kein** | Echte Face-Cam, Realfilm, Hollywood-VFX |
|
||||
|
||||
### Avatar-Konzept (Picture-in-Picture)
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ │
|
||||
│ HAUPTBILD (80%) │
|
||||
│ Karten, Infografiken, Szenenbilder │
|
||||
│ Ken-Burns, Zoom, Ueberblendungen │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ ┌─────────────┐ │
|
||||
│ │ │ │
|
||||
│ │ AVATAR │ │
|
||||
│ │ (~20%) │ │
|
||||
│ │ lip-sync │ │
|
||||
│ │ sprechend │ │
|
||||
│ └─────────────┘ │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
1920 x 1080 (Full HD)
|
||||
|
||||
Avatar-Overlay:
|
||||
- Groesse: ~384 x 384 px (20% der Bildhoehe)
|
||||
- Position: unten rechts, 40px Padding
|
||||
- Hintergrund: halbtransparenter Kreis oder abgerundetes Rechteck
|
||||
- Inhalt: Sprechende Person (SadTalker) synchron zum Voiceover
|
||||
- Stil: professionell, Brustbild, neutraler Hintergrund
|
||||
```
|
||||
|
||||
Der Avatar laeuft DURCHGEHEND waehrend des gesamten Videos.
|
||||
Das Referenzbild fuer SadTalker ist ein einmalig generiertes Portraet (FLUX/SDXL).
|
||||
Die Lippenbewegung wird aus dem XTTS-Voiceover-Audio abgeleitet.
|
||||
|
||||
### Anatomie eines 20-Min-Videos (Referenz)
|
||||
|
||||
|
|
@ -27,7 +62,8 @@ Beispielvideo: https://youtu.be/4XfhrrbklbM (24 Min, "Irans Hyperschall-Schlag")
|
|||
| **Szenenbilder** | 80-120 Stueck | Karten, Infografiken, Symbolbilder, Illustrationen |
|
||||
| **Hero-Bilder** | 10-15 Stueck | Hochwertige Key-Visuals fuer Titelszenen/Kapitelwechsel |
|
||||
| **Text-Overlays** | 20-40 Stueck | Zahlen, Namen, Fakten als Einblendung |
|
||||
| **Voiceover** | 20 Min Audio | Natuerliche deutsche Maennerstimme |
|
||||
| **Avatar-Video** | 20 Min (durchgehend) | SadTalker lip-sync, PiP unten rechts, ~20% Bildschirm |
|
||||
| **Voiceover** | 20 Min Audio | XTTS v2, natuerliche deutsche Maennerstimme |
|
||||
| **Hintergrundmusik** | 1-2 Tracks | Ambient, dezent, lizenzfrei |
|
||||
| **Uebergaenge** | ~80-120 | Ken-Burns, Ueberblendungen, Zoom-Ins |
|
||||
|
||||
|
|
@ -54,7 +90,13 @@ Qwen 14B → Szenenplan: 100 Szenen mit je:
|
|||
▼
|
||||
Skript + Szenenplan als JSON → Orchestrator
|
||||
|
||||
PHASE 2 — PARALLEL-PRODUKTION (alle 5 GPUs, ~30-40 Min)
|
||||
PHASE 2a — TTS-VOICEOVER (3080 #0, ~15 Min, startet sofort)
|
||||
═════════════════════════════════════════════════════════════
|
||||
Orchestrator schickt Skript-Text an XTTS v2 Worker.
|
||||
Output: 20 Min deutsches Voiceover als WAV-Datei.
|
||||
Muss VOR SadTalker fertig sein (Avatar braucht Audio als Input).
|
||||
|
||||
PHASE 2b — PARALLEL-PRODUKTION (alle 5 GPUs, ~30-40 Min)
|
||||
══════════════════════════════════════════════════════════
|
||||
|
||||
┌──────────────────────────────────────────────────────────────────┐
|
||||
|
|
@ -67,20 +109,42 @@ PHASE 2 — PARALLEL-PRODUKTION (alle 5 GPUs, ~30-40 Min)
|
|||
│ 3090 ││ 3080 #0 ││ 3080 #1 ││ 3080 #2 ││ 3080 #3 │
|
||||
│ ki-tower ││ Worker ││ Worker ││ Worker ││ Worker │
|
||||
│ ││ ││ ││ ││ │
|
||||
│ FLUX.1 ││ SDXL ││ SDXL ││ XTTS v2 ││ ESRGAN │
|
||||
│ Hero- ││ Standard-││ Standard-││ Voiceover ││ Upscale │
|
||||
│ Bilder ││ Szenen ││ Szenen ││ 20 Min ││ + Whisper│
|
||||
│ 15 Stk ││ ~45 Stk ││ ~45 Stk ││ Audio ││ Untertit.│
|
||||
│ ~15 Min ││ ~20 Min ││ ~20 Min ││ ~15 Min ││ ~10 Min │
|
||||
│ FLUX.1 ││ SDXL ││ SDXL ││ SadTalker││ ESRGAN │
|
||||
│ Hero- ││ Standard-││ Standard-││ AVATAR ││ Upscale │
|
||||
│ Bilder ││ Szenen ││ Szenen ││ lip-sync ││ + Whisper│
|
||||
│ 15 Stk ││ ~50 Stk ││ ~50 Stk ││ 20 Min ││ Untertit.│
|
||||
│ ~15 Min ││ ~25 Min ││ ~25 Min ││ ~25 Min ││ ~10 Min │
|
||||
└──────────┘└──────────┘└──────────┘└──────────┘└──────────┘
|
||||
|
||||
Alle 5 GPUs arbeiten GLEICHZEITIG. Engpass = Bildgenerierung (~20-25 Min).
|
||||
Ablauf 3080 #0: XTTS v2 Voiceover (15 Min) → sobald fertig → SDXL Bilder (10 Min)
|
||||
Ablauf 3080 #2: Wartet auf Voiceover → SadTalker Avatar (25 Min, GPU-intensivster Job)
|
||||
Alle anderen starten sofort parallel.
|
||||
Engpass = SadTalker Avatar-Rendering (~25 Min fuer 20 Min Video).
|
||||
|
||||
SadTalker-Details:
|
||||
- Input: Referenz-Portraet (einmalig generiert) + Voiceover-Audio (aus Phase 2a)
|
||||
- Output: 20 Min Video (384x384 px) mit synchroner Lippenbewegung
|
||||
- Verarbeitung in ~30s-Clips, sequentiell auf 3080 #2
|
||||
- ~6 GB VRAM (passt auf 10 GB 3080)
|
||||
- Laengster Einzeljob → bestimmt Gesamtdauer Phase 2
|
||||
|
||||
PHASE 3 — ASSEMBLY + EXPORT (ki-tower, seriell, ~15-20 Min)
|
||||
════════════════════════════════════════════════════════════
|
||||
│
|
||||
▼
|
||||
FFmpeg: Bilder + Ken-Burns + Zoom + Ueberblendungen
|
||||
FFmpeg: Bilder + Ken-Burns + Zoom + Ueberblendungen → Hintergrund-Video
|
||||
│
|
||||
▼
|
||||
FFmpeg: Avatar-PiP compositen (unten rechts, 384x384, halbtransparenter Rahmen)
|
||||
│ ┌─────────────────────────────────────────────┐
|
||||
│ │ Hauptbild (Szene/Karte/Infografik) │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ ┌──────────┐ │
|
||||
│ │ │ Avatar │ │
|
||||
│ │ │ lip-sync │ │
|
||||
│ │ └──────────┘ │
|
||||
│ └─────────────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
FFmpeg: Audio-Mix (Voiceover + Hintergrundmusik + Lautstaerke-Normalisierung)
|
||||
|
|
@ -92,37 +156,39 @@ FFmpeg: Text-Overlays (Fakten, Zahlen, Namen) einbrennen
|
|||
FFmpeg: Untertitel (SRT aus Whisper) einbetten
|
||||
│
|
||||
▼
|
||||
NVENC: H.264/H.265 Encoding → fertiges MP4 (1080p/4K)
|
||||
NVENC: H.264/H.265 Encoding → fertiges MP4 (1080p)
|
||||
│
|
||||
▼
|
||||
Export: Thumbnail (FLUX hero-Bild, upscaled) + Titel + Description + Tags
|
||||
```
|
||||
|
||||
### Zeitschaetzung: 20-Minuten-Video im "Geld & Imperien"-Stil
|
||||
### Zeitschaetzung: 20-Minuten-Video mit Avatar
|
||||
|
||||
| Phase | Dauer | GPUs aktiv | Engpass |
|
||||
|---|---|---|---|
|
||||
| 1. Skript + Szenenplan | ~15 Min | 1 (3090) | LLM-Inferenz |
|
||||
| 2. Parallel-Produktion | ~25 Min | 5 (alle) | Bildgenerierung |
|
||||
| 3. Assembly + Export | ~15 Min | 1 (3090 NVENC) | FFmpeg Compositing |
|
||||
| **Gesamt** | **~55 Min** | | |
|
||||
| 2a. TTS-Voiceover | ~15 Min | 1 (3080 #0) | XTTS v2 Inferenz |
|
||||
| 2b. Parallel-Produktion | ~25 Min | 5 (alle) | **SadTalker Avatar** |
|
||||
| 3. Assembly + Export | ~20 Min | 1 (3090 NVENC) | FFmpeg PiP-Compositing |
|
||||
| **Gesamt** | **~75 Min** | | |
|
||||
|
||||
Zum Vergleich: Seriell auf nur 1 GPU = ~3-4 Stunden.
|
||||
Mit 5 GPUs parallel: **unter 1 Stunde fuer ein 20-Min-Video.**
|
||||
SadTalker ist jetzt der Engpass (statt Bildgenerierung).
|
||||
20 Min Lip-Sync-Video auf 3080 = ~25 Min Renderzeit.
|
||||
Zum Vergleich: Seriell auf nur 1 GPU = ~5-6 Stunden.
|
||||
|
||||
### GPU-Auslastung waehrend Phase 2
|
||||
|
||||
| GPU | Aufgabe | VRAM | Dauer | Output |
|
||||
|---|---|---|---|---|
|
||||
| **3090** (ki-tower) | FLUX.1-dev Hero-Bilder | ~12 GB | ~15 Min | 15 hochwertige Key-Visuals (1024x1024) |
|
||||
| **3080 #0** | SDXL Standard-Szenen | ~7 GB | ~20 Min | ~45 Szenenbilder (1024x1024) |
|
||||
| **3080 #1** | SDXL Standard-Szenen | ~7 GB | ~20 Min | ~45 Szenenbilder (1024x1024) |
|
||||
| **3080 #2** | XTTS v2 Voiceover | ~4 GB | ~15 Min | 20 Min deutsches Voiceover |
|
||||
| **3080 #3** | Real-ESRGAN + Whisper | ~3 GB | ~10 Min | Upscaled Bilder + SRT-Untertitel |
|
||||
| GPU | Schritt 1 | Dauer | Schritt 2 (wenn fertig) | Dauer | Output |
|
||||
|---|---|---|---|---|---|
|
||||
| **3090** | FLUX.1-dev Hero-Bilder | ~15 Min | idle / Thumbnail-Varianten | ~5 Min | 15 Key-Visuals |
|
||||
| **3080 #0** | **XTTS v2 Voiceover** | ~15 Min | **SDXL Restbilder** | ~10 Min | 20 Min Audio + ~20 Bilder |
|
||||
| **3080 #1** | SDXL Standard-Szenen | ~25 Min | — | — | ~50 Szenenbilder |
|
||||
| **3080 #2** | (wartet auf Audio) | — | **SadTalker Avatar** | ~25 Min | 20 Min Lip-Sync-Video (384x384) |
|
||||
| **3080 #3** | Real-ESRGAN Upscaling | ~5 Min | Whisper → SRT | ~5 Min | Upscaled Bilder + Untertitel |
|
||||
|
||||
Nach Abschluss der Hauptaufgabe uebernehmen freie GPUs Restarbeiten:
|
||||
- 3080 #2 (fertig mit TTS) → hilft bei restlichen SDXL-Bildern
|
||||
- 3080 #3 (fertig mit Upscale) → generiert Thumbnail-Varianten
|
||||
Ablauf-Kette: **TTS muss vor SadTalker fertig sein** (Audio → Lip-Sync).
|
||||
Deshalb: 3080 #0 macht zuerst TTS, dann SDXL. 3080 #2 wartet auf Audio, dann SadTalker.
|
||||
Alle anderen GPUs starten sofort.
|
||||
|
||||
## Konkretes Beispiel: "Irans Hyperschall-Schlag" (24 Min)
|
||||
|
||||
|
|
@ -149,21 +215,27 @@ PHASE 1 — Qwen 14B generiert:
|
|||
Szene 105: { typ: "hero", prompt: "world map with shifting power balance, dramatic lighting",
|
||||
overlay: "Die neue Weltordnung", dauer: 15s }
|
||||
|
||||
PHASE 2 — 5 GPUs parallel (25 Min):
|
||||
3090: 15 Hero-Bilder (FLUX.1-dev, beste Qualitaet) → Titel, Kapitelwechsel, Outro
|
||||
3080 #0: 45 Standardbilder (SDXL) → Militaer, Politik, Wirtschaft
|
||||
3080 #1: 45 Standardbilder (SDXL) → Karten, Infografiken, Symbolbilder
|
||||
3080 #2: 24 Min Voiceover (XTTS v2) → deutsche Maennerstimme, professioneller Ton
|
||||
3080 #3: Upscaling aller Bilder auf 1920x1080 + Untertitel-SRT aus Voiceover
|
||||
PHASE 2a — TTS zuerst (3080 #0, 15 Min):
|
||||
3080 #0: XTTS v2 → 24 Min deutsches Voiceover (WAV)
|
||||
|
||||
PHASE 3 — Assembly (15 Min):
|
||||
FFmpeg: 105 Szenen × Ken-Burns/Zoom + Voiceover + Ambient-Musik + Overlays
|
||||
Output: "irans-hyperschall-2026-03.mp4" (1080p, H.265, ~1.5 GB)
|
||||
Bonus: Thumbnail (Hero-Bild #1, upscaled, mit Titel-Text)
|
||||
YouTube-Description + Tags (aus Skript-Metadaten)
|
||||
PHASE 2b — Alles parallel (alle 5 GPUs, 25 Min):
|
||||
3090: 15 Hero-Bilder (FLUX.1-dev) → Titel, Kapitelwechsel, Outro
|
||||
3080 #0: (TTS fertig) → 30 Standardbilder (SDXL) → Militaer, Wirtschaft
|
||||
3080 #1: 50 Standardbilder (SDXL) → Karten, Infografiken, Symbolbilder
|
||||
3080 #2: SadTalker → 24 Min Avatar-Video (384x384, lip-sync aus Voiceover)
|
||||
3080 #3: Upscaling aller Bilder auf 1920x1080 + Whisper → Untertitel-SRT
|
||||
|
||||
PHASE 3 — Assembly (20 Min):
|
||||
FFmpeg: 105 Szenen × Ken-Burns/Zoom → Hintergrund-Videospur
|
||||
FFmpeg: Avatar-PiP compositen (unten rechts, 20%, halbtransparenter Rahmen)
|
||||
FFmpeg: Audio-Mix (Voiceover + Ambient-Musik)
|
||||
FFmpeg: Text-Overlays + Untertitel einbrennen
|
||||
NVENC: H.265 Encoding
|
||||
Output: "irans-hyperschall-2026-03.mp4" (1080p, ~1.5 GB)
|
||||
Bonus: Thumbnail + YouTube-Description + Tags
|
||||
```
|
||||
|
||||
Gesamtzeit: **~55 Minuten** fuer ein 24-Minuten-Video. Fertig zum Hochladen.
|
||||
Gesamtzeit: **~75 Minuten** fuer ein 24-Minuten-Video mit sprechendem Avatar. Fertig zum Hochladen.
|
||||
|
||||
## Hardware
|
||||
|
||||
|
|
@ -207,31 +279,24 @@ Gesamtzeit: **~55 Minuten** fuer ein 24-Minuten-Video. Fertig zum Hochladen.
|
|||
| Aufgabe | Modell | VRAM | Anmerkung |
|
||||
|---|---|---|---|
|
||||
| **Skripte** | Qwen 2.5 14B (Q5) | ~12 GB | Default. 32B nur wenn 14B nachweislich nicht reicht. |
|
||||
| **Hauptbilder** | FLUX.1-dev | ~12 GB | Visueller Kern der Videos |
|
||||
| **TTS (v1)** | Piper TTS | CPU-only | Fuer v1 ausreichend, kein VRAM-Verbrauch |
|
||||
| **TTS (v2)** | XTTS v2 | ~4 GB | Upgrade in v2, bessere Stimme, Voice-Cloning |
|
||||
| **Avatar (v2)** | SadTalker | ~6 GB | Optional, erst ab v2 |
|
||||
| **Compositing** | FFmpeg | CPU | Ken-Burns, Ueberblendungen, Overlays |
|
||||
| **Hero-Bilder** | FLUX.1-dev | ~12 GB | Hochwertige Key-Visuals (Kapitelwechsel, Titel, Outro) |
|
||||
| **Compositing** | FFmpeg | CPU | Ken-Burns + Avatar-PiP + Overlays + Audio-Mix |
|
||||
| **Encoding** | FFmpeg + NVENC | ~1 GB | Hardware-beschleunigt |
|
||||
| **Orchestrator** | Python | CPU | Steuert alle Schritte |
|
||||
| **Orchestrator** | Python | CPU | Steuert alle Schritte, verteilt Jobs an Worker |
|
||||
|
||||
Wichtig: Schritte laufen SEQUENTIELL. Nur eine schwere GPU-Aufgabe gleichzeitig.
|
||||
14B statt 32B als Default — laesst 12 GB VRAM frei, kein Flush zwischen Schritten noetig.
|
||||
Auf der 3090 nur: LLM + FLUX + Assembly. Keine TTS, kein Avatar — das machen die 3080er.
|
||||
|
||||
### gpu-worker (4x RTX 3080) — Produktive Worker-Jobs
|
||||
|
||||
| Aufgabe | VRAM | Karten | Anmerkung |
|
||||
|---|---|---|---|
|
||||
| **SDXL** (Batch-Bilder) | ~7 GB | 1-2 | CUDA-nativ, schnell, parallel moeglich |
|
||||
| **XTTS v2** (TTS-Batch) | ~4 GB | 1 | Voice-Cloning Batch-Produktion |
|
||||
| **SadTalker** (Avatar) | ~6 GB | 1 | CUDA-only, hier nativ lauffaehig |
|
||||
| **Whisper** (Untertitel) | ~1.5 GB | 1 | faster-whisper mit CUDA |
|
||||
| **Real-ESRGAN** (Upscaling) | ~2 GB | 1 | 4K-Upscale fuer Thumbnails/Szenen |
|
||||
| **Kleine LLMs** (7-10B) | ~8 GB | 1 | Hilfs-LLM fuer Zusammenfassungen, Tags |
|
||||
| **Embeddings** | ~1 GB | 1 | Fuer Jarvis/RAG, nicht Video-Pipeline |
|
||||
| 3080 | Primaeraufgabe | VRAM | Sekundaeraufgabe | Anmerkung |
|
||||
|---|---|---|---|---|
|
||||
| **#0** | **XTTS v2** (Voiceover) | ~4 GB | → SDXL Restbilder (~7 GB) | TTS zuerst, dann Bilder |
|
||||
| **#1** | **SDXL** (Standard-Szenen) | ~7 GB | — | Bildgenerierung durchgehend |
|
||||
| **#2** | **SadTalker** (Avatar) | ~6 GB | — | Lip-Sync, laengster Job, wartet auf Audio |
|
||||
| **#3** | **Real-ESRGAN** + **Whisper** | ~3 GB | Thumbnail-Varianten | Upscaling + Untertitel |
|
||||
|
||||
Kernvorteil: Identischer CUDA-Stack wie ki-tower. Code einmal schreiben, ueberall deployen.
|
||||
4 Karten = 4 parallele Jobs moeglich. Einschalten wenn Batch-Jobs anstehen.
|
||||
Feste Zuordnung pro Video-Produktion. Kein dynamisches Scheduling.
|
||||
Kernvorteil: Identischer CUDA-Stack wie ki-tower.
|
||||
|
||||
### gpu-reserve (8x RX 6600 XT) — Reserve/Nebenrolle
|
||||
|
||||
|
|
@ -281,10 +346,10 @@ ki-tower (3090, Chef) gpu-worker (4x 3080, Worker) gpu-
|
|||
┌─────────────────────────┐ ┌──────────────────────────────┐ ┌──────────────────┐
|
||||
│ Orchestrator (Python) │ │ Debian 12 + Docker + CUDA │ │ Reserve/Whisper │
|
||||
│ ├── Job Queue (SQLite) │ Tailscale │ │
|
||||
│ ├── /api/submit-job │◄────────────►│ GPU #0: sdxl-worker :8501 │ │ Whisper :8601 │
|
||||
│ ├── /api/job-status │ │ GPU #1: xtts-worker :8502 │ │ CPU-Batch :8602 │
|
||||
│ ├── /api/submit-job │◄────────────►│ GPU #0: xtts+sdxl :8501 │ │ Whisper :8601 │
|
||||
│ ├── /api/job-status │ │ GPU #1: sdxl-worker :8502 │ │ CPU-Batch :8602 │
|
||||
│ └── /api/get-result │ Tailscale │ GPU #2: sadtalker :8503 │ │ (nur bei Bedarf)│
|
||||
│ │ │ GPU #3: whisper/embed :8504 │ └──────────────────┘
|
||||
│ │ │ GPU #3: esrgan+whisper :8504 │ └──────────────────┘
|
||||
│ Qwen 14B (vLLM) :8401 │ │ │
|
||||
│ FLUX.1 (ComfyUI):8402 │ │ 10 GB VRAM pro Karte │
|
||||
│ FFmpeg (lokal) │ │ CUDA-nativ, kein Workaround │
|
||||
|
|
@ -310,9 +375,9 @@ Schritt 5: Encoding → NVENC → ~1 GB VRAM
|
|||
Mit Qwen 14B statt 32B: kein VRAM-Flush zwischen Schritt 1 und 2 noetig.
|
||||
|
||||
Geschaetzte Produktionszeit:
|
||||
- v1 (nur ki-tower, seriell): ~2-3 Stunden pro 10-Min-Video
|
||||
- v1.5 (5 GPUs parallel): ~55 Min pro 20-Min-Video
|
||||
- Langfristig mit Optimierung: ~40 Min pro 20-Min-Video
|
||||
- v1 (nur ki-tower, seriell, ohne Avatar): ~2-3 Stunden pro 10-Min-Video
|
||||
- v1.5 (5 GPUs parallel, mit Avatar): ~75 Min pro 20-Min-Video
|
||||
- Langfristig mit Optimierung: ~60 Min pro 20-Min-Video
|
||||
|
||||
## Nicht-Ziele
|
||||
|
||||
|
|
@ -320,7 +385,6 @@ Geschaetzte Produktionszeit:
|
|||
- Keine Bastelwiese ohne Ergebnis
|
||||
- Keine Dauerabhaengigkeit von Cloud-Abos
|
||||
- Keine Architektur die nur auf dem Papier funktioniert
|
||||
- Kein sofortiger Avatar als Kernbestandteil
|
||||
- Keine ueberkomplizierte Proxmox-/VM-Orgie auf dem Rig
|
||||
- Kein Schoenreden von AMD-ROCm-Limitierungen
|
||||
|
||||
|
|
@ -355,12 +419,12 @@ Was v1 NICHT hat:
|
|||
|
||||
Erfolgskriterium v1: Ein 10-Minuten-Video komplett lokal produziert.
|
||||
|
||||
## v1.5 — 5-GPU-Parallelisierung (ki-tower + 3080-Rig)
|
||||
## v1.5 — 5-GPU-Parallelisierung + Avatar (ki-tower + 3080-Rig)
|
||||
|
||||
v1.5 ist der grosse Sprung: **5 GPUs parallel = 3-4x schneller.**
|
||||
v1.5 ist der grosse Sprung: **5 GPUs parallel + sprechender Avatar.**
|
||||
|
||||
```
|
||||
v1.5 Pipeline (5 GPUs parallel):
|
||||
v1.5 Pipeline (5 GPUs parallel, mit Avatar):
|
||||
|
||||
Thema (manuell)
|
||||
│
|
||||
|
|
@ -368,39 +432,62 @@ Thema (manuell)
|
|||
Qwen 14B → Skript + Szenenplan JSON (ki-tower)
|
||||
│
|
||||
▼
|
||||
Orchestrator verteilt Jobs an alle 5 GPUs gleichzeitig:
|
||||
├── 3090: FLUX.1-dev → Hero-Bilder (beste Qualitaet)
|
||||
├── 3080 #0: SDXL → Standard-Szenen Batch A
|
||||
├── 3080 #1: SDXL → Standard-Szenen Batch B
|
||||
├── 3080 #2: XTTS v2 → deutsches Voiceover
|
||||
└── 3080 #3: Real-ESRGAN → Upscaling + Whisper → Untertitel
|
||||
Orchestrator Phase 2a (TTS zuerst):
|
||||
└── 3080 #0: XTTS v2 → 20 Min deutsches Voiceover (WAV)
|
||||
│
|
||||
▼
|
||||
FFmpeg → Assembly (Ken-Burns + Audio + Overlays + Untertitel)
|
||||
Orchestrator Phase 2b (alle 5 GPUs parallel):
|
||||
├── 3090: FLUX.1-dev → Hero-Bilder
|
||||
├── 3080 #0: (TTS fertig) → SDXL Restbilder
|
||||
├── 3080 #1: SDXL → Standard-Szenen
|
||||
├── 3080 #2: SadTalker → 20 Min Avatar-Video (lip-sync, 384x384)
|
||||
└── 3080 #3: Real-ESRGAN + Whisper → Upscaling + Untertitel
|
||||
│
|
||||
▼
|
||||
NVENC → Export MP4 + Thumbnail + YouTube-Metadaten
|
||||
FFmpeg → Assembly:
|
||||
├── Hintergrund: Bilder + Ken-Burns + Zoom
|
||||
├── Avatar-PiP: unten rechts, ~20% Bildschirm, halbtransparenter Rahmen
|
||||
├── Audio-Mix: Voiceover + Hintergrundmusik
|
||||
├── Text-Overlays + Untertitel
|
||||
└── NVENC Export → MP4 + Thumbnail + YouTube-Metadaten
|
||||
```
|
||||
|
||||
Was v1.5 bringt:
|
||||
- Produktionszeit: ~55 Min statt ~3 Stunden fuer 20-Min-Video
|
||||
- XTTS v2 statt Piper (natuerlichere Stimme)
|
||||
- **Sprechender Avatar** als PiP durchgehend im Video (~20% Bildschirm)
|
||||
- XTTS v2 statt Piper (natuerlichere Stimme, Voice-Cloning)
|
||||
- Produktionszeit: **~75 Min** statt ~5-6 Stunden fuer 20-Min-Video
|
||||
- Automatische Untertitel
|
||||
- 4K-Upscaling fuer Thumbnails
|
||||
- Orchestrator-Script verteilt und sammelt automatisch
|
||||
- Orchestrator verteilt und sammelt automatisch
|
||||
|
||||
Erfolgskriterium v1.5: 20-Min-Video in unter 1 Stunde produziert.
|
||||
Erfolgskriterium v1.5: 20-Min-Video mit Avatar in unter 90 Minuten produziert.
|
||||
|
||||
## v2 — Erweiterungen (nach funktionierender v1)
|
||||
### Avatar-Referenzbild (einmalig)
|
||||
|
||||
Das Portraet fuer SadTalker wird EINMAL generiert und dann fuer alle Videos wiederverwendet.
|
||||
So entsteht ein konsistenter "Sprecher" / "Moderator" fuer den Kanal.
|
||||
|
||||
```
|
||||
Generierung (einmalig, auf 3090 mit FLUX.1-dev):
|
||||
Prompt: "professional male news anchor, german, mid-30s, neutral expression,
|
||||
chest up portrait, clean studio background, photorealistic, 8k"
|
||||
Output: referenz-avatar.png (512x512)
|
||||
Nachbearbeitung: ggf. manuelles Feintuning in GIMP/Photoshop
|
||||
|
||||
SadTalker nutzt dann:
|
||||
- referenz-avatar.png (festes Bild)
|
||||
- voiceover.wav (pro Video neu)
|
||||
→ Output: avatar-video.mp4 (384x384, 25fps, lip-sync)
|
||||
```
|
||||
|
||||
## v2 — Erweiterungen (nach funktionierender v1.5)
|
||||
|
||||
| Feature | Abhaengigkeit |
|
||||
|---|---|
|
||||
| **XTTS v2** statt Piper | Auf ki-tower (3090) oder 3080-Worker |
|
||||
| **SadTalker Avatar** | Auf 3080-Worker (6 GB VRAM reicht) |
|
||||
| **3080 Worker-Rig** | Aufbau parallel zu v1, CUDA-Stack identisch |
|
||||
| **Python-Orchestrator** | Erst manuell verstehen, dann automatisieren |
|
||||
| **SDXL-Batch auf 3080** | Nebenbilder parallel generieren |
|
||||
| **Avatar-Varianten** | Verschiedene Gesichtsausdruecke/Posen je Szene |
|
||||
| **Mehrere Sprecher** | Zweiter Avatar fuer Interview-/Dialog-Format |
|
||||
| **Qwen 32B** statt 14B | Nur wenn 14B-Skripte nachweislich zu schwach |
|
||||
| **Batch-Produktion** | Mehrere Videos in Queue, automatisch nacheinander |
|
||||
| **YouTube-Upload-API** | Automatischer Upload mit Metadaten |
|
||||
|
||||
## v3+ — Spaeter
|
||||
|
||||
|
|
@ -435,16 +522,22 @@ PHASE 4 — Polieren + erstes echtes Video (Woche 6)
|
|||
├── Erstes Video auf YouTube hochladen
|
||||
└── Ergebnis: "v1 steht und produziert"
|
||||
|
||||
PHASE 5 — 3080-Rig Aufbau + v1.5 (Woche 7-9)
|
||||
PHASE 5 — 3080-Rig Aufbau + v1.5 mit Avatar (Woche 7-10)
|
||||
├── Debian 12 + NVIDIA-Treiber + CUDA + Docker (selber Stack wie ki-tower)
|
||||
├── 4 Worker: SDXL #0, SDXL #1, XTTS v2, ESRGAN/Whisper
|
||||
├── 4 Worker: XTTS+SDXL, SDXL, SadTalker, ESRGAN+Whisper
|
||||
├── Tailscale + Job-API anbinden
|
||||
├── Python-Orchestrator: Szenenplan → Jobs verteilen → sammeln
|
||||
├── XTTS v2 statt Piper (bessere Stimme)
|
||||
└── Ergebnis: "20-Min-Video in unter 1 Stunde, 5 GPUs parallel"
|
||||
├── SadTalker Avatar einrichten:
|
||||
│ ├── Referenz-Portraet generieren (FLUX auf 3090)
|
||||
│ ├── SadTalker Docker-Container auf 3080 #2
|
||||
│ ├── Lip-Sync Pipeline: Audio → 30s-Clips → zusammenfuegen
|
||||
│ └── Test: 5-Min-Testvideo mit Avatar-PiP
|
||||
├── XTTS v2 statt Piper (bessere Stimme, Voice-Cloning)
|
||||
├── FFmpeg PiP-Compositing: Avatar unten rechts, ~20% Bildschirm
|
||||
├── Python-Orchestrator: TTS → SadTalker → Bilder → Assembly
|
||||
└── Ergebnis: "20-Min-Video mit Avatar in unter 90 Min, 5 GPUs parallel"
|
||||
|
||||
PHASE 6 — v2 Features (nach stabiler v1.5-Produktion)
|
||||
├── SadTalker Avatar auf 3080-Worker (optional pro Video)
|
||||
├── Avatar-Varianten: verschiedene Ausdruecke/Posen je Kapitel
|
||||
├── Automatische Thumbnail-Generierung (FLUX hero + Text-Overlay)
|
||||
├── YouTube-Metadaten-Generator (Titel, Description, Tags aus Skript)
|
||||
├── Batch-Produktion: mehrere Videos in Queue
|
||||
|
|
@ -469,7 +562,7 @@ PHASE 7 — AMD-Rig Entscheidung (optional, spaeter)
|
|||
| Bildgenerierung | **ComfyUI + FLUX.1-dev** | Flexibel, Workflow-basiert, gute Qualitaet |
|
||||
| TTS v1 | **Piper TTS** (CPU) | Kein GPU-Verbrauch, sofort einsatzbereit |
|
||||
| TTS v2 | **XTTS v2** (3090 oder 3080) | Voice-Cloning, natuerlichere Stimme. 4 GB VRAM, passt auf 3080. |
|
||||
| Avatar | **Nicht in v1** | Nice-to-have, nicht Kernprodukt |
|
||||
| Avatar | **SadTalker, ab v1.5** | PiP ~20% unten rechts, durchgehend im Video. Kernbestandteil. |
|
||||
| Job-Queue | **SQLite** | Ein User, kein Redis/RabbitMQ noetig |
|
||||
| Netzwerk | **Tailscale** | Verbindet ki-tower + gpu-worker, fertig |
|
||||
|
||||
|
|
@ -478,10 +571,12 @@ PHASE 7 — AMD-Rig Entscheidung (optional, spaeter)
|
|||
| # | Risiko | Wahrscheinlichkeit | Impact | Mitigation |
|
||||
|---|---|---|---|---|
|
||||
| 1 | **ROCm auf RX 6600 XT instabil** | Hoch | **Niedrig** | Betrifft nur Reserve-Rig. 3080-Worker ist CUDA-nativ. |
|
||||
| 2 | **Piper TTS deutsch zu robotisch** | Mittel | Hoch | Testen. Wenn zu schlecht: OpenAI TTS als Bruecke (~0.50 EUR/Video). XTTS in v2. |
|
||||
| 2 | **Piper TTS deutsch zu robotisch** | Mittel | Mittel | v1-only-Problem. XTTS v2 ab v1.5 loest das. OpenAI TTS als Bruecke (~0.50€/Video). |
|
||||
| 3 | **VRAM-Tetris auf 3090** | Mittel | Mittel | 14B statt 32B. Sequentiell. vLLM Model-Unloading. |
|
||||
| 4 | **Pipeline wird zu komplex vor v1** | Hoch | Hoch | v1 brutal einfach. Bash-Scripts, keine Frameworks. |
|
||||
| 5 | **Stromkosten Rig vs. Nutzen** | Mittel | Niedrig | 3080-Rig nur bei Batch-Jobs einschalten. AMD-Rig im Zweifel verkaufen. |
|
||||
| 5 | **SadTalker Qualitaet/Artefakte** | Mittel | **Hoch** | Avatar ist Kernbestandteil. Wenn Lip-Sync schlecht: LivePortrait oder Wav2Lip als Alternative testen. Fallback: Avatar nur bei Kapitelwechseln (5-10% Screentime statt durchgehend). |
|
||||
| 6 | **SadTalker Renderzeit 20+ Min** | Mittel | Mittel | 30s-Clips parallel auf 2 GPUs verteilen wenn noetig. Oder Resolution reduzieren (256x256). |
|
||||
| 7 | **Stromkosten Rig vs. Nutzen** | Mittel | Niedrig | 3080-Rig nur bei Batch-Jobs einschalten. AMD-Rig im Zweifel verkaufen. |
|
||||
|
||||
## Kosten-Schaetzung
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue