Video- en audiogeneratie
Libre WebUI 0.18.0 breidt genereren verder uit dan afbeeldingen: providerplugins kunnen video- en audiomogelijkheden declareren en alles wat wordt gegenereerd — afbeeldingen, video's, spraak en geluid — komt in één mediagalerie per gebruiker terecht.
Mediageneratie is beschikbaar voor elke geverifieerde gebruiker. De galerie is strikt per gebruiker: elke leesbewerking, inhoudsaanvraag en verwijdering is beperkt tot het aangemelde account.
Mogelijkheidsblokken van plugins
Een plugindefinitie declareert elke mediamogelijkheid als eigen blok:
"capabilities": {
"image": { "endpoint": "...", "model_map": ["..."], "config": { ... } },
"tts": { "endpoint": "...", "model_map": ["..."], "config": { ... } },
"audio": { "endpoint": "...", "model_map": ["..."], "config": { ... } },
"video": { "endpoint": "...", "model_map": ["..."], "config": { ... } }
}
Elk blok heeft een endpoint, een terugvallijst model_map, een optioneel models_endpoint voor live modeldetectie en een object config met opties per mogelijkheid — afmetingen en beeldverhoudingen voor afbeeldingen, stemmen en indelingen voor spraak, resoluties, beeldverhoudingen en duur voor video. Een videoprovider kan ook een op prompt-ID gebaseerd cancel_endpoint en cancel_method declareren; Libre leidt annuleringsondersteuning niet af uit een gewoon generatie-eindpunt.
Er bestaan twee audiomogelijkheden en beide komen als audio in de galerie terecht:
ttsis spraak: tekst wordt met een geselecteerde stem voorgelezen.audiois geluid: een model genereert audio-inhoud vanuit een prompt.
OpenRouter (plugins/openrouter.json) is momenteel de enige meegeleverde plugin die blokken video en audio declareert. Wanneer een models_endpoint aanwezig is, wordt de modellijst volgens de normale detectiecyclus vernieuwd (zie Omgevingsvariabelen voor TTL-instellingen van detectie); model_map blijft de terugvaloptie.
Media genereren
Open Verbeelden (/gallery). De kop biedt Genereren voor afbeeldingen (wanneer beeldgeneratie in Instellingen is ingeschakeld), plus panelen Video en Audio.
Spraak- en geluidsgeneratie zijn synchroon: het verzoek wordt uitgevoerd, het resultaat in de galerie opgeslagen en het antwoord retourneert het voltooide item. Annuleren breekt het browserverzoek en het uitgaande providerverzoek van Libre af; een geannuleerd resultaat wordt niet opgeslagen. Afbeeldingen genereren volgt hetzelfde contract voor annuleren bij verbreken.
Voor een geaccepteerde ComfyUI-werkstroom stuurt Libre zowel de taakannulering via prompt-ID als verwijdering uit de wachtrij via prompt-ID en wacht daarna maximaal drie seconden op de afhandeling voordat het verzoek wordt vrijgegeven. Het roept nooit de niet-afgebakende onderbrekingsbewerking van ComfyUI aan, omdat die de werkstroom van een andere gebruiker kan stoppen. Huidige ComfyUI-releases bieden /api/jobs/:promptId/cancel voor een actieve werkstroom. Bij een oude release zonder die bewerking kan Libre nog steeds precies het wachtende item uit de wachtrij verwijderen, maar een al actieve werkstroom niet veilig stoppen; upgrade ComfyUI voor het volledige annuleringscontract.
TTS-plugins kunnen ook stemklonen declareren. Voor die modellen toont het paneel Audio een upload voor referentieaudio en, wanneer de provider dit vereist, een veld voor het exacte transcript. Libre WebUI valideert de in het manifest opgegeven grenzen voor bestandstype en -grootte, houdt de upload in het geheugen en stuurt deze alleen door naar de geselecteerde provider. Alleen de gegenereerde spraak wordt in de galerie geplaatst.
Een kloon kan optioneel als herbruikbare, benoemde stem voor dezelfde plugin en hetzelfde model worden opgeslagen. Opslaan vereist een aparte bevestiging van toestemming voor opslag. Libre WebUI versleutelt de oorspronkelijke referentie en het transcript in een stemprofiel van de gebruiker; gegenereerde spraak wordt niet als referentie gebruikt. Opgeslagen profielen kunnen via Instellingen → Tekst-naar-spraak worden geselecteerd of permanent verwijderd. De ingestelde provider ontvangt de bewaarde referentie opnieuw wanneer deze een spraakbatch genereert. Het profiel is gebonden aan de goedgekeurde routering van die provider; maak het profiel opnieuw als de plugindefinitie of het eindpunt verandert om toestemming te geven voor de nieuwe bestemming. Gebruik alleen opnamen van sprekers die toestemming hebben gegeven voor zowel het kloonverzoek als de gevraagde opslag.
Stemprofielen worden bewust weggelaten uit de algemene gegevensexport van Libre WebUI omdat ze biometrisch bronmateriaal bevatten. Maak samen een back-up van de versleutelde toepassingsdatabase en ENCRYPTION_KEY als je noodherstel nodig hebt; maak profielen anders opnieuw met de oorspronkelijke opnamen waarvoor toestemming is gegeven.
Levenscyclus van videotaken
Videogeneratie is asynchroon. Een taak indienen (POST /api/media/video/generate) retourneert 202 met een taakrecord; de taak doorloopt pending, in_progress en uiteindelijk completed of failed.
- Na validatie wordt de indiening losgekoppeld van het browserantwoord. Libre bewaart de providertaak-ID direct na acceptatie, zelfs als het paneel of de netwerkverbinding sluit terwijl de provider antwoordt.
GET /api/media/video/jobsvermeldt alleen opgeslagen handles van de geverifieerde gebruiker; het paneel vraagt bij openen maximaal 100 actieve handles op. Een wachtende taak kan daarom na navigeren, vernieuwen of verbreken opnieuw worden geopend.- Een duurzame taak
media.video.resume.v1bevraagt de provider en downloadt een voltooid resultaat, ook wanneer het paneel gesloten is. In solomodus voert de ingebouwde worker die handler uit; in teammodus doet de externe worker dat. Leases, begrensde nieuwe pogingen, herbevestiging van de actor en voorwaardelijke voltooiing laten een andere worker de taak na het uitvallen van een proces overnemen zonder een dubbele galerierij of blobreferentie te maken. De bestaande resume-/GET-eindpunten blijven compatibiliteits- en statusgrenzen; de interface kan ze nog voor weergave pollen. - Het paneel sluiten of Stoppen met wachten kiezen breekt alleen het huidige status- of downloadtransport af. Een provideractie Taak annuleren verschijnt alleen wanneer de plugin expliciet een eindpunt voor annulering via taak-ID declareert. Na bevestigde annulering door de provider verwijdert Libre de opgeslagen lokale handle.
- Na voltooiing downloadt de backend de video (limiet 200 MB, HTTP-omleidingen worden niet gevolgd) en slaat deze op in de galerie.
- Het taakrecord bewaart plugin, model, opties, status en prompt (versleuteld opgeslagen). Records van voltooide en mislukte taken ouder dan 30 dagen worden opportunistisch verwijderd; wachtende handles vervallen niet door die opschoning.
- Eindstatussen sturen meldingen: een voltooide video plaatst media-ready en een providerfout media-failed. Beide linken naar de galerie, worden per taak ontdubbeld en via de inbox in de app en geabonneerde webhooks geleverd.
Afbeeldingen bewerken en inpainting
Afbeeldingen in de galerie waarvoor een bewerkbaar model is ingesteld krijgen de actie Afbeelding bewerken. De editor schildert rechtstreeks een masker op de afbeelding — geschilderde gebieden worden opnieuw door het model ingevuld, een onaangeroerd canvas bewerkt de hele afbeelding — en kan extra referentieafbeeldingen voor compositie bijvoegen wanneer het model meer dan één invoer accepteert. Bewerken gebruikt het OpenAI-compatibele multipartcontract voor edits: een plugin neemt deel door edit_endpoint te declareren in de configuratie van de afbeeldingsmogelijkheid, plus optionele grenzen supports_mask, max_reference_images, edit_mime_types en max_edit_image_bytes (het meegeleverde OpenAI-manifest declareert ze allemaal).
Elke invoer wordt gevalideerd voordat bytes het proces verlaten: gedeclareerde MIME, gedetecteerde magic bytes (PNG, JPEG of WebP) en een limiet van 10 MiB per afbeelding. Maskers moeten PNG zijn, omdat alleen PNG het alfakanaal bevat dat aangeeft welke gebieden opnieuw moeten worden ingevuld. Resultaten worden terug in de galerie opgeslagen met herkomstmetagegevens over het bronitem, het aantal geüploade referentieafbeeldingen en of een masker is gebruikt. Bewerkingen worden precies als generaties gemeten.
De uniforme galerie
De galerie toont alle mediasoorten door elkaar op aanmaaktijd, met filters voor Alles, Afbeeldingen, Video's en Audio. Video en audio worden inline afgespeeld; afbeeldingen openen in de lightbox; elk item kan worden gedownload of verwijderd. Beheerders kunnen automatische bewaring inschakelen met GALLERY_RETENTION_DAYS: de geplande opschoning verwijdert media die ouder zijn dan het venster via dezelfde duurzame verwijderingscyclus als handmatig verwijderen. Niet ingesteld (standaard) bewaart media totdat de eigenaar deze verwijdert.
Opslag en levering zijn bewust behoudend:
- Media worden versleuteld in de toepassingsdatabase opgeslagen (onder
DATA_DIR), niet als losse bestanden op schijf. Maak net als voor alle versleutelde gegevens samen een back-up van database enENCRYPTION_KEY. - API-antwoorden sluiten mediapayloads nooit in; items verwijzen naar een inhouds-URL per item.
- Geleverde inhoud moet overeenkomen met een MIME-toegestane lijst per soort en het opgeslagen type, heeft een limiet van 200 MB en wordt geleverd met
X-Content-Type-Options: nosniffen eenContent-Security-Policydie het antwoord in een sandbox plaatst.
De eerdere eindpunten voor alleen afbeeldingen en het paneel voor beeldgeneratie blijven ongewijzigd werken en schrijven naar dezelfde galerie.
Snelheidslimieten
De media-API heeft een snelheidslimiet per client:
| Bewerking | Limiet |
|---|---|
| Generatie (video, spraak, geluid) | 10 verzoeken per minuut |
| Pollen van videotaken | 60 verzoeken per minuut |
| Galerie vermelden, inhoud en verwijderen | 120 verzoeken per minuut |
De poll van de interface om de 30 seconden blijft ruim binnen het budget.
Meting en privacy
Mediageneratieaanroepen worden in de gebruiksanalyse voor beheerders gemeten zoals elke andere uitgaande provideraanroep: plugin, model, status, duur en eenhedentellingen. Prompts en gegenereerde inhoud worden nooit naar gebruiksrecords geschreven. De gegenereerde media en prompt van de videotaak bestaan alleen in de versleutelde rijen van de gebruiker.
Net als bij chat ontvangt de ingestelde provider de prompt en retourneert de inhoud; prijzen, bewaar- en inhoudsbeleid van de provider zijn van toepassing.