Spaces:
Paused
Paused
| import gradio as gr | |
| import torch | |
| import torchaudio | |
| import uuid | |
| import tempfile | |
| from audiocraft.models import MusicGen | |
| device = "cuda" if torch.cuda.is_available() else "cpu" | |
| # Load MusicGen small | |
| musicgen_model = MusicGen.get_pretrained('facebook/musicgen-small').to(device) | |
| def generate_music(prompt): | |
| if musicgen_model: | |
| try: | |
| output = musicgen_model.generate([prompt]) | |
| with tempfile.NamedTemporaryFile(suffix=f"_music_{uuid.uuid4()[:8]}.wav", delete=False) as tmp: | |
| music_path = tmp.name | |
| torchaudio.save(music_path, output[0].cpu(), 32000) | |
| torch.cuda.empty_cache() | |
| return music_path, None | |
| except Exception as e: | |
| return None, f"Music generation failed: {str(e)}" | |
| return None, "Music generation model not available." | |
| # UI | |
| custom_css = """ | |
| body { | |
| background-color: white; | |
| color: black; | |
| font-family: 'Helvetica Neue', sans-serif; | |
| } | |
| h1, h2, label, p { | |
| color: black; | |
| } | |
| """ | |
| with gr.Blocks(css=custom_css) as app: | |
| gr.Markdown("# **VZN.AI Music**\n##### _Create futuristic soundscapes_") | |
| music_prompt = gr.Textbox(label="Describe the Music...") | |
| music_output = gr.Audio(label="Generated Music") | |
| music_error = gr.Textbox(label="Status", interactive=False) | |
| music_button = gr.Button("Generate Music") | |
| music_button.click(generate_music, inputs=music_prompt, outputs=[music_output, music_error]) | |
| app.launch(server_name="0.0.0.0", server_port=7860, share=True) |