| import gradio as gr | |
| import os | |
| import sys | |
| sys.path.insert(1, '..') | |
| import inference | |
| import torch | |
| device = "cuda" if torch.cuda.is_available() else "cpu" | |
| def generate_background_music(video_path, dataset, use_peft, musicgen_size): | |
| print(f"Start generating background music for {video_path} with model \"{'peft' if use_peft else 'audiocraft'}_{dataset}_{musicgen_size}\"") | |
| new_video_path = inference.generate_background_music( | |
| video_path=video_path, | |
| dataset=dataset, | |
| musicgen_size=musicgen_size, | |
| use_stereo=True, | |
| use_peft=use_peft, | |
| musicgen_temperature=1.0, | |
| musicgen_guidance_scale=3.0, | |
| top_k_sampling=250, | |
| device=device | |
| ) | |
| return gr.Video(new_video_path) | |
| interface = gr.Interface(fn=generate_background_music, | |
| inputs=[ | |
| gr.Video( | |
| label="video input", | |
| min_length=5, | |
| max_length=20, | |
| sources=['upload'], | |
| show_download_button=True, | |
| include_audio=True | |
| ), | |
| gr.Radio(["nature", "symmv"], | |
| label="Video Encoder Version", | |
| value="nature", | |
| info="Choose one of the available Video Encoders."), | |
| gr.Radio([False, True], | |
| label="Use MusicGen Audio Decoder Model trained with PEFT", | |
| value=False, | |
| info="If set to 'True' the MusicGen Audio Decoder models trained with LoRA " | |
| "(Low Rank Adaptation) are used. If set to 'False', the original " | |
| "MusicGen models are used."), | |
| gr.Radio(["small", "medium", "large"], | |
| label="MusicGen Audio Decoder Size", | |
| value="small", | |
| info="Choose the size of the MusicGen audio decoder."), | |
| ], | |
| outputs=[gr.Video(label="video output")], | |
| examples=[ | |
| [os.path.abspath("./videos/originals/n_1.mp4"), "nature", True, "small"], | |
| [os.path.abspath("../../../videos/originals/n_2.mp4"), "nature", True, "small"], | |
| [os.path.abspath("../../../videos/originals/n_3.mp4"), "nature", True, "small"], | |
| [os.path.abspath("../../../videos/originals/n_4.mp4"), "nature", True, "small"], | |
| [os.path.abspath("../../../videos/originals/n_5.mp4"), "nature", True, "small"], | |
| [os.path.abspath("../../../videos/originals/n_6.mp4"), "nature", True, "small"], | |
| [os.path.abspath("../../../videos/originals/n_7.mp4"), "nature", True, "small"], | |
| [os.path.abspath("../../../videos/originals/n_8.mp4"), "nature", True, "small"], | |
| [os.path.abspath("../../../videos/originals/s_1.mp4"), "nature", True, "small"], | |
| [os.path.abspath("../../../videos/originals/s_2.mp4"), "nature", True, "small"], | |
| [os.path.abspath("../../../videos/originals/s_3.mp4"), "nature", True, "small"], | |
| [os.path.abspath("../../../videos/originals/s_4.mp4"), "nature", True, "small"], | |
| [os.path.abspath("../../../videos/originals/s_5.mp4"), "nature", True, "small"], | |
| [os.path.abspath("../../../videos/originals/s_6.mp4"), "nature", True, "small"], | |
| [os.path.abspath("../../../videos/originals/s_7.mp4"), "nature", True, "small"], | |
| [os.path.abspath("../../../videos/originals/s_8.mp4"), "nature", True, "small"], | |
| ], | |
| cache_examples=False | |
| ) | |
| if __name__ == "__main__": | |
| interface.launch( | |
| share=False | |
| ) | |