Spaces:
Runtime error
Runtime error
File size: 2,283 Bytes
65f6ccd c89bd94 65f6ccd 1df7425 65f6ccd 1df7425 65f6ccd 1df7425 65f6ccd b8e52fb 65f6ccd 1df7425 65f6ccd 1df7425 65f6ccd 08d8fc7 65f6ccd 1df7425 08d8fc7 1df7425 08d8fc7 1df7425 08d8fc7 1df7425 65f6ccd 1df7425 08d8fc7 1df7425 e359ea8 08d8fc7 65f6ccd 1df7425 65f6ccd 1df7425 65f6ccd 1df7425 65f6ccd 1df7425 65f6ccd c89bd94 65f6ccd 0f19188 228dc63 1df7425 65f6ccd |
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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
import gradio as gr
import torch
from audiocraft.models import MusicGen
import uuid
import os
import scipy.io.wavfile as wav
# Cargar el modelo de MusicGen
print("Cargando el modelo MusicGen...")
try:
model = MusicGen.get_pretrained('facebook/musicgen-small')
print("Modelo cargado correctamente.")
except Exception as e:
print(f"Error al cargar el modelo: {e}")
exit(1)
# Función para generar música
def generar_musica(descripcion):
try:
print(f"\nGenerando música con la descripción: {descripcion}")
# Configurar duración de la pista (5 segundos para pruebas más rápidas)
model.set_generation_params(duration=5)
# Generar música
output = model.generate(descriptions=[descripcion])
# Verificar si la salida es válida
if not isinstance(output, list) or len(output) == 0:
print("Error: La salida del modelo es vacía.")
return "Error: No se pudo generar la música."
# Extraer el tensor de audio
audio_tensor = output[0]
# Verificar que el tensor no esté vacío
if not isinstance(audio_tensor, torch.Tensor) or audio_tensor.numel() == 0:
print("Error: El tensor de audio es inválido.")
return "Error: No se pudo generar la música."
# Convertir a NumPy (float32 para evitar distorsiones)
audio_data = audio_tensor.cpu().detach().numpy().astype("float32")
# Normalizar a 16 bits
audio_data = (audio_data * 32767).astype("int16")
# Guardar el archivo de audio
output_path = f"output_{uuid.uuid4().hex}.wav"
wav.write(output_path, 32000, audio_data)
print(f"Música generada y guardada en: {output_path}")
return output_path
except Exception as e:
print(f"Error durante la generación de música: {e}")
return "Error: No se pudo generar la música."
# Crear interfaz con Gradio
demo = gr.Interface(
fn=generar_musica,
inputs=gr.Textbox(label="Descripción de la música"),
outputs=gr.Audio(label="Música Generada"),
title="Generador de Música AI",
description="Introduce una descripción y genera una pista de música."
)
# Ejecutar la aplicación
if __name__ == "__main__":
demo.launch() |