import gradio as gr from processing.slide_parser import parse_slides from agent.planner import explain_slide from utils.translator import translate from speech.tts_engine import create_voice def generate_lecture(ppt_file, language): slides = parse_slides(ppt_file) scripts = [] audio_files = [] total = len(slides) for i, slide in enumerate(slides): explanation = explain_slide(slide["text"]) translated = translate(explanation, language) audio = create_voice(translated, language) scripts.append( f"Slide {slide['index']}:\n{translated}\n" ) audio_files.append(audio) progress = int((i+1)/total*100) return audio_files, "\n".join(scripts), progress with gr.Blocks() as demo: gr.Markdown(""" # 🎓 AI Agentic Slide Lecturer Upload a PowerPoint presentation. The AI will: - Explain each slide - Generate narration - Support Tamil / English """) ppt_input = gr.File(label="Upload PPTX") language = gr.Radio( ["English","Tamil"], value="English", label="Lecture Language" ) run_btn = gr.Button("Generate Lecture") progress = gr.Slider( 0, 100, value=0, label="Progress" ) audio_output = gr.Audio( label="Slide Narration" ) script_output = gr.Textbox( label="Lecture Script", lines=15 ) run_btn.click( generate_lecture, inputs=[ppt_input, language], outputs=[audio_output, script_output, progress] ) demo.launch()