import gradio as gr import os import shutil import spaces import sys # we will clone the repo and install the dependencies # NOTE: Still fixing bugs, not release, do not try :) ! # os.system('pip install -r qa_mdt/requirements.txt') # os.system('pip install xformers==0.0.26.post1') # os.system('pip install torchlibrosa==0.0.9 librosa==0.9.2') # os.system('pip install -q pytorch_lightning==2.1.3 torchlibrosa==0.0.9 librosa==0.9.2 ftfy==6.1.1 braceexpand') # os.system('pip install torch==2.3.0+cu121 torchvision==0.18.0+cu121 torchaudio==2.3.0 --index-url https://download.pytorch.org/whl/cu121') # only then import the necessary modules from qa_mdt from qa_mdt.pipeline import MOSDiffusionPipeline pipe = MOSDiffusionPipeline() # this runs the pipeline with user input and saves the output as 'awesome.wav' @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): # return generated_file_path # else: # return "Error: Failed to generate the waveform." if os.path.exists(generated_file_path): waveform_video = gr.make_waveform(audio=generated_file_path, bg_color="#000000", bars_color="#00FF00", bar_count=100, bar_width=1.5, 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) - [HuggingFace](https://huggingface.co/jadechoghari/qa_mdt) [@jadechoghari](https://github.com/jadechoghari) 🤗. Note: The music generation process will take 1-2 minutes 🎶 --- """ # gradio interface iface = gr.Interface( fn=generate_waveform, inputs=gr.Textbox(lines=2, placeholder="Enter a music description here..."), # outputs=gr.Audio(label="Download the Music 🎼"), 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."] ], cache_examples=True ) # Launch the Gradio app if __name__ == "__main__": iface.launch()