import json import gradio as gr import numpy as np import matplotlib.pyplot as plt from manipulate_model.utils import get_config_and_model, infere manpulate_config, manipulate_model = get_config_and_model() manipulate_model.eval() def process(filepath): global manipulate_model global manpulate_config out = infere(manipulate_model, filepath, manpulate_config) out = out.tolist() #plt.clf() #plt.figure() #plt.plot(out) #out_masked = np.ma.masked_less_equal(out, 0.4) #plt.plot(out_masked, 'r', linewidth=2) #return str(out), plt output_json = {} output_json["decision_scores"] = str(out) response_text = json.dumps(output_json, indent=4) return response_text demo = gr.Blocks() file_proc = gr.Interface( fn=process, inputs=[ #gr.Audio(sources=["microphone", "upload"], type="filepath", show_download_button=True, label="Speech file (<30s)", max_length=30), gr.Audio(sources=["upload"], label="Speech file (<30s)", type="filepath") ], outputs="text", #gr.Plot(label="Frame wise prediction") title="Find the manipulation: Analyze 'Real' or 'Manipulated' audio.", description=( "Analyze, detect and localize manipulation in an audio with a click of a button. Upload a .wav or .flac file." ), examples=[ ["./samples/fake_audio.wav"], ["./samples/real_audio.wav"] ], cache_examples=False, allow_flagging="never", ) with demo: gr.TabbedInterface([file_proc], ["Find Audio Manipulation"]) demo.queue(max_size=10) demo.launch(share=True)