import gradio as gr from utilities.setup import get_files # import spaces #@spaces.GPU def process_meeting(audio_input, num_speakers, speaker_names): if 1 < num_speakers < 6: answer = "Completed Loading Data", "fl" else: answer = "Number of speakers out of range", "fl" return answer def main(conf): with gr.Blocks(theme=gr.themes.Soft(text_size="lg")) as demo: with gr.TabItem(conf["layout"]["page_names"][0]): gr.Markdown("🎤 Non-Video Meeting Transcription and Speaker Diarization") gr.Markdown("![](file/microphone_pen_and_paper.jpeg)") gr.Markdown(get_files.load_markdown_file(conf["layout"]["about"])) with gr.TabItem(conf["layout"]["page_names"][1]): audio_input = gr.Audio(type="filepath", label="Upload Audio File") num_speakers = gr.Number(label="Number of Speakers", value=2, precision=0, minimum=2, maximum=5) speaker_names = gr.Dataframe( label="Names and Additional Info", headers=["Name", "Supporting Details"], datatype=["str", "str"], row_count=(5,"dynamic"), col_count=(2, "fixed"), ) process_button = gr.Button("Process") diarization_output = gr.Textbox(label="Diarization Output") label_file_link = gr.File(label="Download DAW Labels") process_button.click( fn=process_meeting, inputs=[audio_input, num_speakers, speaker_names], outputs=[diarization_output, label_file_link] ) demo.launch() if __name__ == "__main__": conf = get_files.json_cfg() main(conf)