File size: 968 Bytes
360283e
0c01695
62febe7
360283e
 
0c01695
360283e
0c01695
360283e
 
 
 
 
0c01695
360283e
 
e726d1c
360283e
 
 
62febe7
 
360283e
0c01695
360283e
 
0c01695
62febe7
360283e
0c01695
 
62febe7
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
import torchaudio
import gradio as gr
import torch
from audiocraft.models import MusicGen
from audiocraft.data.audio import audio_write

model = MusicGen.get_pretrained('melody', device='cuda' if torch.cuda.is_available() else 'cpu')

def generate(prompt, melody_path):
    wav, sr = torchaudio.load(melody_path)
    wav = torchaudio.functional.resample(wav, sr, 32000)
    wav = wav.mean(dim=0).unsqueeze(0)  # mono
    wav = wav[:, :32000 * 30]  # clip to 30s

    model.set_generation_params(duration=30)
    output = model.generate_with_chroma([prompt], wav)

    output_path = "output_gen"
    audio_write(output_path, output[0].cpu(), 32000, format="wav")
    return f"{output_path}.wav"

demo = gr.Interface(
    fn=generate,
    inputs=[
        gr.Textbox(label="Prompt"),
        gr.Audio(source="upload", type="filepath", label="Melody Input")
    ],
    outputs=gr.Audio(label="Generated Track"),
    title="🎡 MusicGen-Melody Generator"
)

demo.launch()