4.5 KiB
"Song erstellen" - Portal-Integration ACE-Step 1.5 (fertig zum Deploy durch Mausi/Koordinator)
Ziel-Datei: /opt/gpu1-status/app.py auf portal-studio (100.114.24.89:9090), sichtbar unter cp.go-ki.eu. NICHT selbst deployed - dieser Worker hat keinen SSH-Zugang zu VM201 (weder direkt von VM302 noch via Hub, kein Key/known_hosts-Eintrag fuer 100.114.24.89 unter Hub-User root). Bitte ueber den funktionierenden Weg von Worker #45 / Cleanup-Worker deployen, dann Portal-Skill-Ablauf (Backup -> py_compile -> Testinstanz 9092/9093 -> restart gpu1-portal.service -> cp.go-ki.eu 200 -> echter Klicktest).
Engine-Basis (bestaetigt, kein Neu-Setup noetig)
ComfyUI (M:\ComfyUI auf VM302, laeuft :8188) hat ACE-Step 1.5 bereits nativ integriert:
- Node TextEncodeAceStepAudio1.5 registriert (bestaetigt via /object_info)
- Node EmptyAceStep1.5LatentAudio, VAEDecodeAudio, UNETLoader/DualCLIPLoader/VAELoader fuer die 4 Modell-Dateien
- Fertiges Blueprint: D:\comfyui-test\blueprints\Text to Audio (ACE-Step 1.5).json
- Modelle (alle 4 fertig heruntergeladen, ScheduledTask AceStepDownload, job-watchdog-ueberwacht):
- M:\ComfyUI\models\diffusion_models\acestep_v1.5_turbo.safetensors (4.79 GB)
- M:\ComfyUI\models\text_encoders\qwen_0.6b_ace15.safetensors (1.19 GB)
- M:\ComfyUI\models\text_encoders\qwen_4b_ace15.safetensors (8.38 GB)
- M:\ComfyUI\models\vae\ace_1.5_vae.safetensors (0.34 GB)
- ComfyUI /object_info/UNETLoader listet acestep_v1.5_turbo.safetensors bereits in der Combo (kein Neustart noetig)
Workflow-API-Aufruf (Backend -> ComfyUI :8188)
Der Song-Endpoint im Portal muss einen ComfyUI-Prompt (POST http://:8188/prompt) mit einem Graph bauen, der 1:1 dem Blueprint entspricht (Nodes: DualCLIPLoader -> TextEncodeAceStepAudio1.5 (+ConditioningZeroOut fuer negativ) -> ModelSamplingAuraFlow -> KSampler -> VAEDecodeAudio). Wichtige Felder aus TextEncodeAceStepAudio1.5: tags (Style-String), lyrics, seed, bpm, duration (Sekunden), timesignature, language, keyscale, generate_audio_codes, cfg_scale. Ergebnis-Audio kommt ueber die ComfyUI-History/view-Route als WAV zurueck.
Drei Modi fuer den neuen Song-Tab
(a) AUTO - Nutzer gibt nur einen kurzen Prompt ein. Backend ruft Hub-litellm (http://100.87.20.94:4000, Authorization: Bearer sk-litellm-koerner) auf, der aus dem Nutzer-Prompt sowohl tags (Style-Schlagworte) als auch lyrics (Strophen/Refrain-Struktur) generiert. Danach normaler Song-Call. Plus Extend-Button: verlaengert einen bestehenden Song (zweiter ComfyUI-Call mit gleichem Seed + hoeherer duration, oder Audio-zu-Audio falls vom Blueprint unterstuetzt - noch ungeprueft, siehe unten).
(b) STYLE - Nutzer gibt Style/Genre direkt ein (fuellt tags), Lyrics optional via LLM oder leer (instrumental).
(c) CUSTOM - Nutzer gibt eigene Lyrics komplett vor (fuellt lyrics 1:1), tags optional.
Konkrete app.py-Aenderungen (Vorschlag, unique-string-anchored fuer Konflikt-Vermeidung)
- Neuer Route-Block - @app.route("/api/song/generate", methods=["POST"]) mit Body {mode, prompt|tags|lyrics, duration}.
- Hilfsfunktion build_ace_step_prompt(tags, lyrics, duration, seed, ...) baut das ComfyUI-Prompt-JSON aus dem Blueprint (Node-IDs 105/106/104/94/47/78/3/98/18).
- AUTO-Modus: Hilfsfunktion llm_style_and_lyrics(user_prompt) -> POST an litellm /chat/completions, striktes JSON-Format {"tags":"...","lyrics":"..."} erzwingen.
- Neuer Subtab "Song erstellen" im vorhandenen Video-Bereich, analog zum bestehenden "Ton & Musik"-Subtab-Muster (falls dieser schon existiert - von diesem Worker NICHT einsehbar ohne VM201-Zugriff, vor dem Patchen gegenpruefen).
- Frontend: 3 Radio-Buttons (Auto/Style/Custom), Prompt-Feld, optional Lyrics-Textarea, Duration-Slider (30-240s), "Song erstellen"-Button, Audio-Player + "Verlaengern"-Button.
Was fehlt / offene Punkte (ehrlich, ungetestet)
- Extend-Qualitaet ungetestet (echtes Continue vs. nur "gleicher Seed + laenger").
- Deutsche Lyrics-Aussprache: Blueprint-Default ist language="en"; de ungetestet.
- GPU-Contention: A40 durch Video-Build (Wan2.2 --highvram, 30-42GB) fast voll - Song-Gen MUSS seriell nach "A40 frei"-Signal laufen.
- Kein GPU-Beispiel-Song erzeugt (Guardrail eingehalten, kein GPU-Job parallel zum Video-Build).
- Portal-Zugriff fehlt diesem Worker (weder VM302 noch Hub hat Key fuer 100.114.24.89) - Deploy durch Mausi/Koordinator oder Worker mit bestehendem Zugriff (#45 o.ae.).
- M:\ACE-Step Standalone-Repo (Jul-18-Clone, kein venv/Modelle) ungenutzt - loeschen oder als CLI-Fallback dokumentieren, nicht als zweite Engine parallel pflegen.