Přeskočit na hlavní obsah

Generování videa a zvuku

Libre WebUI 0.18.0 rozšiřuje generování za obrázky. Pluginy poskytovatelů mohou deklarovat funkce videa a zvuku a vše vytvořené — obrázky, videa, řeč i zvuk — končí v jedné galerii médií pro každého uživatele.

Generování je dostupné všem ověřeným uživatelům. Galerie je přísně oddělená: každé čtení, načtení obsahu a odstranění je omezeno na přihlášený účet.

Bloky funkcí pluginu

Definice pluginu deklaruje každou mediální funkci ve vlastním bloku:

"capabilities": {
"image": { "endpoint": "...", "model_map": ["..."], "config": { ... } },
"tts": { "endpoint": "...", "model_map": ["..."], "config": { ... } },
"audio": { "endpoint": "...", "model_map": ["..."], "config": { ... } },
"video": { "endpoint": "...", "model_map": ["..."], "config": { ... } }
}

Každý blok má endpoint, záložní seznam model_map, volitelný models_endpoint pro živé hledání modelů a objekt config s možnostmi funkce: velikosti a poměry stran obrázků, hlasy a formáty řeči, rozlišení, poměry a délky videa. Poskytovatel videa může také deklarovat cancel_endpoint a cancel_method pro ID promptu. Libre neodvozuje podporu rušení z běžného koncového bodu generování.

Existují dvě zvukové funkce a obě skončí v galerii jako zvuk:

  • tts je řeč: text se předčítá vybraným hlasem.
  • audio je zvuk: model vytvoří zvukový obsah z promptu.

OpenRouter (plugins/openrouter.json) je nyní jediný vestavěný plugin deklarující bloky video a audio. Když existuje models_endpoint, seznam modelů se obnovuje v běžném cyklu hledání (TTL popisují Proměnné prostředí); model_map zůstává zálohou.

Generování médií

Otevřete Imagine (/gallery). Záhlaví nabízí Generate pro obrázky (pokud je generování zapnuto v Settings) a panely Video a Audio.

Generování řeči a zvuku je synchronní: požadavek proběhne, výsledek se uloží do galerie a odpověď vrátí hotovou položku. Cancel zruší požadavek prohlížeče i odchozí požadavek Libre; zrušený výsledek se neuloží. Obrázky používají stejnou smlouvu rušení při odpojení.

U přijatého pracovního postupu ComfyUI odešle Libre jak zrušení běžící úlohy podle ID promptu, tak odstranění položky fronty, a před uvolněním požadavku čeká nejvýše tři sekundy na ukončení. Nikdy nevolá neomezené přerušení ComfyUI, které by mohlo zastavit práci jiného uživatele. Aktuální vydání ComfyUI nabízejí pro běžící postup /api/jobs/:promptId/cancel. Ve starém vydání bez této operace může Libre odstranit přesnou čekající položku, ale nemůže bezpečně zastavit již běžící postup. Pro úplnou smlouvu rušení ComfyUI upgradujte.

Pluginy TTS mohou deklarovat klonování hlasu. Panel Audio pak zobrazí nahrání referenčního zvuku a případně pole přesného přepisu. Libre WebUI ověří typ a velikost podle manifestu, drží nahrávku v paměti a předá ji jen vybranému poskytovateli. Do galerie se uloží pouze vytvořená řeč.

Klon lze volitelně uložit jako pojmenovaný opakovaně použitelný hlas pro stejný plugin a model. Uložení vyžaduje zvláštní potvrzení souhlasu. Libre WebUI šifruje původní referenci a přepis v profilu vlastněném uživatelem; nepoužívá jako referenci generovanou řeč. Profily lze vybrat nebo trvale smazat v Settings → Text-to-Speech. Poskytovatel obdrží uloženou referenci při každé dávce řeči. Profil je svázán se schváleným směrováním; při změně definice či koncového bodu ho vytvořte znovu a odsouhlaste novou destinaci. Používejte jen nahrávky mluvčích, kteří souhlasili s klonováním i uložením.

Hlasové profily jsou z obecného exportu záměrně vynechány, protože obsahují biometrický zdroj. Pro obnovu po havárii zálohujte šifrovanou databázi spolu s ENCRYPTION_KEY, jinak profily vytvořte z původních nahrávek se souhlasem.

Životní cyklus úlohy videa

Generování videa je asynchronní. Odeslání úlohy (POST /api/media/video/generate) vrátí 202 se záznamem a úloha prochází pending, in_progress a nakonec completed nebo failed.

  • Po ověření se odeslání oddělí od odpovědi prohlížeče. Libre uloží ID úlohy poskytovatele ihned po přijetí, i když se panel nebo síť při odpovědi zavře.
  • GET /api/media/video/jobs uvádí jen uložené odkazy ověřeného uživatele. Panel při otevření načte až 100 aktivních odkazů. Čekající úlohu lze znovu otevřít po navigaci, obnovení nebo odpojení.
  • Trvalá úloha media.video.resume.v1 dotazuje poskytovatele a stáhne dokončený výsledek i při zavřeném panelu. Sólový režim používá vestavěný worker, týmový externí. Lease, omezená opakování, nové ověření aktéra a podmíněné dokončení umožní jinému workeru převzít úlohu po zániku procesu bez duplicitního řádku galerie či odkazu blob. Stávající resume/GET koncové body zůstávají hranicemi kompatibility a stavu; rozhraní je může dál dotazovat pro zobrazení.
  • Zavření panelu nebo Stop waiting zruší jen aktuální přenos stavu či stahování. Cancel job u poskytovatele se zobrazí pouze při výslovně deklarovaném koncovém bodu zrušení podle ID. Po potvrzeném zrušení Libre odstraní místní odkaz.
  • Po dokončení backend stáhne video (limit 200 MB, bez následování přesměrování HTTP) a uloží ho.
  • Záznam úlohy ukládá plugin, model, možnosti, stav a prompt (šifrovaný). Dokončené a neúspěšné záznamy starší 30 dní se příležitostně odstraní; čekající odkazy tím nevyprší.
  • Koncové stavy oznamují: dokončené video vytvoří media-ready, selhání poskytovatele media-failed. Obě odkazují na galerii, deduplikují se podle úlohy a doručí do schránky aplikace i přihlášených webhooků.

Úpravy obrázků a inpainting

Obrázky v galerii získají akci Edit image, pokud je nastaven model s úpravami. Editor maluje masku přímo na obrázek — označené oblasti model překreslí, prázdná maska upraví celý obrázek — a může přiložit další referenční obrázky pro kompozici, pokud model přijímá více vstupů. Úpravy používají multipart smlouvu kompatibilní s OpenAI. Plugin se zapojí deklarací edit_endpoint v config funkce obrázků a volitelných limitů supports_mask, max_reference_images, edit_mime_types, max_edit_image_bytes. Vestavěný manifest OpenAI deklaruje všechny.

Každý vstup se ověří před opuštěním procesu: deklarovaný MIME, zjištěné magic bytes (PNG, JPEG nebo WebP) a limit 10 MiB na obrázek. Masky musí být PNG, protože jen PNG obsahuje alfa kanál označující oblasti k přemalování. Výsledky se uloží do galerie s metadaty původu: zdrojovou položkou, počtem referencí a použitím masky. Úpravy se měří stejně jako generování.

Sjednocená galerie

Galerie řadí všechny druhy médií podle vytvoření a nabízí filtry All, Images, Videos a Audio. Video a zvuk se přehrávají přímo, obrázky se otevřou v lightboxu a každou položku lze stáhnout či smazat. Správci mohou zapnout automatické uchovávání pomocí GALLERY_RETENTION_DAYS: plánovač maže starší média stejným trvalým postupem jako ruční odstranění. Nenastaveno (výchozí) uchová média do smazání vlastníkem.

Úložiště a podávání jsou záměrně konzervativní:

  • Média se ukládají zašifrovaně v aplikační databázi (pod DATA_DIR), ne jako volné soubory. Zálohujte databázi a ENCRYPTION_KEY společně.
  • Odpovědi API nikdy nevkládají mediální data; položky odkazují na vlastní URL obsahu.
  • Podávaný obsah musí odpovídat povoleným MIME pro druh a uloženému typu, má limit 200 MB a hlavičky X-Content-Type-Options: nosniff a sandboxující Content-Security-Policy.

Předchozí koncové body pouze pro obrázky a panel generování fungují beze změny a zapisují do stejné galerie.

Limity rychlosti

Mediální API omezuje jednotlivé klienty:

OperaceLimit
Generování (video, řeč, zvuk)10 požadavků za minutu
Dotazování úloh videa60 požadavků za minutu
Seznam, obsah a mazání galerie120 požadavků za minutu

Dotazování rozhraní po 30 sekundách je hluboko pod limitem.

Měření a soukromí

Volání médií se měří ve správcovské analýze používání jako jiná odchozí volání: plugin, model, stav, doba a jednotky. Prompty ani vytvořený obsah se do záznamů používání nezapisují. Média a prompt úlohy videa existují jen v šifrovaných řádcích uživatele.

Stejně jako u chatu obdrží nakonfigurovaný poskytovatel prompt a vrátí obsah. Platí jeho ceny a zásady uchovávání a obsahu.

Související dokumentace