|
from transformers import M2M100ForConditionalGeneration, M2M100Tokenizer, pipeline |
|
import gradio as gr |
|
|
|
|
|
model_name = "facebook/m2m100_418M" |
|
tokenizer = M2M100Tokenizer.from_pretrained(model_name) |
|
model = M2M100ForConditionalGeneration.from_pretrained(model_name) |
|
|
|
|
|
text_generator = pipeline("text-generation", model="gpt2") |
|
|
|
def translate_tamil_to_english(text): |
|
if not text.strip(): |
|
return "" |
|
tokenizer.src_lang = "ta" |
|
encoded = tokenizer(text, return_tensors="pt") |
|
generated_tokens = model.generate(**encoded, forced_bos_token_id=tokenizer.get_lang_id("en")) |
|
return tokenizer.batch_decode(generated_tokens, skip_special_tokens=True)[0] |
|
|
|
def process_text(tamil_text): |
|
if not tamil_text.strip(): |
|
return "Please enter Tamil text.", None, "" |
|
|
|
try: |
|
|
|
translation = translate_tamil_to_english(tamil_text) |
|
except Exception as e: |
|
return f"Translation error: {str(e)}", None, "" |
|
|
|
try: |
|
|
|
generated = text_generator(translation, max_length=50, num_return_sequences=1) |
|
generated_text = generated[0]['generated_text'] |
|
except Exception as e: |
|
return translation, None, f"Text generation error: {str(e)}" |
|
|
|
|
|
|
|
image_url = "https://via.placeholder.com/512.png?text=Generated+Image" |
|
|
|
|
|
description = f"Generated description: {generated_text}" |
|
|
|
return translation, image_url, description |
|
|
|
iface = gr.Interface( |
|
fn=process_text, |
|
inputs=gr.Textbox(lines=2, label="Enter Tamil text"), |
|
outputs=[ |
|
gr.Textbox(label="Translated English Text"), |
|
gr.Image(label="Generated Image"), |
|
gr.Textbox(label="Image Description"), |
|
], |
|
title="Tamil to English Translation + Text & Image Generation", |
|
description="Enter Tamil text, get English translation, generated text, image, and description." |
|
) |
|
|
|
if __name__ == "__main__": |
|
iface.launch() |
|
|