Gerando música com inteligência artificial | Valchan

Gerando música com inteligência artificial

Projeto feito na plataforma da Educative.io

Ultimamente venho buscando aprofundar meus conhecimentos sobre inteligência artificial e recentemente, fiz o projeto de geração de música utilizando a AI na plataforma Educative.io. Foi um projeto bastante interessante, nele usei o framework AudioCraft da MetaAI para gerar músicas de diversos gêneros!

Informações

  • torchaudio: Esta biblioteca será utilizada para processamento de áudio;
  • audiocraft: Esta biblioteca fornecerá modelos de geração de música;
  • MusicGen: Este modelo gerará música conforme o prompt fornecido;
  • Audio: Este módulo exibirá a saída de áudio;
  • Textarea: Este módulo será utilizado para exibir uma área de texto semelhante ao HTML;
  • Button: Este módulo será utilizado para exibir um botão semelhante ao HTML.

Veja o que podemos fazer com poucas linhas de código!

Em um arquivo.ipynb:

  • Primeiro, faço a importação das bibliotecas e módulos necessários
import torchaudio
import audiocraft
from audiocraft.models import MusicGen
from IPython.display import Audio
from ipywidgets import Textarea
from ipywidgets import Button
model = MusicGen.get_pretrained('facebook/musicgen-small')
  • Defino a duração da música a ser gerada
model.set_generation_params(duration=8)
  • Crio uma área de texto para informar o prompt da música
description = Textarea(value='', placeholder='Give a music prompt', disabled=False, rows=4)
  • Adiciono um botão para gerar a música
generate_button = Button(description="Generate Tune")
  • Crio a função de geração de música
def generate_tune(event):
    # Gero a música com base no prompt fornecido
    results = model.generate([description.value])
    # Obtenho a taxa de amostragem do modelo (em Hz)
    sampling_rate =  model.sample_rate
    # Exibo a saída de áudio
    display(Audio(results[0].cpu().numpy(), rate=sampling_rate))
  • Conecto o evento de clique do botão à função de geração de música
generate_button.on_click(generate_tune)
  • Deixo exibindo a área de texto e o botão
display(description)
display(generate_button)

Fontes:

Comentários