import gradio as gr import openai from langdetect import detect from transformers import pipeline import os openai.api_key = os.getenv("OPENAI_API_KEY") # Set this as a secret in your Space settings summarizer = pipeline("summarization", model="facebook/bart-large-cnn") def process_audio(audio_path): if not audio_path or not isinstance(audio_path, str): return "No audio file provided.", "", "", "" try: # Send audio to OpenAI Whisper API with open(audio_path, "rb") as audio_file: transcript_response = openai.audio.transcriptions.create( model="whisper-1", file=audio_file, response_format="text" ) transcript = transcript_response except Exception as e: return f"Error in transcription: {e}", "", "", "" try: detected_lang = detect(transcript) except Exception: detected_lang = "unknown" lang_map = {'en': 'English', 'hi': 'Hindi', 'ta': 'Tamil'} lang_text = lang_map.get(detected_lang, detected_lang) transcript_en = transcript if detected_lang != "en": try: # Re-send with task=translate for translation to English with open(audio_path, "rb") as audio_file: translation_response = openai.audio.translations.create( model="whisper-1", file=audio_file, response_format="text" ) transcript_en = translation_response except Exception as e: transcript_en = f"Error translating: {e}" try: summary = summarizer(transcript_en, max_length=100, min_length=30, do_sample=False) summary_text = summary[0]["summary_text"] except Exception as e: summary_text = f"Error summarizing: {e}" return lang_text, transcript, transcript_en, summary_text iface = gr.Interface( fn=process_audio, inputs=gr.Audio(type="filepath", label="Upload MP3/WAV Audio"), outputs=[ gr.Textbox(label="Detected Language"), gr.Textbox(label="Original Transcript"), gr.Textbox(label="English Transcript (if translated)"), gr.Textbox(label="Summary"), ], title="Audio Transcript, Translation & Summary (via OpenAI Whisper API)", description="Upload your audio file (MP3/WAV). This app transcribes via OpenAI Whisper API, detects language, translates to English if needed, and summarizes." ) iface.launch()