File size: 1,249 Bytes
f475ceb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import torch
import torchaudio
from einops import rearrange
import gradio as gr
from stable_audio_tools import get_pretrained_model
from stable_audio_tools.inference.generation import generate_diffusion_cond

device = "cuda" if torch.cuda.is_available() else "cpu"
model, config = get_pretrained_model("stabilityai/stable-audio-open-small")
model = model.to(device)
sample_rate = config["sample_rate"]
sample_size = config["sample_size"]

def generate_audio(prompt):
    conditioning = [{"prompt": prompt, "seconds_total": 11}]
    with torch.no_grad():
        output = generate_diffusion_cond(
            model,
            steps=8,
            conditioning=conditioning,
            sample_size=sample_size,
            device=device
        )
    output = rearrange(output, "b d n -> d (b n)")
    output = output.to(torch.float32).div(torch.max(torch.abs(output))).clamp(-1, 1).mul(32767).to(torch.int16).cpu()
    path = "output.wav"
    torchaudio.save(path, output, sample_rate)
    return path

ui = gr.Interface(fn=generate_audio, 
                  inputs=gr.Textbox(label="Prompt (e.g. 128 BPM tech house drum loop)"), 
                  outputs=gr.Audio(type="filepath"),
                  title="Stable Audio Generator")

ui.launch()