Door de coronacrisis gaat het Eurovisiesongfestival, dat georganiseerd zou worden in Rotterdam, niet door. Bij gebrek aan dit grote evenement, waar veel mensen reikhalzend naar uitkeken, springt de VPRO slim in met een eigen variant: Het AI Songfestival. Dertien teams uit verschillende landen proberen met een multidisciplinair team het beste nummer te maken met behulp van Artificial Intelligence. Helaas is niet elk land vertegenwoordigd en zijn er ook meerdere teams actief in eenzelfde land. Australië, België (2), Duitsland (3), Frankrijk (2), Nederland (2), Verenigd Konkrijk, Zweden en Zwitserland doen mee. Het publiek kan de nummers beluisteren die gemaakt zijn door de teams en vervolgens stemmen op het nummer dat ze het beste vinden.
Workflow
Wat zou een mogelijkheid kunnen zijn om muziek te maken? Ook hier leiden veel wegen naar Rome, welke er precies bewandeld zijn is niet helemaal bekend. Popmuziek is wat opbouw betreft redelijk te ontrafelen, dit patroon kent vaak niet veel geheimen of nieuwigheden (intro-couplet-refrein-etc), daarnaast moeten er bepaalde melodieën inzitten die “catchy” zijn, moet er een goed ritme inzitten en moet de dynamiek goed passen. Ook zijn er natuurlijk lyrics nodig en moeten alle instrumenten samen het geheel maken. Een flinke klus om allemaal te genereren! Een end-to-end oplossing zal waarschijnlijk geen goed resultaat opleveren, maar het valt te proberen. Het genereren van melodieën zou misschien een beter eerste streven zijn. In hoeverre kunnen de keuzes van de mens het geheel snel een goede kant op duwen? Wordt alles te ver opgesplitst, dan is het samenvoegen van de elementen een lastige klus. Er kan dan wel gekozen worden voor een meer klassieke aanpak, waarbij de regels van muziek worden vastgelegd en bepaalde richtlijnen meegegeven worden (probabilistic model). Dit is echter veel werk en er is veel domeinkennis nodig.
Wat zou een mogelijke workflow kunnen zijn? Als eerste is het belangrijk dat er iets van (random) muziek gegenereerd kan worden, dit zal niet direct een heel nummer zijn, maar zou bijvoorbeeld een melodie kunnen zijn. Hiervoor is veel trainingsdata nodig om voorbeelden te hebben hoe de muziek zou moeten klinken. De veelgebruikte netwerkarchitectuur Generative Adversarial Network (GAN) zou een goede optie zijn om iets randoms te creeëren. Dit bestaat uit twee hoofddelen: een generator, die nieuwe samples genereert, en een discrimator, die bepaalt hoe groot de kans is dat de gegenereerde sample deel uit zou kunnen maken van een dataset met échte muziek. De discriminator beïnvloedt de generator, zodat de samples steeds meer gaan lijken op de muziek uit de dataset (maar niet precies hetzelfde!). Deze twee delen hebben op zichzelf ook een eigen netwerkarchitectuur, zo is er voor het analyseren van temporele data, data met sequentiële afhankelijkheid zoals taal of muziek, een Recurrent Neural Network (RNN) nodig.
Er zijn al bestaande projecten die muziekgeneratie op deze manier hebben getackeld, zoals MuseGAN. In deze projecten wordt vaak met simpele miditracks gewerkt, waardoor het wat suf klinkt, maar dit zou natuurlijk omgezet kunnen worden naar interessante instrumenten door middel van VSTs (virtuele instrumenten die wel goed klinken!). Kijk deze video van de universiteit van Manchester voor een introductie muziekgeneratie met deep learning.
Als zo een GAN allerlei random stukjes muziek uit kan spugen, is een volgende stap om er heel wat te genereren en op de één of andere manier te bepalen welke van deze samples nou potentie heeft om iets mee te gaan doen. Dit zou ook gedaan kunnen worden door een algoritme, zoals een genetisch algoritme die de generator aanpast aan de hand van de fitness (hoe “goed” is deze sample?) van de gegenereerde sample. Echter is de fitness van een sample moeilijk te definiëren. Want: wat is goed?
Dit is een goed moment dat een mens scores zou kunnen geven aan de samples en de fitness dus zou bepalen. Hiermee kan de generator verder getraind worden in de goede richting.
Er zou gekozen kunnen worden om eerst een melodielijn te genereren op de voorgestelde manier, hier een aantal varianten op te genereren (of álle mogelijke melodielijnen te genereren en dit meteen vast te leggen voor copyright). Dit zou de basis kunnen zijn voor een refrein, natuurlijk moet er nu nog passende andere delen gevonden worden, zoals een couplet en een intro. Daarnaast moeten er meerdere instrumenten meespelen en moet er een drumpartij komen. Een tool die hier goed bij kan helpen is Magenta van Google. Dit project heeft erg veel in zich wat betreft muziekgeneratie. Er zijn teams in Het AI Songfestival die het bijna het hele proces met Magenta gedaan hebben!
Een popnummer is natuurlijk niet af zonder lyrics. Om teksten te genereren is het model GPT-2 van OpenAI zeer geschikt. Het is getraind op een erg grote dataset van 40GB aan tekstdata uit 8 miljoen documenten. Het model is in staat om een volgende woord in een zin te voorspellen op basis van de voorgaande tekst. Hiermee is het mogelijk om zelf met een stuk tekst te starten en het model de rest te laten genereren. De kunst is natuurlijk om dit alles passend te maken in het geheel. Er zal veel trial and error aan te pas komen en menselijke interventie of beoordeling is nodig om er echt iets goeds van te maken. OpenAI kwam recent met Jukebox, een neuraal netwerk dat echte audio kan genereren, dus geen midi, inclusief rudimentele zang gebaseerd op gevoede lyrics. Niet alles wat met Jukebox gegenereerd is klinkt even goed, maar sommige samples die te beluisteren zijn, zijn toch best goed gelukt. Kanttekening: de samples die in de spotlight staan zijn geselecteerd door de wetenschappers zelf.
De uiteindelijke compositie die gemaakt wordt met de verschillende tools, kun je natuurlijk wel in laten spelen door muzikanten (of gewoon robots om het passend te houden).
Can AI Kick It
De NPO maakte een aantal korte aflveringen rondom Het AI Songfestival en in de eerste afleveringen wordt het team “Can AI Kick It” gevolgd, met Willie Wartaal als teamlid. Hoe pakt een team deze uitdaging aan? Bekijk de aflveringen op YouTube.
