import gradio as gr import whisper from googletrans import Translator import srt import datetime import tempfile import os # Load model once model = whisper.load_model("base") translator = Translator() def transcribe(audio): try: # Check if audio file exists if audio is None: return "❌ No audio uploaded!", None # Transcribe audio result = model.transcribe(audio) segments = result.get("segments", []) subtitles = [] full_text = "" for i, seg in enumerate(segments): start = datetime.timedelta(seconds=float(seg["start"])) end = datetime.timedelta(seconds=float(seg["end"])) text = seg["text"].strip() # Translate Hindi → Hinglish (pronunciation) translated = translator.translate(text, src='hi', dest='en').pronunciation if not translated: translated = translator.translate(text, src='hi', dest='en').text subtitles.append(srt.Subtitle(index=i+1, start=start, end=end, content=translated)) full_text += translated + " " # Create SRT file srt_content = srt.compose(subtitles) # Temporary file save srt_path = os.path.join(tempfile.gettempdir(), "output.srt") with open(srt_path, "w", encoding="utf-8") as f: f.write(srt_content) return full_text.strip(), srt_path except Exception as e: return f"❌ Runtime Error: {str(e)}", None iface = gr.Interface( fn=transcribe, inputs=gr.Audio(source="upload", type="filepath", label="🎤 Upload Hindi Audio"), outputs=[ gr.Textbox(label="📝 Hinglish Subtitles"), gr.File(label="⬇️ Download SRT File") ], title="Hinglish Subtitle Generator 🇮🇳", description="Upload Hindi speech audio — get Hinglish subtitles (.srt) instantly!" ) iface.launch()