import gradio as gr import huggingface_hub import os import subprocess import threading # download model huggingface_hub.snapshot_download( repo_id='ariesssxu/vta-ldm-clip4clip-v-large', local_dir='./ckpt' ) def stream_output(pipe): for line in iter(pipe.readline, ''): print(line, end='') def print_directory_contents(path): for root, dirs, files in os.walk(path): level = root.replace(path, '').count(os.sep) indent = ' ' * 4 * (level) print(f"{indent}{os.path.basename(root)}/") subindent = ' ' * 4 * (level + 1) for f in files: print(f"{subindent}{f}") def infer(video_in): # Need to find path to gradio temp vid from video input # path_to_video print(f"VIDEO IN PATH: {video_in}") # Execute the inference command command = ['python', 'inference_from_video.py', '--data_path', video_in] process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, bufsize=1) # Create threads to handle stdout and stderr stdout_thread = threading.Thread(target=stream_output, args=(process.stdout,)) stderr_thread = threading.Thread(target=stream_output, args=(process.stderr,)) # Start the threads stdout_thread.start() stderr_thread.start() # Wait for the process to complete and the threads to finish process.wait() stdout_thread.join() stderr_thread.join() print("Inference script finished with return code:", process.returncode) # Need to find where are the results stored, default should be "./outputs/tmp" # Print the outputs directory contents print_directory_contents('./outputs/tmp') return "done" with gr.Blocks() as demo: with gr.Column(elem_id="col-container"): gr.Markdown("# Video-To-Audio") video_in = gr.Video(label='Video IN') submit_btn = gr.Button("Submit") #output_sound = gr.Audio(label="Audio OUT") output_sound = gr.Textbox(label="Audio OUT") submit_btn.click( fn = infer, inputs = [video_in], outputs = [output_sound], show_api = False ) demo.launch(show_api=False, show_error=True)