From e38f502169268c344df96616dd570f6b1372702e Mon Sep 17 00:00:00 2001 From: root Date: Mon, 16 Mar 2026 11:56:05 +0700 Subject: [PATCH] =?UTF-8?q?PLAN.md:=20Avatar=20als=20Kernbestandteil,=20Pi?= =?UTF-8?q?P=2020%=20unten=20rechts,=20SadTalker=20auf=203080=20#2,=20neue?= =?UTF-8?q?=20Pipeline-Abfolge=20TTS=E2=86=92Avatar=E2=86=92Assembly?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ki-video/PLAN.md | 293 +++++++++++++++++++++++++++++++---------------- 1 file changed, 194 insertions(+), 99 deletions(-) diff --git a/ki-video/PLAN.md b/ki-video/PLAN.md index 55c71680..35b33f07 100644 --- a/ki-video/PLAN.md +++ b/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