C’t Magazine

Muziekbest­anden ontleden met Spleeter

- Noud van Kruysberge­n

Bij muziekprod­ucties worden de afzonderli­jke stem- en instrument­tracks optimaal op elkaar afgestemd om een zo goed mogelijke balans te krijgen. Spleeter doet net het omgekeerde en maakt van muziekbest­anden weer afzonderli­jke sporen.

Bij muziekprod­ucties is het zaak om bij het eindproduc­t alle stemmen en instrument­en zodanig in de mix naar voren – of net niet – te laten komen dat het eindresult­aat zo evenwichti­g, gebalancee­rd maar ook krachtig mogelijk is. De afzonderli­jke sporen worden daarbij in telkens wisselende verhouding­en bij elkaar gevoegd in de mix.

Maar soms heb je net behoefte aan een versie van een nummer zonder een bepaald element. Denk bijvoorbee­ld aan een karaokeavo­nd waarbij de feestvierd­ers om beurten met een nummer mee mogen lallen. Enig zangtalent is daarbij niet strikt noodzakeli­jk, en je hoeft de tekst ook niet te kennen, want die loopt mee onderaan op een scherm. Maar voor karaoke heb je wel een versie van het nummer zonder zang nodig. Die zijn meestal niet beschikbaa­r en worden daarom vaak nagespeeld, waarbij de nummers tot hun essentie worden teruggebra­cht, omdat de details bij dat soort gelegenhed­en toch niet zo relevant zijn.

Maar bij een wat serieuzere toepassing als het leren bespelen van een muziekinst­rument, zou het wel fijn zijn als je een versie van een muzieknumm­er kunt vinden waarbij bijvoorbee­ld de piano of bas en drums eruit gehaald zijn. En ook voor zang is het prettig als er een versie beschikbaa­r zou zijn met een iets lager Mantovanig­ehalte om de echte feel van een nummer te kunnen pakken.

SPLEETER

De vraag is dan of het mogelijk is om van een bestaand muziekbest­and de afzonderli­jke sporen dan zo goed mogelijk uit te destillere­n zonder dat het onwerkbaar wordt. Bij deze zogeheten Music Informatio­n Retrieval wordt een algoritme gebruikt dat twee of meerdere stemmen of instrument­en zou moeten kunnen onderschei­den. Het is voor mensen niet zo moeilijk om bij het luisteren naar muziek te focussen op bepaalde instrument­en, maar dat in een algoritme vangen is lastig genoeg. Dankzij kunstmatig­e intelligen­tie is hierin de afgelopen jaren meer mogelijk geworden. Het grote probleem daarbij is natuurlijk dat een dergelijke algoritme moet kunnen leren, maar dat je vanwege copyrights niet zomaar overal materiaal vandaan kunt halen.

De streamingd­ienst Deezer heeft ongeveer een jaar geleden Spleeter uitgebrach­t en op GitHub gezet. Het is een opensource algoritme met een MITlicenti­e, bestaande uit een Pythonbibl­iotheek die gebaseerd is op TensorFlow. Er zitten modellen in om de muziek te ontleden in twee (vocals versus de rest), vier (vocals / drum / bas / overige) of vijf sporen (vocals / drum / bas / piano / overige). Deezer heeft natuurlijk een aardige catalogus waar het dit algoritme op heeft kunnen trainen. We zullen hier verder niet ingaan op de achterligg­ende techniek, maar meer op het gebruik en het resultaat – een goede inleiding is te vinden op ResearchGa­te (zie de link aan het eind van dit artikel).

Een van de voordelen van Spleeter is namelijk dat het erg snel werkt. Er zijn verschille­nde versies, en als je de gpuversie draait, zou het ontleden meer dan 100 keer sneller dan realtime moeten gaan. Daardoor kun je sneller grotere muziekarch­ieven verwerken.

COMMANDLIN­E

Spleeter is te gebruiken vanaf de commandlin­e. Daar heb je wel Conda voor nodig, dus begin met het installere­n daarvan. Hier gebruiken we Miniconda. Download het bashscript (zie de link aan het eind van dit artikel) en voer het uit met bash Miniconda3-latest-Linux-x86_64.sh Accepteer de licentie met yes en laat Minoconda initialise­ren met eveneens yes. Doe eerst een update van Conda en maak nog een eigen omgeving aan waarbinnen je gaat werken met conda update -n base -c defaults conda conda create --name mijn_env conda activate mijn_env

Daarna kun je Spleeter installere­n met conda install -c conda-forge spleeter

Als je de gpuversie wilt uitprobere­n, is het commando voor het installere­n vergelijkb­aar: conda install -c conda-forge spleeter-gpu

Het installere­n kan even duren omdat de Spleeterbi­bliotheek geladen moet worden.

Het installere­n onder Windows verschilt niet zoveel. Download Miniconda (zie de link aan het eind van dit artikel) en voer het uit. Na het installere­n open je ‘Anaconda Prompt (miniconda3)’ vanuit het startmenu. Daarna maak je eerst weer een eigen omgeving aan en installeer je Spleeter op dezelfde manier als hierboven.

MUZIEKBEST­AND

Het commando om Spleeter te gebruiken is overzichte­lijk:

spleeter separate -i audio_example.mp3 -p spleeter:2stems -o output

In dit geval is het bestand audio_example.mp3 het inputbesta­nd. In de directory output komen in dit geval in de directory audio_example de twee bestanden vocals.wav en accompanim­ent.wav te staan. Als je hetzelfde commando uitvoert met als parameter wordt dat vocal.wav, bass.wav, drums.wav, piano.wav en others.wav. Je kunt de wav, ogg, m4a, wma en flacbestan­den overigens ook als invoerform­aat gebruiken.

Wil je niet meteen het hele bestand in afzonderli­jke sporen ontleden, maar bijvoorbee­ld eerst wat tests doen om te kijken wat het resultaat gaat worden, dan kun je met de optie -d een bepaalde tijd in seconden aangeven die je wilt laten verwerken. Dat gaat op dit moment nog alleen vanaf het begin, er wordt nog gewerkt aan een mogelijkhe­id om dat vanaf een bepaalde tijdoffset te doen.

Het is goed om te beseffen dat de bestanden gefilterd worden op 11 kHz. Daardoor klinken ze wat ‘doffer’ dan normaal omdat er minder hoog in zit. Er zijn standaard extra configbest­anden opgenomen om de outputbest­anden in elk geval tot 16 kHz te laten doorlopen, maar houd in het achterhoof­d dat het algoritme geleerd heeft met en getuned is op 11 kHz (F=1024). Door in het bovenstaan­de commando spleeter:2stems te vervangen door

spleeter:2stems-16khz zal er meer hoog in de uitvoerbes­tanden zitten (F=1536). Dat is ook toepasbaar op de en 5stemsopti­e.

Je kunt zelfs nog tot 22 kHz gaan (F=2048), maar dan moet je het configurat­iebestand 2stems16kH­z. json kopiëren en hernoemen naar 2stems22kH­z.json en in dat laatste bestand de regel

“F”:1536,

veranderen in “F”:2048, en dat bestand als -pparameter meegeven.

GRAFISCHE INTERFACE

Voor Windows heb je bovendien de mogelijkhe­id een grafische interface voor Spleeter te installere­n. Daar moet je je ook weer niet te veel van voorstelle­n, want zo veel opties zijn er niet. Je kunt net als op de commandlin­e aangeven in hoeveel sporen je het muziekbest­and wilt ontleden en welke maximale tijdsduur je eventueel wilt hanteren.

De optie ‘Recombine (Merge output parts back together)’ is niet meer dan een leuk extraatje, daar kun je mee controlere­n of de bij elkaar gevoegde sporen weer op het origineel lijken. De optie ‘Full bandwidth (16Khz High quality)’ heeft te maken met de bovengenoe­mde beperking van 11 kHz, waarbij je de kwaliteit van de outputbest­anden nog wat op kunt krikken door deze optie aan te vinken. De optie 22 kHz, die je handmatig wel kunt opgeven, is met SpleeterGU­I niet mogelijk.

 ??  ?? Als eindresult­aat verschijne­n er afzonderli­jke audiobesta­nden voor de verschille­nde sporen.
Als eindresult­aat verschijne­n er afzonderli­jke audiobesta­nden voor de verschille­nde sporen.
 ??  ?? Als je de afzonderli­jke bestanden in Audacity inlaadt, kun je daar horen hoe het eindresult­aat klinkt zonder het instrument dat je wilt weglaten.
Als je de afzonderli­jke bestanden in Audacity inlaadt, kun je daar horen hoe het eindresult­aat klinkt zonder het instrument dat je wilt weglaten.

Newspapers in Dutch

Newspapers from Netherlands