import subprocess import sys # audiocraft's pinned torchaudio<2.1 would drag torch back; install without deps. subprocess.run( [sys.executable, "-m", "pip", "install", "--no-deps", "audiocraft==1.3.0", "demucs"], check=True, ) import spaces import gradio as gr import torchaudio from audiocraft.models import AudioGen from audiocraft.data.audio import audio_write model = AudioGen.get_pretrained('facebook/audiogen-medium') @spaces.GPU def infer(prompt, duration): model.set_generation_params(duration=duration) # generate 5 seconds. descriptions = [prompt] wav = model.generate(descriptions) # generates n samples (referring to the number n of prompts in descriptions) for idx, one_wav in enumerate(wav): # Will save under {idx}.wav, with loudness normalization at -14 db LUFS. audio_write(f'{idx}', one_wav.cpu(), model.sample_rate, strategy="loudness", loudness_compressor=True) return "0.wav" css=""" #col-container{ margin: 0 auto; max-width: 640px; } footer { visibility: hidden; } """ with gr.Blocks(css=css) as demo: with gr.Column(elem_id="col-container"): gr.HTML("""
""") prompt_in = gr.Textbox(label="song prompt") with gr.Row(): duration = gr.Slider(label="Duration", minimum=1, maximum=30, step=1, value=5) submit_btn = gr.Button("Generate") audio_o = gr.Audio(label="Generative Song result") submit_btn.click( fn=infer, inputs=[prompt_in, duration], outputs=[audio_o] ) # agent5.com song creator demo.queue().launch()