Sergiosamyy commited on
Commit
56c4965
·
verified ·
1 Parent(s): 1df7425

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -33
app.py CHANGED
@@ -3,56 +3,51 @@ import torch
3
  from audiocraft.models import MusicGen
4
  import uuid
5
  import os
6
- import scipy.io.wavfile as wav
 
7
 
8
- # Cargar el modelo de MusicGen
9
  print("Cargando el modelo MusicGen...")
10
- try:
11
- model = MusicGen.get_pretrained('facebook/musicgen-small')
12
- print("Modelo cargado correctamente.")
13
- except Exception as e:
14
- print(f"Error al cargar el modelo: {e}")
15
- exit(1)
16
 
17
  # Función para generar música
18
  def generar_musica(descripcion):
19
  try:
20
- print(f"\nGenerando música con la descripción: {descripcion}")
21
 
22
- # Configurar duración de la pista (5 segundos para pruebas más rápidas)
23
- model.set_generation_params(duration=5)
24
 
25
  # Generar música
26
  output = model.generate(descriptions=[descripcion])
27
 
28
- # Verificar si la salida es válida
29
- if not isinstance(output, list) or len(output) == 0:
30
- print("Error: La salida del modelo es vacía.")
31
  return "Error: No se pudo generar la música."
32
 
33
- # Extraer el tensor de audio
34
  audio_tensor = output[0]
35
 
36
- # Verificar que el tensor no esté vacío
37
- if not isinstance(audio_tensor, torch.Tensor) or audio_tensor.numel() == 0:
38
- print("Error: El tensor de audio es inválido.")
39
  return "Error: No se pudo generar la música."
40
 
41
- # Convertir a NumPy (float32 para evitar distorsiones)
42
- audio_data = audio_tensor.cpu().detach().numpy().astype("float32")
43
 
44
- # Normalizar a 16 bits
45
- audio_data = (audio_data * 32767).astype("int16")
46
 
47
  # Guardar el archivo de audio
48
- output_path = f"output_{uuid.uuid4().hex}.wav"
49
- wav.write(output_path, 32000, audio_data)
50
 
51
- print(f"Música generada y guardada en: {output_path}")
52
  return output_path
53
-
54
  except Exception as e:
55
- print(f"Error durante la generación de música: {e}")
56
  return "Error: No se pudo generar la música."
57
 
58
  # Crear interfaz con Gradio
@@ -61,9 +56,4 @@ demo = gr.Interface(
61
  inputs=gr.Textbox(label="Descripción de la música"),
62
  outputs=gr.Audio(label="Música Generada"),
63
  title="Generador de Música AI",
64
- description="Introduce una descripción y genera una pista de música."
65
- )
66
-
67
- # Ejecutar la aplicación
68
- if __name__ == "__main__":
69
- demo.launch()
 
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
+ # Establecer parámetros de generación
20
+ model.set_generation_params(duration=5) # Reducido a 5 segundos para evitar problemas de memoria
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 vacía o inválida.")
28
  return "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 "Error: No se pudo generar la música."
36
 
37
+ # Convertir el tensor a NumPy
38
+ audio_data = audio_tensor.cpu().detach().numpy()
39
 
40
+ # Normalizar audio para formato WAV de 16 bits
41
+ audio_data = np.int16(audio_data * 32767)
42
 
43
  # Guardar el archivo de audio
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 "Error: No se pudo generar la música."
52
 
53
  # Crear interfaz con Gradio
 
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