Uhhy commited on
Commit
eed21cc
·
verified ·
1 Parent(s): 43e6802

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +33 -33
app.py CHANGED
@@ -9,58 +9,58 @@ import uuid
9
  from torch.cuda.amp import autocast
10
  import torch
11
 
12
- # Configura o logging
13
  logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
14
 
15
- logging.info("Carregando o modelo pré-treinado.")
16
  model = MusicGen.get_pretrained('nateraw/musicgen-songstarter-v0.2')
17
 
18
- @spaces.GPU(duration=0)
19
- def generate_music(description, melody_audio, duration):
20
  with autocast():
21
- logging.info("Iniciando a geração de música.")
22
- model.set_generation_params(duration=duration)
23
 
24
- if description:
25
- description = [description]
26
- if melody_audio:
27
- logging.info(f"Carregando a melodia de áudio de: {melody_audio}")
28
- melody, sr = torchaudio.load(melody_audio)
29
- logging.info("Gerando música com descrição e melodia.")
30
- wav = model.generate_with_chroma(description, melody[None], sr)
31
  else:
32
- logging.info("Gerando música apenas com descrição.")
33
- wav = model.generate(description)
34
  else:
35
- logging.info("Gerando música de forma incondicional.")
36
  wav = model.generate_unconditional(1)
37
 
38
  filename = f'{str(uuid.uuid4())}.wav'
39
- logging.info(f"Salvando a música gerada com o nome: {filename}")
40
  path = audio_write(filename, wav[0].cpu().to(torch.float32), model.sample_rate, strategy="loudness", loudness_compressor=True)
41
- print("Música salva em", path, ".")
42
- # Verifica a forma do tensor de áudio e se foi salvo corretamente
43
- logging.info(f"A forma do tensor de áudio gerado: {wav[0].shape}")
44
- logging.info("Música gerada e salva com sucesso.")
45
  if not os.path.exists(path):
46
- raise ValueError(f'Failed to save audio to {path}')
47
 
48
  return path
49
 
50
- # Define a interface Gradio
51
- description = gr.Textbox(label="Description", placeholder="acoustic, guitar, melody, trap, d minor, 90 bpm")
52
- melody_audio = gr.Audio(label="Melody Audio (optional)", type="filepath")
53
- duration = gr.Slider(label="Duration (seconds)", minimum=10, maximum=600, step=10, value=30) # Máximo 10 minutos (600 segundos)
54
- output_path = gr.Audio(label="Generated Music", type="filepath")
55
 
56
  gr.Interface(
57
- fn=generate_music,
58
- inputs=[description, melody_audio, duration],
59
  outputs=output_path,
60
- title="MusicGen Demo",
61
- description="Generate music using the MusicGen model.",
62
  examples=[
63
- ["trap, synthesizer, songstarters, dark, G# minor, 140 bpm", "./assets/kalhonaho.mp3", 30],
64
- ["upbeat, electronic, synth, dance, 120 bpm", None, 60]
65
  ]
66
  ).launch()
 
9
  from torch.cuda.amp import autocast
10
  import torch
11
 
12
+ # Configura el logging
13
  logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
14
 
15
+ logging.info("Cargando el modelo preentrenado.")
16
  model = MusicGen.get_pretrained('nateraw/musicgen-songstarter-v0.2')
17
 
18
+ @spaces.GPU(duration=120)
19
+ def generar_musica(descripcion, melodia_audio, duracion):
20
  with autocast():
21
+ logging.info("Iniciando la generación de música.")
22
+ model.set_generation_params(duration=duracion)
23
 
24
+ if descripcion:
25
+ descripcion = [descripcion]
26
+ if melodia_audio:
27
+ logging.info(f"Cargando la melodía de audio desde: {melodia_audio}")
28
+ melodia, sr = torchaudio.load(melodia_audio)
29
+ logging.info("Generando música con descripción y melodía.")
30
+ wav = model.generate_with_chroma(descripcion, melodia[None], sr)
31
  else:
32
+ logging.info("Generando música solo con descripción.")
33
+ wav = model.generate(descripcion)
34
  else:
35
+ logging.info("Generando música de manera incondicional.")
36
  wav = model.generate_unconditional(1)
37
 
38
  filename = f'{str(uuid.uuid4())}.wav'
39
+ logging.info(f"Guardando la música generada con el nombre: {filename}")
40
  path = audio_write(filename, wav[0].cpu().to(torch.float32), model.sample_rate, strategy="loudness", loudness_compressor=True)
41
+ print("Música guardada en", path, ".")
42
+ # Verifica la forma del tensor de audio generado y si fue guardado correctamente
43
+ logging.info(f"La forma del tensor de audio generado: {wav[0].shape}")
44
+ logging.info("Música generada y guardada con éxito.")
45
  if not os.path.exists(path):
46
+ raise ValueError(f'No se pudo guardar el audio en {path}')
47
 
48
  return path
49
 
50
+ # Definir la interfaz Gradio
51
+ descripcion = gr.Textbox(label="Descripción", placeholder="acústico, guitarra, melodía, trap, re menor, 90 bpm")
52
+ melodia_audio = gr.Audio(label="Melodía de audio (opcional)", type="filepath")
53
+ duracion = gr.Slider(label="Duración (segundos)", minimum=10, maximum=600, step=10, value=30) # Máximo 10 minutos (600 segundos)
54
+ output_path = gr.Audio(label="Música generada", type="filepath")
55
 
56
  gr.Interface(
57
+ fn=generar_musica,
58
+ inputs=[descripcion, melodia_audio, duracion],
59
  outputs=output_path,
60
+ title="Generador de Música",
61
+ description="Genera música utilizando el modelo MusicGen.",
62
  examples=[
63
+ ["trap, sintetizador, songstarters, oscuro, G# menor, 140 bpm", "./assets/kalhonaho.mp3", 30],
64
+ ["alegre, electrónica, sintetizador, dance, 120 bpm", None, 60]
65
  ]
66
  ).launch()