import gradio as gr from processing import process_input from visualization import update_visibility_and_charts def create_gradio_interface(): with gr.Blocks() as demo: gr.Markdown("# Conversation Analysis") with gr.Row(): input_file = gr.File(label="Upload File") submit_button = gr.Button("Analyze") status_output = gr.Textbox(label="Status") exec_time_output = gr.Textbox(label="Execution Time") lang_output = gr.Textbox(label="Detected Language") transcription_output = gr.Textbox(label="Transcription", lines=10) speaker_outputs = [] for speaker in range(3): with gr.Group(visible=True, label=f"Speaker {speaker + 1}"): for _ in range(3): # 3 analysis types speaker_outputs.extend([ gr.Plot(visible=False), gr.Plot(visible=False), gr.Textbox(visible=False) ]) def process_and_update(file): status, exec_time, lang, attachments, bigfive, personalities, transcription = process_input(file) return update_visibility_and_charts(status, exec_time, lang, transcription, attachments, bigfive, personalities) submit_button.click( process_and_update, inputs=[input_file], outputs=[status_output, exec_time_output, lang_output, transcription_output] + speaker_outputs ) return demo # The main execution of the script if __name__ == "__main__": demo = create_gradio_interface() demo.launch()