File size: 2,847 Bytes
1437058
a1cf7cb
d550533
eea6ac5
d16c1e4
54da9ab
 
 
 
 
 
4d86cc2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4deb4b5
d7164de
 
4d86cc2
 
 
1437058
d7164de
d16c1e4
54da9ab
1437058
d7164de
4d86cc2
5ca4bcd
d7164de
4d86cc2
 
 
9607ff2
c1732d5
4d86cc2
 
 
 
 
 
d7164de
1437058
4d86cc2
 
1437058
4d86cc2
 
1437058
 
 
4d86cc2
1437058
 
4d86cc2
 
1437058
 
 
4d86cc2
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import streamlit as st
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM, pipeline
from diffusers import StableDiffusionPipeline
import torch

st.set_page_config(
    page_title="Tamil Creative Studio",
    page_icon="🇮🇳",
    layout="centered",
)

def load_css():
    st.markdown(
        """<style>
        .header {
            text-align: center;
            padding: 20px;
            background: #f9f9f9;
            border-radius: 10px;
            margin-bottom: 20px;
        }
        .header h1 { color: #cc0000; }
        .header p { color: #333; font-style: italic; }
        </style>""",
        unsafe_allow_html=True,
    )

@st.cache_resource(show_spinner=False)
def load_all_models():
    model_id = "ai4bharat/indictrans2-indic-en-dist-200M"
    tokenizer = AutoTokenizer.from_pretrained(model_id)
    model = AutoModelForSeq2SeqLM.from_pretrained(model_id)
    text_gen = pipeline("text-generation", model="gpt2", device=-1)
    img_pipe = StableDiffusionPipeline.from_pretrained(
        "stabilityai/stable-diffusion-2-base",
        torch_dtype=torch.float32,
        safety_checker=None
    ).to("cpu")
    return tokenizer, model, text_gen, img_pipe

def translate_tamil(text, tokenizer, model):
    inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True, max_length=128)
    outs = model.generate(**inputs, max_length=150, num_beams=5, early_stopping=True)
    return tokenizer.decode(outs[0], skip_special_tokens=True)

def main():
    load_css()
    st.markdown(
        '<div class="header"><h1>🌐 தமிழ் → English → Creative Studio</h1>'
        '<p>Translate Tamil text and generate creative content</p></div>',
        unsafe_allow_html=True
    )
    tokenizer, model, text_gen, img_pipe = load_all_models()
    tamil_text = st.text_area("**தமிழ் உரை:**", height=150, placeholder="உங்கள் உரையை இங்கே உள்ளிடவும்...")

    if st.button("உருவாக்கு"):
        if not tamil_text.strip():
            st.warning("உரையை உள்ளிடவும்.")
            return

        with st.spinner("மொழிபெயர்க்கிறது..."):
            eng = translate_tamil(tamil_text, tokenizer, model)
        st.success(eng)

        with st.spinner("உரை உருவாக்குதல்..."):
            creative = text_gen(f"Create a creative description about: {eng}", max_length=80, num_return_sequences=1)[0]["generated_text"]
        st.info(creative)

        with st.spinner("படத்தை உருவாக்குதல்..."):
            img = img_pipe(eng, num_inference_steps=40, guidance_scale=8.5).images[0]
        st.image(img, caption="Generated Image", use_column_width=True)

if __name__ == "__main__":
    main()