import pandas as pd import gradio as gr # Load Parquet data df = pd.read_parquet('audio_and_text.parquet') # Define function to fetch audio and text by number or index def fetch_record(index): index = int(index) if 0 <= index < len(df): record = df.iloc[index] number = record['number'] diacritics_audio = (record['with_diacritics_audio'], "audio.wav") no_diacritics_audio = (record['no_diacritics_audio'], "audio.wav") diacritics_text = record['diacritics_text'] no_diacritics_text = record['no_diacritics_text'] return (f"Record Number: {number}", diacritics_audio, diacritics_text, no_diacritics_audio, no_diacritics_text) else: return ("Index out of range.", None, "", None, "") # Gradio UI setup with gr.Blocks() as demo: gr.Markdown("## 📚 Arabic Audio & Text Browser") index_input = gr.Number(label="Enter Record Index", value=0, precision=0) btn_fetch = gr.Button("Fetch Record") record_label = gr.Label(label="Record Info") with gr.Row(): with gr.Column(): diacritics_audio_player = gr.Audio(label="Audio (With Diacritics)") diacritics_text_output = gr.Textbox(label="Text (With Diacritics)", lines=5) with gr.Column(): no_diacritics_audio_player = gr.Audio(label="Audio (No Diacritics)") no_diacritics_text_output = gr.Textbox(label="Text (No Diacritics)", lines=5) btn_fetch.click(fn=fetch_record, inputs=index_input, outputs=[record_label, diacritics_audio_player, diacritics_text_output, no_diacritics_audio_player, no_diacritics_text_output]) # Launch the app demo.launch()