import gradio as gr import replicate import os REPLICATE_API_TOKEN = os.getenv("REPLICATE_API_TOKEN") def process_audio(audio): if audio is None: return "No audio file uploaded." output = replicate.run( "victor-upmeet/whisperx:84d2ad2d6194fe98a17d2b60bef1c7f910c46b2f6fd38996ca457afd9c8abfcb", input={"audio_file": open(audio, "rb")}, api_token=REPLICATE_API_TOKEN ) segments = output.get("segments") if isinstance(output, dict) else output script = " ".join(seg["text"] for seg in segments) if segments else output.get("text", "No transcription found.") return script with gr.Blocks(theme="monochrome") as demo: gr.Markdown("# AIML430 Lecture Transcription Tool") gr.Markdown("Upload an audio file to begin.") audio_input = gr.Audio(type="filepath", sources=["upload"], label="Audio File") raw_text_output = gr.Textbox( label="Raw Text Output", show_copy_button=True, lines=10 ) audio_input.change( fn=process_audio, inputs=audio_input, outputs=raw_text_output ) demo.launch()