24Sureshkumar's picture
Update app.py
c1732d5 verified
raw
history blame
2.67 kB
import streamlit as st
from transformers import M2M100ForConditionalGeneration, M2M100Tokenizer, pipeline
from diffusers import StableDiffusionPipeline
import torch
@st.cache_resource
def load_models():
# Translation model
model_name = "alirezamsh/small100"
tokenizer = M2M100Tokenizer.from_pretrained(model_name)
model = M2M100ForConditionalGeneration.from_pretrained(model_name)
# Creative text generation (GPT-2)
text_generator = pipeline("text-generation", model="gpt2-medium")
# Stable diffusion image generation (CPU-friendly)
image_pipe = StableDiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-2-base", torch_dtype=torch.float32
).to("cpu")
return tokenizer, model, text_generator, image_pipe
def translate_tamil_to_english(text, tokenizer, model):
tokenizer.src_lang = "ta"
inputs = tokenizer(text, return_tensors="pt", truncation=True)
generated_tokens = model.generate(**inputs, forced_bos_token_id=tokenizer.get_lang_id("en"))
return tokenizer.decode(generated_tokens[0], skip_special_tokens=True)
def generate_creative_text(prompt, generator):
response = generator(f"Describe creatively: {prompt}", max_length=60, num_return_sequences=1)
return response[0]["generated_text"]
def main():
st.set_page_config(page_title="Tamil to English → Image & Text", layout="centered")
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, textgen, pipe = load_models()
english_text = translate_tamil_to_english(user_input, tokenizer, model)
st.success(f"Translated to English: {english_text}")
with st.spinner("சிறந்த உரையை உருவாக்குகிறது..."):
creative = generate_creative_text(english_text, textgen)
st.info("✍️ Creative Text:")
st.write(creative)
with st.spinner("படம் உருவாக்கப்படுகிறது..."):
image = pipe(english_text, num_inference_steps=25).images[0]
st.image(image, caption="🎨 Generated Image", use_column_width=True)
if __name__ == "__main__":
main()