|
|
|
import streamlit as st |
|
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM |
|
from diffusers import StableDiffusionPipeline |
|
import torch |
|
|
|
|
|
@st.cache_resource |
|
def load_translation_model(): |
|
model_name = "facebook/nllb-200-distilled-600M" |
|
tokenizer = AutoTokenizer.from_pretrained(model_name) |
|
model = AutoModelForSeq2SeqLM.from_pretrained(model_name) |
|
return tokenizer, model |
|
|
|
|
|
@st.cache_resource |
|
def load_diffusion_model(): |
|
pipe = StableDiffusionPipeline.from_pretrained( |
|
"CompVis/stable-diffusion-v1-4", |
|
torch_dtype=torch.float32 |
|
) |
|
pipe = pipe.to("cpu") |
|
return pipe |
|
|
|
|
|
def translate_text(text, tokenizer, model): |
|
prompt = f"Translate this from Tamil to English: {text}" |
|
inputs = tokenizer(prompt, return_tensors="pt", padding=True, truncation=True) |
|
with torch.no_grad(): |
|
translated_tokens = model.generate(**inputs, max_length=512) |
|
return tokenizer.decode(translated_tokens[0], skip_special_tokens=True) |
|
|
|
|
|
def main(): |
|
st.set_page_config(page_title="Tamil to Image Generator", layout="centered") |
|
with open("style.css") as f: |
|
st.markdown(f"<style>{f.read()}</style>", unsafe_allow_html=True) |
|
|
|
st.title("🪔 தமிழ் உரை -> பட உருவாக்கம்") |
|
|
|
user_input = st.text_area("உங்கள் உரையை உள்ளிடவும் (தமிழில்)", height=150) |
|
|
|
if st.button("படம் உருவாக்கவும்"): |
|
if not user_input.strip(): |
|
st.warning("தயவு செய்து தமிழ் உரையை உள்ளிடவும்.") |
|
return |
|
|
|
with st.spinner("மொழிபெயர்ப்பு மற்றும் பட உருவாக்கம் நடைபெறுகிறது..."): |
|
tokenizer, model = load_translation_model() |
|
translated_text = translate_text(user_input, tokenizer, model) |
|
st.success(f"மொழிபெயர்ப்பு (ஆங்கிலம்): {translated_text}") |
|
|
|
pipe = load_diffusion_model() |
|
image = pipe(translated_text).images[0] |
|
st.image(image, caption="உங்கள் உருவாக்கப்பட்ட படம்", use_column_width=True) |
|
|
|
if __name__ == "__main__": |
|
main() |
|
|