File size: 2,153 Bytes
d2d09cc
1381c8e
d2d09cc
4bafd38
404e15b
cb36b4b
b8c8c14
d2c8353
404e15b
 
d2d09cc
1381c8e
d2d09cc
404e15b
771b4e4
404e15b
 
d2d09cc
404e15b
d2d09cc
 
771b4e4
d2d09cc
404e15b
d2d09cc
404e15b
 
d2d09cc
404e15b
 
d2d09cc
404e15b
 
d2c8353
 
404e15b
d2c8353
 
b8c8c14
 
d2d09cc
404e15b
d2d09cc
 
b8c8c14
d2d09cc
 
 
 
d2c8353
d2d09cc
 
 
efd2061
d2d09cc
 
f4dda01
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import gradio as gr
import torchaudio
from audiocraft.models import MusicGen
import spaces
import logging
import tempfile
import numpy as np

# Configura o logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

@spaces.GPU(duration=120)
def generate_music(description, melody_audio):
    logging.info("Iniciando a geração de música.")

    # Carrega o modelo pré-treinado
    logging.info("Carregando o modelo pré-treinado.")
    model = MusicGen.get_pretrained('nateraw/musicgen-songstarter-v0.2')
    model.set_generation_params(duration=8)

    if description:
        description = [description]
        if melody_audio:
            logging.info(f"Carregando a melodia de áudio de: {melody_audio}")
            melody, sr = torchaudio.load(melody_audio)
            logging.info("Gerando música com descrição e melodia.")
            wav = model.generate_with_chroma(description, melody[None], sr)
        else:
            logging.info("Gerando música apenas com descrição.")
            wav = model.generate(description)
    else:
        logging.info("Gerando música de forma incondicional.")
        wav = model.generate_unconditional(1)

    # Verifica a forma do tensor de áudio gerado
    logging.info(f"A forma do tensor de áudio gerado: {wav[0].shape}")
    logging.info("Música gerada com sucesso.")

    # Retorna o áudio gerado como uma tupla (sample rate, numpy array)
    return model.sample_rate, wav[0].cpu().numpy()

# Define a interface Gradio
description = gr.Textbox(label="Description", placeholder="acoustic, guitar, melody, trap, d minor, 90 bpm")
melody_audio = gr.Audio(label="Melody Audio (optional)", type="filepath")
output_audio = gr.Audio(label="Generated Music", type="numpy")

gr.Interface(
    fn=generate_music,
    inputs=[description, melody_audio],
    outputs=output_audio,
    title="MusicGen Demo",
    description="Generate music using the MusicGen model.",
    examples=[
        ["trap, synthesizer, songstarters, dark, G# minor, 140 bpm", "./assets/kalhonaho.mp3"],
        ["upbeat, electronic, synth, dance, 120 bpm", None]
    ]
).launch()