import gradio as gr from run import get_model, detect_video from FakeVD.code_test import predict import os os.environ['GRADIO_TEMP_DIR'] = "../cache/" def prepare_env(): import subprocess # 定义要运行的命令 command = [ 'pip', 'install', 'modelscope[audio]', '-f', 'https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html' ] # 运行命令 try: # 使用subprocess.run来执行命令 result = subprocess.run(command, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) # 打印命令的输出 print("STDOUT:", result.stdout.decode()) print("STDERR:", result.stderr.decode()) except subprocess.CalledProcessError as e: # 捕获并打印命令执行过程中的错误 print("An error occurred while executing the command:", e) prepare_env() model = get_model() FakeVD_model = predict.get_model() def greet(video): print(video, type(video)) generated_pred = detect_video(video_path=video, model=model) context_pred = predict.main(FakeVD_model, video) generated_output = f"Fake: {generated_pred*100:.2f}%" if generated_pred > 0.5 else f"Real: {(1-generated_pred)*100:.2f}%" context_output = f"Fake: {context_pred*100:.2f}%" if context_pred > 0.5 else f"Real: {(1-context_pred)*100:.2f}%" print(generated_output, '\n', context_output) return generated_output, context_output with gr.Blocks() as demo: gr.Markdown("# Fake Video Detector") with gr.Tabs(): with gr.TabItem("Video Detect"): with gr.Column(): video_input = gr.Video(height=330) video_button = gr.Button("detect") detect_output = gr.Textbox(label="AI detect result") context_output = gr.Textbox(label="Context detect result") video_button.click(greet, inputs=video_input, outputs=[detect_output, context_output]) demo.launch()