Spaces:
Runtime error
Runtime error
File size: 2,633 Bytes
ed0dbc1 d2d09cc 1381c8e d2d09cc 8b4b52c ed0dbc1 3853cf4 ed0dbc1 243993a ed0dbc1 0c24b94 6f03b74 3853cf4 6f03b74 96808c3 eed21cc 9e2fa56 ed0dbc1 eed21cc 3853cf4 eed21cc c9f6306 eed21cc ed0dbc1 eed21cc ed0dbc1 3853cf4 ed0dbc1 eed21cc ed0dbc1 eed21cc ed0dbc1 eed21cc 04736e7 ed0dbc1 3853cf4 eed21cc 3853cf4 eed21cc 8b4b52c 7ab6d17 eed21cc 7ab6d17 eed21cc 3853cf4 |
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 |
import spaces
import gradio as gr
import torchaudio
from audiocraft.models import MusicGen
from audiocraft.data.audio import audio_write
import logging
import os
import uuid
from torch.cuda.amp import autocast
import torch
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logging.info("Iniciando y cargando el modelo preentrenado.")
model = MusicGen.get_pretrained('nateraw/musicgen-songstarter-v0.2')
logging.info("Modelo cargado exitosamente.")
@spaces.GPU(queue=False)
def generar_musica(descripcion, melodia_audio, duracion):
torch.cuda.empty_cache()
torch.cuda.synchronize()
with autocast():
logging.info("Iniciando la generación de música.")
model.set_generation_params(duration=duracion)
if descripcion:
descripcion = [descripcion]
if melodia_audio:
logging.info(f"Cargando la melodía de audio desde: {melodia_audio}")
melodia, sr = torchaudio.load(melodia_audio)
logging.info("Generando música con descripción y melodía.")
wav = model.generate_with_chroma(descripcion, melodia[None], sr)
else:
logging.info("Generando música solo con descripción.")
wav = model.generate(descripcion)
else:
logging.info("Generando música de manera incondicional.")
wav = model.generate_unconditional(1)
filename = f'{str(uuid.uuid4())}.wav'
logging.info(f"Guardando la música generada con el nombre: {filename}")
path = audio_write(filename, wav[0].cpu().to(torch.float32), model.sample_rate, strategy="loudness", loudness_compressor=True)
logging.info(f"La forma del tensor de audio generado: {wav[0].shape}")
logging.info("Música generada y guardada con éxito.")
if not os.path.exists(path):
raise ValueError(f'No se pudo guardar el audio en {path}')
return path
descripcion = gr.Textbox(label="Descripción", placeholder="acústico, guitarra, melodía, trap, re menor, 90 bpm")
melodia_audio = gr.Audio(label="Melodía de audio (opcional)", type="filepath")
duracion = gr.Slider(label="Duración (segundos)", minimum=10, maximum=600, step=10, value=30)
output_path = gr.Audio(label="Música generada", type="filepath")
gr.Interface(
fn=generar_musica,
inputs=[descripcion, melodia_audio, duracion],
outputs=output_path,
title="Generador de Música",
description="Genera música utilizando el modelo MusicGen.",
).queue(concurrency_count=10).launch(server_port=7860, server_name="0.0.0.0") |