|
import gradio as gr |
|
from utils import process_video |
|
|
|
|
|
language_map = { |
|
"English": None, |
|
"Hindi": "Helsinki-NLP/opus-mt-en-hi", |
|
"Spanish": "Helsinki-NLP/opus-mt-en-es", |
|
"French": "Helsinki-NLP/opus-mt-en-fr", |
|
"German": "Helsinki-NLP/opus-mt-en-de", |
|
"Telugu": "facebook/nllb-200-distilled-600M", |
|
"Portuguese": "Helsinki-NLP/opus-mt-en-pt", |
|
"Russian": "Helsinki-NLP/opus-mt-en-ru", |
|
"Chinese": "Helsinki-NLP/opus-mt-en-zh", |
|
"Arabic": "Helsinki-NLP/opus-mt-en-ar", |
|
"Japanese": "Helsinki-NLP/opus-mt-en-jap" |
|
} |
|
|
|
def generate_subtitles(video_file, language): |
|
try: |
|
srt_path = process_video(video_file, language) |
|
return srt_path |
|
except Exception as e: |
|
return f"Error: {str(e)}" |
|
|
|
|
|
with gr.Blocks() as demo: |
|
gr.Markdown("# AI-Powered Video Subtitling") |
|
gr.Markdown("Upload a video and select a language to generate subtitles.") |
|
|
|
with gr.Row(): |
|
video_input = gr.Video(label="Upload Video File", format="mp4") |
|
language_dropdown = gr.Dropdown( |
|
choices=list(language_map.keys()), |
|
label="Select Subtitle Language", |
|
value="English" |
|
) |
|
|
|
generate_button = gr.Button("Generate Subtitles") |
|
output_srt = gr.File(label="Download Subtitles") |
|
|
|
generate_button.click( |
|
generate_subtitles, |
|
inputs=[video_input, language_dropdown], |
|
outputs=output_srt |
|
) |
|
|
|
demo.launch() |