Sergiosamyy commited on
Commit
1ad1d98
·
verified ·
1 Parent(s): dd03467

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -51
app.py CHANGED
@@ -1,64 +1,33 @@
1
  import gradio as gr
2
  import torch
3
- from audiocraft.models import MusicGen
4
- import uuid
5
- import os
6
- import scipy.io.wavfile
7
- import numpy as np
8
 
9
- # Cargar el modelo MusicGen
10
- print("Cargando el modelo MusicGen...")
11
- model = MusicGen.get_pretrained('facebook/musicgen-small')
12
- print("Modelo cargado correctamente.")
13
 
14
  # Función para generar música
15
  def generar_musica(descripcion):
16
  try:
17
- print(f"Generando música con descripción: {descripcion}")
18
-
19
- # Reducir la duración a 3 segundos para evitar bloqueos
20
- model.set_generation_params(duration=3)
21
-
22
- # Generar música
23
- output = model.generate(descriptions=[descripcion])
24
-
25
- # Verificar si la salida del modelo es válida
26
- if not isinstance(output, list) or len(output) == 0 or not isinstance(output[0], torch.Tensor):
27
- print("Error: La salida del modelo es inválida.")
28
- return None, "Error: No se pudo generar la música."
29
-
30
- audio_tensor = output[0]
31
-
32
- # Verificar si el tensor tiene datos
33
- if audio_tensor.numel() == 0:
34
- print("Error: El tensor generado está vacío.")
35
- return None, "Error: No se pudo generar la música."
36
-
37
- # Convertir el tensor a NumPy asegurando el tipo de dato correcto
38
- audio_data = audio_tensor.cpu().detach().numpy().astype(np.float32)
39
 
40
- # Normalizar audio para formato WAV de 16 bits
41
- audio_data = np.int16(audio_data / np.max(np.abs(audio_data)) * 32767)
 
 
42
 
43
- # Guardar el archivo de audio en la carpeta de Hugging Face Spaces
44
- output_path = f"/mnt/data/output_{uuid.uuid4().hex}.wav"
45
- scipy.io.wavfile.write(output_path, 32000, audio_data)
46
 
47
- print(f"Música generada y guardada en {output_path}")
48
- return output_path
49
- except Exception as e:
50
- print(f"Error al generar música: {e}")
51
- return None, "Error: No se pudo generar la música."
52
 
53
- # Crear interfaz con Gradio
54
- demo = gr.Interface(
55
- fn=generar_musica,
56
- inputs=gr.Textbox(label="Descripción de la música"),
57
- outputs=gr.Audio(label="Música Generada"),
58
- title="Generador de Música AI",
59
- description="Introduce una descripción y genera una pista de música.",
60
- allow_flagging="never" # Evita bloqueos por tiempo de espera
61
- )
62
 
63
  if __name__ == "__main__":
64
- demo.launch()
 
1
  import gradio as gr
2
  import torch
3
+ import torchaudio
4
+ from diffusers import AudioLDMPipeline
 
 
 
5
 
6
+ # Cargar el modelo de AudioLDM
7
+ pipe = AudioLDMPipeline.from_pretrained("cvssp/audioldm-s-full-v2")
8
+ pipe.to("cpu") # Ejecutar en CPU
 
9
 
10
  # Función para generar música
11
  def generar_musica(descripcion):
12
  try:
13
+ audio = pipe(descripcion, num_inference_steps=50) # Reducir pasos para mayor rapidez en CPU
14
+ audio_path = "musica_generada.wav"
15
+ torchaudio.save(audio_path, audio["audio"][0].unsqueeze(0).cpu(), 16000)
16
+ return audio_path
17
+ except Exception as e:
18
+ return f"Error: {e}"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
 
20
+ # Interfaz Gradio
21
+ with gr.Blocks() as interfaz:
22
+ gr.Markdown("# Generador de Música AI")
23
+ gr.Markdown("Introduce una descripción y genera una pista de música.")
24
 
25
+ descripcion = gr.Textbox(label="Descripción de la música")
26
+ salida = gr.Audio(label="Música Generada")
 
27
 
28
+ boton = gr.Button("Generar Música")
 
 
 
 
29
 
30
+ boton.click(fn=generar_musica, inputs=descripcion, outputs=salida)
 
 
 
 
 
 
 
 
31
 
32
  if __name__ == "__main__":
33
+ interfaz.launch()