| import subprocess |
| import sys |
|
|
| |
| 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) |
| descriptions = [prompt] |
| wav = model.generate(descriptions) |
|
|
| for idx, one_wav in enumerate(wav): |
| |
| 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(""" |
| <h2 style="text-align: left;"> |
| 🎵 Generative Songs |
| </h2> |
| <p style="text-align: center;"> |
| </p> |
| """) |
|
|
| 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] |
| ) |
|
|
| |
|
|
| demo.queue().launch() |