Spaces:
Runtime error
Runtime error
# Commented out IPython magic to ensure Python compatibility. | |
# %%capture | |
# ! pip install git+https://github.com/facebookresearch/audiocraft | |
# ! pip install torchvision==0.16.0 | |
# ! pip install hf-transfer | |
# ! pip install gradio | |
import os | |
import gradio as gr | |
import torchaudio | |
from audiocraft.models import MusicGen | |
from audiocraft.data.audio import audio_write | |
from huggingface_hub import hf_hub_download | |
os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "1" | |
model = MusicGen.get_pretrained('nateraw/musicgen-songstarter-v0.2') | |
def generate_music(description, melody_path): | |
model.set_generation_params(duration=5) | |
wav = model.generate([description]) | |
for idx, one_wav in enumerate(wav): | |
audio_write(f'{idx}', one_wav.cpu(), model.sample_rate, strategy="loudness", loudness_compressor=True) | |
return f'{idx}.wav' | |
def remix_music(description, melody_path): | |
melody, sr = torchaudio.load(melody_path) | |
wav = model.generate_with_chroma([description], melody[None].expand(1, -1, -1), sr) | |
for idx, one_wav in enumerate(wav): | |
audio_write(f'{idx}_bach', one_wav.cpu(), model.sample_rate, strategy="loudness", loudness_compressor=True) | |
return f'{idx}_bach.wav' | |
examples = [ | |
["acoustic, guitar, melody, trap, d minor, 90 bpm", None], | |
["piano, jazz, upbeat, c major, 120 bpm"], | |
["cinematic, orchestra, epic", None] | |
] | |
demo = gr.Interface( | |
fn=lambda description, melody_path: remix_music(description, melody_path) if melody_path else generate_music(description, None), | |
inputs=[ | |
gr.Textbox(label="Enter Description"), | |
gr.File(label="Upload Melody") | |
], | |
outputs=gr.Audio(label="Generated Music"), | |
examples=examples, | |
title="Music Generation SongStarter App" | |
) | |
demo.launch(debug=True) |