https://youtu.be/vmt_WVBJMj4?si=OZlzEqfEvWjPakYV
Ik heb een systeem ontwikkeld dat generatieve AI gebruikt om automatisch presentatievideo's te maken van blogartikelen en deze te uploaden naar YouTube.
Met enig vernuft kan generatieve AI niet alleen het verhaal van de presentatie bedenken, maar ook het presentatiemateriaal creëren.
Bovendien kan, door generatieve AI een script voor de presentatie te laten maken en dit script vervolgens door een tekst-naar-spraak generatieve AI te laten voorlezen, ook audiogegevens worden gegenereerd.
Het combineren van het presentatiemateriaal en de audiogegevens produceert dan een video.
Door deze reeks taken te automatiseren, heb ik het mogelijk gemaakt om presentatievideo's automatisch met één klik te genereren.
Mechanisme
Het meest cruciale deel van het proces is het genereren van het presentatiemateriaal.
Generatieve AI blinkt uit in het genereren van afbeeldingen, maar dit is typisch beperkt tot foto's of tekeningen. Het creëren van documenten die voornamelijk tekst en figuren bevatten, zoals presentatiemateriaal, is een uitdaging voor AI's die afbeeldingen genereren.
Daarom genereer ik tekst- en figuurgerichte materialen in een tekstgebaseerd formaat, vergelijkbaar met een programmeertaal.
Verschillende formaten kunnen worden gebruikt voor het maken van dergelijk materiaal.
Aanvankelijk probeerde ik Marp, een formaat specifiek voor het maken van presentaties, maar de mogelijkheden waren beperkt. Daarom besloot ik het algemenere SVG-formaat te gebruiken, dat bedoeld is voor vectorafbeeldingen.
Met een tekstgebaseerd formaat zoals SVG kan een standaard, chatgebaseerde generatieve AI het materiaal creëren indien gevraagd met een verzoek als: "Maak alstublieft presentatiemateriaal in SVG-formaat ter introductie van de inhoud van dit blogartikel."
Probleem met tekstoverloop
Het probleem hier is dat tekst vaak buiten het buitenste kader van het document of de kaders van figuren binnen het document uitsteekt.
Een mens zou direct tekstoverloop opmerken bij het bekijken van het voltooide document. Het detecteren van tekstoverloop in het SVG-tekststadium, in plaats van door visuele inspectie van het voltooide document, is echter moeilijk.
Als gevolg hiervan produceert chatgebaseerde generatieve AI vaak documenten met frequent tekstoverloop.
Natuurlijk genereert de AI het grootste deel van de inhoud goed, en ik zou de tekstoverloop eenvoudig handmatig kunnen corrigeren. Dit zou echter elke keer een handmatige stap introduceren.
Daarom werd het noodzakelijk om maatregelen te integreren om tekstoverloop te voorkomen bij het genereren van SVG-documenten, en om een mechanisme te ontwikkelen om automatisch te detecteren of er tekstoverloop aanwezig is in de gegenereerde SVG.
Om tekstoverloop te voorkomen, heb ik de aanpak gekozen om de generatieve AI basisregels, bedieningsprocedures en waarschuwingsinstructies te geven bij het instrueren van het maken van presentatiematerialen.
Als regels instrueerde ik het om geen complexe figuren te gebruiken en de lettergrootte van de tekst vast te zetten.
Verder instrueerde ik het om een procedure te volgen waarbij het aantal tekens in een zin binnen het document wordt geteld, dit wordt vermenigvuldigd met de lettergrootte om de breedte en hoogte te schatten, en vervolgens vooraf te bevestigen dat de tekst het kader of de figuren niet overloopt.
Tijdens dit proces instrueerde ik de AI om het gecontroleerde proces en de resultaten als voorafgaande controle notities in het SVG-bestand vast te leggen.
Het toevoegen van deze instructies zorgde voor enige verbetering, maar de initiële nauwkeurigheid was niet bevredigend. Daarom genereerde ik herhaaldelijk verschillende variaties, voegde veelvoorkomende foutpunten toe als waarschuwingsinstructies, en benadrukte regels en instructies herhaaldelijk binnen de prompttekst als deze niet werden opgevolgd.
Door proefondervindelijk deze promptverbeteringen te herhalen, kan tekstoverloop tot op zekere hoogte worden onderdrukt.
Met alle inspanningen is perfectie echter onbereikbaar, dus besloot ik in een later stadium een controle in te voeren.
Voor deze controle na de generatie probeerde ik een generatieve AI te gebruiken die visueel afbeeldingen kon inspecteren, maar deze kon tekstoverloop niet effectief detecteren, dus liet ik die aanpak varen.
Vervolgens probeerde ik een andere methode: de SVG-tekst opnieuw invoeren in een chatgebaseerde generatieve AI ter controle.
Deze methode was beter in het detecteren van tekstoverloop dan de visuele inspectie-AI, maar de detectienauwkeurigheid was nog steeds niet erg hoog. Ook hier kon ik, door de instructies voor het detecteren van overloop iteratief te verbeteren, een zekere mate van nauwkeurigheid bereiken, maar geen perfecte.
Daarom besloot ik een programma te maken om tekstoverloop rigoureuzer te detecteren. Dit programma controleert of de tekst het documentkader of interne figuren overloopt door de breedte en hoogte te berekenen uit de lengte van de zinnen en de lettergrootte in het presentatiemateriaal, zoals geïnstrueerd aan de generatieve AI.
Het maken van dit programma was bewerkelijk, maar uiteindelijk bleek het in staat tot nauwkeurige detectie.
Naast tekstoverloop waren er ook gevallen waarin de AI probeerde complexe grafieken te maken en vervormde uitvoer produceerde. Voor dergelijke aspecten behield ik de aanpak om de chatgebaseerde generatieve AI een controle op regelovertreding te laten uitvoeren.
Deze controle bepaalt of de AI figuren heeft gemaakt die complexer zijn dan gedefinieerd in de regels, en markeert deze als onacceptabel.
Met dit programma voor overloopcontrole en de generatieve AI voor regelovertreding kunnen problemen nu grotendeels worden gedetecteerd.
Verdere verwerking
Als er tijdens deze controles een afwijzing wordt gedetecteerd, wordt het gegenereerde SVG-formaat materiaal weggegooid en opnieuw gegenereerd. Dit komt omdat het aanwijzen en corrigeren van problematische gebieden vaak leidt tot andere problemen, wat uiteindelijk meer tijd kost.
Zodra een presentatiemateriaal zonder tekstoverloop compleet is, is de volgende stap het invoeren van dit materiaal en het oorspronkelijke blogartikel in de generatieve AI om het narratiescript te creëren. Hier was geen bijzondere vindingrijkheid voor nodig.
Vervolgens wordt het narratiescript omgezet in audiogegevens met behulp van een tekst-naar-spraak generatieve AI. Ook hiervoor waren geen speciale technieken nodig.
Ten slotte wordt het SVG-formaat presentatiemateriaal omgezet in PNG-afbeeldingen, en vervolgens, met behulp van een tool genaamd ffmpeg, omgezet in een mp4-video met audio. Hiermee is het proces voltooid.
De reeks processen na het maken van SVG-formaat dia's kan eenvoudig worden geautomatiseerd door programma's te schrijven terwijl men overlegt met generatieve AI.
Conclusie
Nadat ik dit geautomatiseerde systeem voor het genereren van presentatievideo's met succes zelf had gebouwd en verfijnd, ben ik vorige week begonnen met het publiceren van video's op YouTube.
Kort nadat dit systeem was voltooid, kreeg Google's NotebookLM, een AI-tool, echter ook een vergelijkbare functie voor het automatisch genereren van video's om tekstdocumenten uit te leggen.
Daarom wordt verwacht dat in de toekomst bedrijven die AI-diensten aanbieden vergelijkbare diensten zullen uitbrengen, waardoor de noodzaak voor individuen om dergelijke systemen vanaf nul te bouwen, komt te vervallen.
Niettemin is het ontwikkelen van een praktisch programma dat generatieve AI op zo'n serieuze manier benut, een belangrijke prestatie geweest, waardoor ik de kernprincipes van het effectief gebruiken van generatieve AI heb kunnen doorgronden.