File size: 2,040 Bytes
d2d09cc
1381c8e
d2d09cc
4bafd38
404e15b
4830873
404e15b
 
d2d09cc
1381c8e
d2d09cc
404e15b
771b4e4
404e15b
 
d2d09cc
404e15b
d2d09cc
 
771b4e4
d2d09cc
404e15b
d2d09cc
404e15b
 
d2d09cc
404e15b
 
d2d09cc
404e15b
 
4830873
404e15b
1381c8e
 
 
d2d09cc
404e15b
d2d09cc
 
1381c8e
d2d09cc
 
 
 
1381c8e
d2d09cc
 
 
efd2061
d2d09cc
 
1381c8e
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
import gradio as gr
import torchaudio
from audiocraft.models import MusicGen
import spaces
import logging

# 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)

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

    return wav[0]  # Retorna o tensor de áudio diretamente

# 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")  # Especifica o tipo como "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()