import os import tempfile import gradio as gr from groq import Groq from hf import hf_transcript, get_whisper_hf_client from logs import configure_logging from remote_llm import summarize from transcribe import parse_audio, get_full_transcript, groq_transcript def gradio_pipeline(video: str, whisper_inference, groq_api_token): groq_client = Groq(api_key=groq_api_token) hf_client = get_whisper_hf_client() print(repr(video)) with tempfile.TemporaryDirectory() as tmpdirname: if video.endswith(".mp4"): parse_audio(video, os.path.join(tmpdirname, "audio.mp3")) elif video.endswith(".mp3"): os.replace(video, os.path.join(tmpdirname, "audio.mp3")) else: gr.Error("Unsupported file type") if whisper_inference == "hf": transcript = get_full_transcript(tmpdirname, hf_client, one_file_transcript_func=hf_transcript) elif whisper_inference == "groq": transcript = get_full_transcript(tmpdirname, groq_client, one_file_transcript_func=groq_transcript) return summarize(transcript, groq_client) if __name__ == "__main__": configure_logging() demo = gr.Interface( fn=gradio_pipeline, title="Video summarizer", inputs=[ gr.File(file_types=[".mp4", ".mp3"], label="Video or audio"), gr.Radio(choices=["groq", "hf"], value="hf", label="Whisper inference"), gr.Text(max_lines=1, type="password", placeholder="Enter your groq API key", label="groq API key") ], outputs=gr.Markdown( value="# Here will be the summary...", label="Summary", show_copy_button=True, ), examples=[ ["examples/mipt.mp4"], ["examples/audio.mp3"], ], cache_examples=False, allow_flagging="never") demo.launch()