subtitle-india / app.py
Realmeas's picture
Update app.py
5c6bee1 verified
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()