Generare musica utilizzando MusicGen di Meta su Colab

Creare musica con MusicGen di Meta su Colab

Nel vasto campo dell’intelligenza artificiale, l’apprendimento automatico ha rivoluzionato numerosi ambiti, tra cui l’elaborazione del linguaggio naturale, la visione artificiale e il riconoscimento vocale. Tuttavia, un’area affascinante che ha attirato l’attenzione dei ricercatori e degli appassionati di musica è la generazione di musica utilizzando algoritmi di intelligenza artificiale. MusicGen è un modello all’avanguardia per la generazione di musica a partire da testo, che traduce senza soluzione di continuità le indicazioni testuali in affascinanti composizioni musicali.

Cos’è MusicGen?

MusicGen è un modello straordinario progettato per la generazione di musica che offre semplicità e controllabilità. A differenza dei metodi esistenti come MusicLM, MusicGen si distingue eliminando la necessità di una rappresentazione semantica auto-supervisionata. Il modello utilizza un’architettura di Transformer auto-regressivo a singolo stadio ed è addestrato utilizzando un tokenizer EnCodec a 32kHz. Va notato che MusicGen genera tutti e quattro i codebook in un singolo passaggio, distinguendosi così dagli approcci convenzionali. Introducendo un leggero ritardo tra i codebook, il modello dimostra la capacità di predirli in parallelo, risultando in soli 50 passaggi auto-regressivi al secondo di audio. Questo approccio innovativo ottimizza l’efficienza e la velocità del processo di generazione di musica.

MusicGen è addestrato su 20.000 ore di musica con licenza. È stato anche addestrato sul dataset interno di 10.000 tracce musicali di alta qualità e sui dati musicali di ShutterStock e Pond5.

Prerequisiti:

Come indicato nell’ repo ufficiale di MusicGen su GitHub:

  • Python 3.9
  • PyTorch 2.0.0
  • Una GPU con almeno 16 GB di memoria

Modelli disponibili di MusicGen

Sono disponibili 4 modelli pre-addestrati e sono i seguenti:

  • Small: modello da 300M, solo testo in musica
  • VoAGI: modello da 1,5B, solo testo in musica
  • Melody: modello da 1,5B, testo e melodia in musica
  • Large: modello da 3,3B, solo testo in musica

Esperimenti

Di seguito è riportato l’output della generazione di musica condizionata utilizzando il modello MusicGen large.

Input di testo: Suono della campanella con violino e pianoforte

Output: (Utilizzando il modello "large" di MusicGen)

Di seguito è riportato l’output del modello MusicGen “melody”. Abbiamo utilizzato l’audio e l’input di testo sopra riportati per generare l’audio seguente.

Input di testo: Aggiungi batteria pesante e solo batteria

Output: (Utilizzando il modello "melody" di MusicGen)

Come configurare MusicGen su Colab

Assicurati di utilizzare la GPU per una rapida inferenza. Ci sono voluti circa 9 minuti per generare 10 secondi di audio utilizzando la CPU, mentre con la GPU(T4) sono bastati solo 35 secondi.

Prima di iniziare, assicurati che Torch e TorchAudio siano installati in Colab.

Installa la libreria AudioCraft di Facebook.

!python3 -m pip install -U git+https://github.com/facebookresearch/audiocraft#egg=audiocraft

Importa le librerie necessarie.

from audiocraft.models import musicgenfrom audiocraft.utils.notebook import display_audioimport torchfrom audiocraft.data.audio import audio_write

Carica il modello. Ecco l’elenco dei modelli disponibili:

# | tipi di modello sono => small, VoAGI, melody, large |# | dimensioni dei modelli sono => 300M, 1.5B, 1.5B, 3.3B |model = musicgen.MusicGen.get_pretrained('large', device='cuda')

Imposta i parametri (opzionale):

model.set_generation_params(duration=60) # questo genererà 60 secondi di audio.

Generazione di musica condizionata (genera la musica fornendo il testo).

model.set_generation_params(duration=60)res = model.generate( [ 'Suono della campanella con violino e pianoforte' ], progress=True)# Questo mostrerà i controlli della musica su Colab

Per generare musica incondizionata:

res = model.generate_unconditional( num_samples=1, progress=True)# this will show the music controls on the screendisplay_audio(res, 16000)

Per generare una continuazione musicale

Per creare una continuazione musicale abbiamo bisogno di un file audio. Alimenteremo quel file al modello e il modello genererà e aggiungerà più musica ad esso.

from audiocraft.utils.notebook import display_audioimport torchaudio