Sergiosamyy commited on
Commit
08d8fc7
·
verified ·
1 Parent(s): f8d390e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -25
app.py CHANGED
@@ -4,53 +4,53 @@ from audiocraft.models import MusicGen
4
  import uuid
5
  import os
6
  import scipy.io.wavfile
 
7
 
8
  # Cargar el modelo
9
  print("Cargando el modelo MusicGen...")
10
- model = MusicGen.get_pretrained('facebook/
11
- 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
18
- descripción: {descripcion}")
19
 
20
- # Establecer parámetros de
21
- generación
22
- model.set_generation_params(duration=10)
23
- # Asegurar duración de 10 segundos
24
 
25
  # Generar música
26
- output =
27
- model.generate(descriptions=[descripcion
28
- ])
29
 
30
- if not isinstance(output,
31
- torch.Tensor) or output.numel() == 0:
32
- print("Error: La salida del
33
- modelo es vacía o inválida.")
34
- return "Error: No se pudo
35
- generar la música."
 
 
 
36
 
37
  # Convertir el tensor a NumPy
38
- audio_data =
39
- output[0].cpu().detach().numpy()
 
 
 
40
 
41
- # Normalizar audio a 16 bits
42
- audio_data = (audio_data *
43
- 32767).astype("int16")
44
 
45
- # Guardar el archivo de audio correctamente
46
  output_path = f"output_{uuid.uuid4().hex}.wav"
47
- scipy.io.wavfile.write(output_path, 32000, audio_data)
48
 
49
  print(f"Música generada y guardada en {output_path}")
50
  return output_path
51
  except Exception as e:
52
  print(f"Error al generar música: {e}")
53
- return "Error: No se pudo generar la música."
54
 
55
  # Crear interfaz con Gradio
56
  demo = gr.Interface(
 
4
  import uuid
5
  import os
6
  import scipy.io.wavfile
7
+ import numpy as np
8
 
9
  # Cargar el modelo
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=10) # Asegurar duración de 10 segundos
 
 
21
 
22
  # Generar música
23
+ output = model.generate(descriptions=[descripcion])
 
 
24
 
25
+ if not output or not isinstance(output, list) or len(output) == 0:
26
+ print("Error: La salida del modelo es vacía o inválida.")
27
+ return None
28
+
29
+ audio_tensor = output[0] # Extraer el primer tensor de la lista
30
+
31
+ if not isinstance(audio_tensor, torch.Tensor) or audio_tensor.numel() == 0:
32
+ print("Error: El tensor de audio es inválido o vacío.")
33
+ return None
34
 
35
  # Convertir el tensor a NumPy
36
+ audio_data = audio_tensor.cpu().detach().numpy()
37
+
38
+ # Verificar la forma del tensor para asegurar que tiene la dimensión correcta
39
+ if len(audio_data.shape) == 1: # Asegurar que tiene al menos 2D
40
+ audio_data = np.expand_dims(audio_data, axis=0)
41
 
42
+ # Normalizar audio a 16 bits PCM
43
+ audio_data = (audio_data * 32767).astype(np.int16)
 
44
 
45
+ # Guardar el archivo de audio
46
  output_path = f"output_{uuid.uuid4().hex}.wav"
47
+ scipy.io.wavfile.write(output_path, 32000, audio_data[0]) # Extraer el primer canal si es estéreo
48
 
49
  print(f"Música generada y guardada en {output_path}")
50
  return output_path
51
  except Exception as e:
52
  print(f"Error al generar música: {e}")
53
+ return None
54
 
55
  # Crear interfaz con Gradio
56
  demo = gr.Interface(