|
import gradio as gr |
|
import os |
|
import shutil |
|
import spaces |
|
import sys |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
from qa_mdt.pipeline import MOSDiffusionPipeline |
|
|
|
|
|
pipe = MOSDiffusionPipeline() |
|
|
|
|
|
@spaces.GPU(duration=120) |
|
def generate_waveform(description): |
|
high_quality_description = "high quality " + description |
|
pipe(high_quality_description) |
|
|
|
generated_file_path = "./awesome.wav" |
|
|
|
|
|
|
|
|
|
|
|
if os.path.exists(generated_file_path): |
|
waveform_video = gr.make_waveform(audio=generated_file_path, fg_alpha=0.7, bg_color="#09090a", bars_color="#00FF00", bar_count=100, bar_width=0.4, animate=True) |
|
return waveform_video, generated_file_path |
|
else: |
|
return "Error: Failed to generate the waveform." |
|
|
|
|
|
intro = """ |
|
# πΆ OpenMusic: Diffusion That Plays Music π§ πΉ |
|
|
|
Welcome to **OpenMusic**, a next-gen diffusion model designed to generate high-quality music audio from text descriptions! |
|
|
|
Simply enter a few words describing the vibe, and watch as the model generates a unique track for your input. |
|
|
|
Powered by the QA-MDT model, based on the new research paper linked below. |
|
|
|
- [GitHub Repo](https://github.com/ivcylc/qa-mdt) by [@changli](https://github.com/ivcylc) π. |
|
- [Paper](https://arxiv.org/pdf/2405.15863) & [Paper Demo](https://qa-mdt.github.io/ ) |
|
- [HuggingFace](https://huggingface.co/jadechoghari/qa_mdt) [@jadechoghari](https://github.com/jadechoghari) π€. |
|
|
|
Note: The music generation process will take 1-2 minutes πΆ |
|
--- |
|
|
|
""" |
|
|
|
|
|
iface = gr.Interface( |
|
fn=generate_waveform, |
|
inputs=gr.Textbox(lines=2, placeholder="Enter a music description here..."), |
|
|
|
outputs=[gr.Video(label="Watch the Waveform πΌ"), gr.Audio(label="Download the Music πΆ")], |
|
description=intro, |
|
examples=[ |
|
["πΉ A modern synthesizer creating futuristic soundscapes."], |
|
["πΈ Acoustic ballad with heartfelt lyrics and soft piano."], |
|
["π A deep bassline mixed with upbeat electronic synths, creating a club anthem."], |
|
["π» Melodic orchestral composition with a build-up of strings and percussion, evoking cinematic tension."], |
|
["π Sad song of two lovers who never talk again, starting intensely with emotions and then gradually fading down into silence."] |
|
], |
|
cache_examples="lazy", |
|
|
|
) |
|
|
|
|
|
if __name__ == "__main__": |
|
iface.launch() |
|
|