Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -9,6 +9,8 @@ LICENSE file in the root directory of this source tree.
|
|
| 9 |
from tempfile import NamedTemporaryFile
|
| 10 |
import torch
|
| 11 |
import gradio as gr
|
|
|
|
|
|
|
| 12 |
from audiocraft.models import MusicGen
|
| 13 |
|
| 14 |
from audiocraft.data.audio import audio_write
|
|
@@ -16,16 +18,20 @@ from audiocraft.data.audio import audio_write
|
|
| 16 |
|
| 17 |
MODEL = None
|
| 18 |
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 22 |
def load_model(version):
|
| 23 |
print("Loading model", version)
|
| 24 |
return MusicGen.get_pretrained(version)
|
| 25 |
|
| 26 |
|
| 27 |
def predict(uploaded_image, melody, duration):
|
| 28 |
-
text =
|
| 29 |
global MODEL
|
| 30 |
topk = int(250)
|
| 31 |
if MODEL is None or MODEL.name != "melody":
|
|
@@ -67,9 +73,9 @@ def predict(uploaded_image, melody, duration):
|
|
| 67 |
with gr.Blocks() as demo:
|
| 68 |
gr.Markdown(
|
| 69 |
"""
|
| 70 |
-
#
|
| 71 |
|
| 72 |
-
This is the demo by @fffiloni for
|
| 73 |
presented at: ["Simple and Controllable Music Generation"](https://huggingface.co/papers/2306.05284), using Clip Interrogator to get an image description as init text.
|
| 74 |
<br/>
|
| 75 |
<a href="https://huggingface.co/spaces/musicgen/MusicGen?duplicate=true" style="display: inline-block;margin-top: .5em;margin-right: .25em;" target="_blank">
|
|
@@ -79,6 +85,13 @@ with gr.Blocks() as demo:
|
|
| 79 |
)
|
| 80 |
with gr.Row():
|
| 81 |
with gr.Column():
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 82 |
with gr.Row():
|
| 83 |
uploaded_image = gr.Image(label="Input Image", interactive=True, source="upload", type="filepath")
|
| 84 |
melody = gr.Audio(source="upload", type="numpy", label="Melody Condition (optional)", interactive=True)
|
|
@@ -95,6 +108,7 @@ with gr.Blocks() as demo:
|
|
| 95 |
# cfg_coef = gr.Number(label="Classifier Free Guidance", value=3.0, interactive=True)
|
| 96 |
with gr.Column():
|
| 97 |
output = gr.Audio(label="Generated Music")
|
|
|
|
| 98 |
submit.click(predict, inputs=[uploaded_image, melody, duration], outputs=[output])
|
| 99 |
|
| 100 |
gr.Markdown(
|
|
|
|
| 9 |
from tempfile import NamedTemporaryFile
|
| 10 |
import torch
|
| 11 |
import gradio as gr
|
| 12 |
+
from scipy.io.wavfile import write
|
| 13 |
+
|
| 14 |
from audiocraft.models import MusicGen
|
| 15 |
|
| 16 |
from audiocraft.data.audio import audio_write
|
|
|
|
| 18 |
|
| 19 |
MODEL = None
|
| 20 |
|
| 21 |
+
def split_process(audio):
|
| 22 |
+
os.makedirs("out", exist_ok=True)
|
| 23 |
+
write('test.wav', audio[0], audio[1])
|
| 24 |
+
os.system("python3 -m demucs.separate -n mdx_extra_q -d cpu test.wav -o out")
|
| 25 |
+
return "./out/mdx_extra_q/test/vocals.wav","./out/mdx_extra_q/test/bass.wav",\
|
| 26 |
+
"./out/mdx_extra_q/test/drums.wav","./out/mdx_extra_q/test/other.wav"
|
| 27 |
+
|
| 28 |
def load_model(version):
|
| 29 |
print("Loading model", version)
|
| 30 |
return MusicGen.get_pretrained(version)
|
| 31 |
|
| 32 |
|
| 33 |
def predict(uploaded_image, melody, duration):
|
| 34 |
+
text = #à remplacer
|
| 35 |
global MODEL
|
| 36 |
topk = int(250)
|
| 37 |
if MODEL is None or MODEL.name != "melody":
|
|
|
|
| 73 |
with gr.Blocks() as demo:
|
| 74 |
gr.Markdown(
|
| 75 |
"""
|
| 76 |
+
# Split to MusicGen
|
| 77 |
|
| 78 |
+
This is the demo by @fffiloni for Split to [MusicGen](https://github.com/facebookresearch/audiocraft), a simple and controllable model for music generation
|
| 79 |
presented at: ["Simple and Controllable Music Generation"](https://huggingface.co/papers/2306.05284), using Clip Interrogator to get an image description as init text.
|
| 80 |
<br/>
|
| 81 |
<a href="https://huggingface.co/spaces/musicgen/MusicGen?duplicate=true" style="display: inline-block;margin-top: .5em;margin-right: .25em;" target="_blank">
|
|
|
|
| 85 |
)
|
| 86 |
with gr.Row():
|
| 87 |
with gr.Column():
|
| 88 |
+
with gr.Row():
|
| 89 |
+
uploaded_sound = gr.Audio(type="numpy", label="Input", source="microphone")
|
| 90 |
+
load_sound_btn = gr.Button('Load sound')
|
| 91 |
+
split_vocals = gr.Audio(type="filepath", label="Vocals")
|
| 92 |
+
#split_bass = gr.Audio(type="filepath", label="Bass")
|
| 93 |
+
#split_drums = gr.Audio(type="filepath", label="Drums")
|
| 94 |
+
#split_others = gr.Audio(type="filepath", label="Other")
|
| 95 |
with gr.Row():
|
| 96 |
uploaded_image = gr.Image(label="Input Image", interactive=True, source="upload", type="filepath")
|
| 97 |
melody = gr.Audio(source="upload", type="numpy", label="Melody Condition (optional)", interactive=True)
|
|
|
|
| 108 |
# cfg_coef = gr.Number(label="Classifier Free Guidance", value=3.0, interactive=True)
|
| 109 |
with gr.Column():
|
| 110 |
output = gr.Audio(label="Generated Music")
|
| 111 |
+
load_sound_btn.click(split_process, inputs=[uploaded_sound], outputs=[split_vocals])
|
| 112 |
submit.click(predict, inputs=[uploaded_image, melody, duration], outputs=[output])
|
| 113 |
|
| 114 |
gr.Markdown(
|