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 )