File size: 5,436 Bytes
eea6ac5 ddb377a 625a47c ddb377a edac42b eea6ac5 058ddc5 639070c ddb377a 39765db 639070c 39765db 0724936 ddb377a 8583867 ddb377a 8583867 639070c ddb377a 8583867 ddb377a 8583867 ddb377a 8583867 639070c ddb377a 8583867 ddb377a 8583867 639070c ddb377a 8583867 639070c ddb377a 639070c ddb377a 8583867 625a47c ddb377a 639070c eea6ac5 ddb377a 058ddc5 ddb377a 1c69011 ddb377a 058ddc5 ddb377a 8583867 ddb377a 058ddc5 ddb377a 8583867 058ddc5 ddb377a 058ddc5 ddb377a 058ddc5 ddb377a 058ddc5 ddb377a 1c69011 a68e5a8 058ddc5 8583867 ddb377a 058ddc5 ddb377a 058ddc5 ddb377a 058ddc5 8583867 ddb377a 058ddc5 8583867 ddb377a 058ddc5 8583867 058ddc5 ddb377a 8583867 639070c ddb377a 058ddc5 ddb377a 058ddc5 ddb377a 8583867 edac42b ddb377a 058ddc5 ddb377a |
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 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
# app.py
import gradio as gr
from transformers import pipeline
from diffusers import StableDiffusionPipeline
import torch
import re
import os
from huggingface_hub import login
# Get Hugging Face token from environment variable
HF_TOKEN = os.environ.get("HF_TOKEN")
if not HF_TOKEN:
raise ValueError("Hugging Face token not found in environment variables!")
else:
login(token=HF_TOKEN)
# Load all models
def load_models():
# Translation model: Tamil → English
translator = pipeline(
"translation",
model="facebook/nllb-200-distilled-600M",
src_lang="tam_Taml",
tgt_lang="eng_Latn",
device=0 if torch.cuda.is_available() else -1,
use_auth_token=HF_TOKEN
)
# Text generation model
text_generator = pipeline(
"text-generation",
model="gpt2-medium",
device=0 if torch.cuda.is_available() else -1,
use_auth_token=HF_TOKEN
)
# Stable Diffusion for image generation
if torch.cuda.is_available():
image_pipe = StableDiffusionPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5",
torch_dtype=torch.float16,
revision="fp16",
use_auth_token=HF_TOKEN
).to("cuda")
else:
image_pipe = StableDiffusionPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5",
use_auth_token=HF_TOKEN
)
return translator, text_generator, image_pipe
# Load models once at startup
try:
translator, text_generator, image_pipe = load_models()
except Exception as e:
raise RuntimeError(f"Model loading failed: {str(e)}")
# Clean generated text
def clean_text(text):
cleaned = re.sub(r'[^a-zA-Z0-9,.!?\'"\- ]+', '', text).strip()
sentences = re.split(r'(?<=[.!?])\s+', cleaned)
return ' '.join(sentences[:2]) # return first 2 sentences
# Main processing function
def process_content(tamil_input, creativity_level):
try:
# Translation
translation_result = translator(tamil_input)
english_text = translation_result[0]['translation_text']
# Image generation
image = image_pipe(
english_text,
guidance_scale=creativity_level,
num_inference_steps=30
).images[0]
# Text generation
creative_output = text_generator(
f"Create creative content about: {english_text}",
max_length=150,
temperature=creativity_level / 10,
num_return_sequences=1
)
return english_text, clean_text(creative_output[0]['generated_text']), image, ""
except Exception as e:
return "", "", None, f"⚠️ Error: {str(e)}"
# Gradio UI
with gr.Blocks(theme=gr.themes.Soft()) as app:
gr.Markdown("# 🌐 தமிழ் உரை முதல் பட உருவாக்கம் (Tamil to Image Generator)")
gr.Markdown("தமிழில் உள்ளீடு செய்து → ஆங்கில மொழிபெயர்ப்பு + AI உருவம் + படைப்பு உரை பெறவும்")
with gr.Row():
with gr.Column():
tamil_input = gr.Textbox(
label="தமிழ் உள்ளீடு",
placeholder="உதாரணம்: பனி படர்ந்த குளிர்காலத்தில் வெப்பமான காபி குடிக்கும் பழங்குடி பெண்",
lines=3
)
creativity = gr.Slider(
label="படைப்பாற்றல் நிலை",
minimum=1, maximum=10, value=7, step=1
)
submit_btn = gr.Button("உருவாக்கு")
with gr.Column():
translation_box = gr.Textbox(label="ஆங்கில மொழிபெயர்ப்பு")
creative_output = gr.Textbox(label="படைப்பு உரை", lines=3)
image_output = gr.Image(label="உருவாக்கப்பட்ட படம்")
error_output = gr.Textbox(label="பிழை செய்திகள்", visible=True)
# Example inputs
examples = gr.Examples(
examples=[
["கடலின் அடியில் மறைந்திருக்கும் பழைய நகரம்", 8],
["பனி படர்ந்த குளிர்காலத்தில் வெப்பமான காபி குடிக்கும் பழங்குடி பெண்", 7],
["வேறு கிரகத்தில் இருந்து வந்த அறிவார்ந்த இயந்திரங்கள்", 9]
],
inputs=[tamil_input, creativity]
)
# Clear all inputs/outputs
clear_btn = gr.Button("துடைத்து துவக்கவும்")
def clear_all():
return "", "", "", None, ""
submit_btn.click(
fn=process_content,
inputs=[tamil_input, creativity],
outputs=[translation_box, creative_output, image_output, error_output]
)
clear_btn.click(
fn=clear_all,
inputs=[],
outputs=[tamil_input, translation_box, creative_output, image_output, error_output]
)
# Launch the app
if __name__ == "__main__":
app.queue().launch()
|