File size: 2,194 Bytes
1437058
4569162
d550533
eea6ac5
d16c1e4
4569162
9fd10ba
d7164de
4569162
2d8ff37
4569162
 
 
9bdb949
4569162
d7164de
4569162
 
 
 
 
5ca4bcd
4569162
9607ff2
4569162
c1732d5
4569162
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2d8ff37
4569162
 
 
 
 
 
 
9607ff2
 
d16c1e4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import streamlit as st
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM, pipeline
from diffusers import StableDiffusionPipeline
import torch

# Load models only once
@st.cache_resource
def load_all_models():
    # Load translation model
    trans_model_id = "ai4bharat/indictrans2-indic-en-dist-200M"
    tokenizer = AutoTokenizer.from_pretrained(trans_model_id, trust_remote_code=True)
    model = AutoModelForSeq2SeqLM.from_pretrained(trans_model_id, trust_remote_code=True)
    translation_pipeline = pipeline("translation", model=model, tokenizer=tokenizer)

    # Load image generation model (Stable Diffusion 2.1)
    img_pipe = StableDiffusionPipeline.from_pretrained(
        "stabilityai/stable-diffusion-2-1",
        torch_dtype=torch.float16 if torch.cuda.is_available() else torch.float32,
        revision="fp16" if torch.cuda.is_available() else None,
    )
    img_pipe = img_pipe.to("cuda" if torch.cuda.is_available() else "cpu")

    return tokenizer, model, translation_pipeline, img_pipe

# Streamlit UI
def main():
    st.set_page_config(page_title="Tamil to English to Image Generator", layout="centered")
    st.title("📸 Tamil → English → AI Image Generator")
    st.markdown("Translate Tamil text to English and generate an image from it!")

    # Load models
    with st.spinner("Loading models..."):
        tokenizer, model, translation_pipeline, img_pipe = load_all_models()

    # Input
    tamil_text = st.text_area("Enter Tamil text here:", height=150)
    
    if st.button("Generate Image"):
        if tamil_text.strip() == "":
            st.warning("Please enter some Tamil text.")
            return

        # Step 1: Translate Tamil to English
        with st.spinner("Translating to English..."):
            translated = translation_pipeline(tamil_text, src_lang="ta", tgt_lang="en")[0]["translation_text"]
            st.success(f"🔤 English Translation: `{translated}`")

        # Step 2: Generate image
        with st.spinner("Generating image..."):
            image = img_pipe(prompt=translated).images[0]
            st.image(image, caption="Generated Image", use_column_width=True)

if __name__ == "__main__":
    main()