File size: 1,738 Bytes
c2cbc36 cf85c97 561eda1 c2cbc36 76e60a7 0a88de3 76e60a7 0506203 fa27227 559b897 53fc41f f2a983a 0a88de3 559b897 f2a983a fa27227 bc96f38 f2a983a 561eda1 0a88de3 cf85c97 0a88de3 53fc41f cf85c97 262705a 0a88de3 6904a18 0ead803 eced700 |
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 |
import spaces
import os
import torchaudio
from audiocraft.models import AudioGen
from audiocraft.data.audio import audio_write
import gradio as gr
OUTPUT_DIR = "audio_files"
DEFAULT_DURATION = 5 # Default duration for audio generation in seconds
os.makedirs(OUTPUT_DIR, exist_ok=True)
model = None
@spaces.GPU
def generate_audio(descriptions: str, duration: int = DEFAULT_DURATION):
global model
if model is None:
model = AudioGen.get_pretrained('facebook/audiogen-medium')
if not os.path.exists('audio_files'):
os.makedirs('audio_files')
model.set_generation_params(duration=duration)
wav = model.generate([descriptions])
results = []
print(f"Received call: '{descriptions}' duration={duration}")
for one_wav in wav:
filename = f'{descriptions}.wav'
file_path = os.path.join('audio_files', filename)
audio_write(file_path, one_wav.cpu(), model.sample_rate, strategy="loudness", loudness_compressor=True, add_suffix=False)
print(f"Generated audio for '{descriptions}'")
results.append(file_path)
return results[0]
with gr.Blocks() as demo:
gr.Markdown("# AudioGen Demo")
with gr.Row():
descriptions = gr.Textbox(lines=1, label="Enter a description of the audio")
duration_slider = gr.Slider(minimum=1, maximum=30, value=DEFAULT_DURATION, step=1, label="Duration (seconds)")
with gr.Row():
generate_button = gr.Button("Generate Audio")
with gr.Row():
output = gr.Audio(label="Generated Audio")
generate_button.click(fn=generate_audio, inputs=[descriptions, duration_slider], outputs=output)
demo = demo.queue(max_size=10, status_update_rate="auto")
demo.launch(share=True) |