File size: 1,517 Bytes
cc64d3e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import torchaudio
from audiocraft.models import AudioGen
from audiocraft.data.audio import audio_write
import os
import gradio as gr

def generate_audio(descriptions):
    if not os.path.exists('audio_files'):
        os.makedirs('audio_files')
    model = AudioGen.get_pretrained('facebook/audiogen-medium')
    model.set_generation_params(duration=5)  # generate 5 seconds.
    wav = model.generate([descriptions])  # generates 3 samples.
    results = []

    for idx, one_wav in enumerate(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]

def ui_full():
    with gr. Blocks() as interface:
        gr.Markdown(
            """
            # AudioGen Demo
            presented at: [Simple and Controllable Music Generation](https://huggingface.co/)
            """
        )
        with gr.Row():            
            descriptions = gr.Textbox(lines=2, label="Enter descriptions of the audio to generate")
        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, outputs=[output])
        interface.queue().launch()
    
ui_full()