MuseNet

Elkészítettük a MuseNet-et, egy olyan mély neurális hálózatot, amely képes 4 perces zenei kompozíciókat generálni 10 különböző hangszerrel, és képes a country-tól Mozarton át a Beatlesig minden stílust kombinálni. A MuseNet-et nem kifejezetten a zenei ismereteink alapján programoztuk, hanem a harmónia, a ritmus és a stílus mintáit fedezte fel azáltal, hogy több százezer MIDI-fájlban megtanulta megjósolni a következő jelet. A MuseNet ugyanazt az általános célú, felügyelet nélküli technológiát használja, mint a GPT-2, egy nagyméretű transzformációs modell, amelyet arra képeztek ki, hogy megjósolja a következő tokent egy szekvenciában, legyen az hang vagy szöveg.

Minták

Mivel a MuseNet sok különböző stílust ismer, újszerű módon keverhetünk generációkat. Itt a modellnek egy Chopin Nocturne első 6 hangját adjuk meg, de arra kérjük, hogy generáljon egy pop stílusú darabot zongorával, dobokkal, basszusgitárral és gitárral. A modellnek sikerül meggyőzően vegyítenie a két stílust, és a teljes zenekar a 30 másodperc környékén csatlakozik hozzá:

Kipróbálja a MuseNet-et

Kíváncsian várjuk, hogy zenészek és nem zenészek egyaránt hogyan fogják használni a MuseNet-et új kompozíciók létrehozására!

Az egyszerű módban (alapértelmezés szerint látható) az általunk előre generált, véletlenszerűen össze nem állított mintákat hallja. Válasszon egy zeneszerzőt vagy stílust, opcionálisan egy híres darab kezdetét, és kezdje el a generálást. Így felfedezheti, hogy a modell milyen sokféle zenei stílust képes létrehozni. A haladó módban közvetlenül interakcióba léphet a modellel. A befejezések hosszabb időt vesznek igénybe, de egy teljesen új darabot hoz létre.

A MuseNet néhány korlátozása:

  • A kért hangszerek erős javaslatok, nem követelmények. A MuseNet minden egyes hangjegyet az összes lehetséges hangjegy és hangszer valószínűségének kiszámításával generál. A modell úgy változik, hogy az Ön által választott hangszereket valószínűbbé tegye, de mindig van rá esély, hogy valami mást választ.
  • A MuseNet-nek nehezebb dolga van a stílusok és hangszerek páratlan párosításaival (például Chopin basszusgitárral és dobokkal). A generációk természetesebbek lesznek, ha a zeneszerző vagy zenekar szokásos stílusához legközelebb álló hangszereket választja.

Szerző és hangszerelés tokenek

A zeneszerző és hangszerelés tokeneket azért hoztuk létre, hogy nagyobb kontrollt adjunk a MuseNet által generált minták fajtái felett. A betanítási idő alatt ezeket a zeneszerző és hangszerelés tokeneket minden egyes mintához előzetesen hozzárendeltük, hogy a modell megtanulja használni ezeket az információkat a hangjegy-előrejelzések készítésekor. Generáláskor aztán kondicionálhatjuk a modellt, hogy egy kiválasztott stílusban hozzon létre mintákat, ha egy olyan felszólítással kezdünk, mint például Rachmaninov zongorakezdés:

Vagy a Journey zenekarral, zongorával, basszusgitárral, gitárral és dobokkal:

A MuseNet beágyazásait vizualizálhatjuk, hogy betekintést nyerjünk abba, mit tanult a modell. Itt a t-SNE-t használjuk a különböző zenei zeneszerzők és stílusok beágyazásainak koszinusz-hasonlóságának 2D-s térképének létrehozásához.

Egy adott zeneszerző vagy stílus fölé mozdulva láthatjuk, hogyan viszonyul a többiekhez.

Long-term structure

A MuseNet a Sparse Transformer újraszámítási és optimalizált kerneleit használja egy 72 rétegű, 24 figyelemfejjel rendelkező hálózat betanításához – teljes figyelemmel egy 4096 tokenből álló kontextuson keresztül. Ez a hosszú kontextus lehet az egyik oka annak, hogy képes megjegyezni egy darab hosszú távú struktúráját, mint az alábbi, Chopint imitáló mintában:

A zenei dallamstruktúrákat is képes létrehozni, mint ebben a Mozartot imitáló mintában:

A zenei generálás hasznos tartomány a Sparse Transformer tesztelésére, mivel a szöveg és a képek közötti középmezőben helyezkedik el. A szöveg folyékony tokenszerkezetével rendelkezik (a képekben N tokent visszanézhetünk, és megtalálhatjuk a felette lévő sort, míg a zenében nincs egy fix szám az előző ütemre való visszanézéshez). Mégis könnyen hallhatjuk, hogy a modell hosszú távú struktúrát rögzít-e több száz vagy ezer token nagyságrendben. Sokkal nyilvánvalóbb, ha egy zenei modell a ritmus megváltoztatásával összekuszálja a struktúrát, oly módon, hogy kevésbé egyértelmű, ha egy szöveges modell egy rövid érintőre téved.

Adatkészlet

A MuseNet számára számos különböző forrásból gyűjtöttünk képzési adatokat. A ClassicalArchives és a BitMidi a MIDI-fájlok nagy gyűjteményét adományozta ehhez a projekthez, és számos online gyűjteményt is találtunk, többek között jazz, pop, afrikai, indiai és arab stílusokat. Emellett a MAESTRO adathalmazt is felhasználtuk.

A transzformátort szekvenciális adatokon képeztük ki: adott egy hangkészlet, és arra kérjük, hogy jósolja meg a következő hangot. Többféle módon kísérleteztünk a MIDI-fájlok tokenekké való kódolásával, amelyek alkalmasak erre a feladatra. Először egy akkordonkénti megközelítést, amely az egyszerre megszólaló hangjegyek minden egyes kombinációját önálló “akkordnak” tekintette, és minden egyes akkordhoz tokent rendelt. Másodszor, megpróbáltuk tömöríteni a zenei mintákat úgy, hogy csak a hangok kezdetére koncentráltunk, és ezt tovább tömörítettük egy bájtpáros kódolási séma segítségével.

Az idő múlásának jelölésére két különböző módszert is kipróbáltunk: vagy olyan tokeneket, amelyeket a darab tempójának megfelelően skáláztunk (így a tokenek egy zenei ütemet vagy az ütem töredékét jelentették), vagy olyan tokeneket, amelyek az abszolút időt jelölték másodpercben. Olyan kódolásra jutottunk, amely ötvözi a kifejezőerőt a tömörséggel: a hangmagasság, a hangerő és a hangszer információit egyetlen tokenben egyesíti.

bach piano_strings start tempo90 piano:v72:G1 piano:v72:G2 piano:v72:B4 piano:v72:D4 violin:v80:G4 piano:v72:G4 piano:v72:B5 piano:v72:D5 wait:12 piano:v0:B5 wait:5 piano:v72:D5 wait:12 piano:v0:D5 wait:4 piano:v0:G1 piano:v0:G2 piano:v0:B4 piano:v0:D4 violin:v0:G4 piano:v0:G4 wait:1 piano:v72:G5 wait:12 piano:v0:G5 wait:5 piano:v72:D5 wait:12 piano:v0:D5 wait:5 piano:v72:B5 wait:12
Mintakódolás, amely egyesíti a hangmagasságot, a hangerőt és a hangszert.

A képzés során:

  1. Transzponáljuk a hangokat a hangmagasságok emelésével és csökkentésével (a képzés során később csökkentjük a transzponálás mértékét, hogy a generációk az egyes hangszertartományokon belül maradjanak).
  2. A hangerő növelésével, a különböző minták általános hangerejének fel- vagy lefordításával.
  3. Az időzítés növelésével (ha az abszolút idő másodpercben kifejezett kódolást használjuk), gyakorlatilag a darabok kismértékű lassításával vagy gyorsításával.
  4. Keverés alkalmazása a token beágyazási téren

Egy belső kritikust is létrehozunk: a modellnek a képzési idő alatt meg kell jósolnia, hogy egy adott minta valóban az adathalmazból származik-e, vagy a modell saját korábbi generációinak egyike. Ezt a pontszámot használjuk a minták kiválasztásához a generálás idején.

Embeddingek

Együtt többféle beágyazást adtunk hozzá, hogy a modellnek több strukturális kontextust adjunk. A standard pozicionális beágyazásokon kívül hozzáadtunk egy tanult beágyazást, amely az idő múlását követi egy adott mintában. Így az egyszerre megszólaló hangok mindegyike ugyanazt az időbeli beágyazást kapja. Ezután hozzáadunk egy beágyazást egy akkord minden egyes hangjához (ez a relatív figyelmet utánozza, mivel a modell könnyebben megtanulja, hogy a 4. hangnak vissza kell néznie a 3. hangra, vagy az előző akkord 4. hangjára). Végül két strukturális beágyazást adunk hozzá, amelyek megmondják a modellnek, hogy egy adott zenei minta hol helyezkedik el a nagyobb zenei darabon belül. Az egyik beágyazás a nagyobb darabot 128 részre osztja, míg a második kódolás egy visszaszámlálás 127-től 0-ig, ahogy a modell közeledik a (vég)jelhez.

Kíváncsian várjuk, mit alkotnak az emberek! Ha létrehozol egy számot, ami tetszik, töltsd fel egy ingyenes szolgáltatásra, például az Instaudio-ra, majd tweeteld nekünk a linket (a MuseNet demójában van egy tweet gomb, ami segít ebben).

Ha szeretnél többet megtudni az OpenAI zenei munkájáról, fontold meg, hogy jelentkezel-e a csapatunkba. A MuseNet demóval kapcsolatos javaslataidat nyugodtan küldd el nekünk e-mailben. Szintén szívesen hallanánk felőled, ha érdekel a MuseNettel való mélyebb zeneszerzés, vagy ha vannak MIDI fájljaid, amelyeket szívesen hozzáadnál a gyakorló készlethez.

A MuseNet 2019. április 25-én egy kísérleti koncertet adott, amelyet az OpenAI Twitch csatornáján livestreameltünk, és amelyben egyetlen ember (minket is beleértve) sem hallotta korábban a darabokat.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.