File size: 5,658 Bytes
eea6ac5 625a47c 8583867 edac42b eea6ac5 058ddc5 639070c 0724936 8583867 639070c 8583867 639070c 8583867 639070c 8583867 639070c 8583867 625a47c 8583867 639070c eea6ac5 058ddc5 8583867 058ddc5 1c69011 058ddc5 eea6ac5 058ddc5 8583867 058ddc5 8583867 058ddc5 8583867 058ddc5 8583867 058ddc5 eea6ac5 058ddc5 1c69011 a68e5a8 058ddc5 8583867 058ddc5 8583867 058ddc5 8583867 058ddc5 8583867 058ddc5 8583867 058ddc5 8583867 058ddc5 8583867 639070c 8583867 058ddc5 8583867 edac42b 058ddc5 8583867 |
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 147 148 149 150 |
# app.py
import gradio as gr
from transformers import pipeline, AutoTokenizer, AutoModelForSeq2SeqLM
from diffusers import StableDiffusionPipeline
import torch
import re
import os
from huggingface_hub import login
# Enter your Hugging Face token here (or set as environment variable)
HF_TOKEN = "your_hf_token_here" # Replace with your actual token
# Authenticate with Hugging Face Hub
if HF_TOKEN:
login(token=HF_TOKEN)
else:
raise ValueError("Hugging Face token not provided!")
# Initialize models
def load_models():
# Load translation model (NLLB - best for Tamil)
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 # Token added here
)
# Text generation pipeline
text_generator = pipeline(
"text-generation",
model="gpt2-medium",
device=0 if torch.cuda.is_available() else -1,
use_auth_token=HF_TOKEN # Token added here
)
# Image generation pipeline
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 # Token added here
).to("cuda")
else:
image_pipe = StableDiffusionPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5",
use_auth_token=HF_TOKEN # Token added here
)
return translator, text_generator, image_pipe
# Load models at startup
try:
translator, text_generator, image_pipe = load_models()
except Exception as e:
raise RuntimeError(f"Model loading failed: {str(e)}")
def clean_text(text):
"""Remove special characters and truncate to complete sentences"""
cleaned = re.split(r'(?<=[.!?])\s+', text)[0]
return re.sub(r'[^a-zA-Z0-9,.!?\'"\- ]+', '', cleaned).strip()
def process_content(tamil_input, creativity_level):
outputs = {}
error = ""
try:
# Translate Tamil to English
translation_result = translator(tamil_input)
english_text = translation_result[0]['translation_text']
outputs["translation"] = english_text
# Generate image
image = image_pipe(
english_text,
guidance_scale=creativity_level,
num_inference_steps=30
).images[0]
outputs["image"] = image
# Generate creative text
creative_output = text_generator(
f"Create creative content about: {english_text}",
max_length=150,
temperature=creativity_level/10,
num_return_sequences=1
)
outputs["creative_text"] = clean_text(creative_output[0]['generated_text'])
except Exception as e:
error = f"⚠️ Error: {str(e)}"
return outputs, error
# 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)
examples = gr.Examples(
examples=[
["கடலின் அடியில் மறைந்திருக்கும் பழைய நகரம்", 8],
["பனி படர்ந்த குளிர்காலத்தில் வெப்பமான காபி குடிக்கும் பழங்குடி பெண்", 7],
["வேறு கிரகத்தில் இருந்து வந்த அறிவார்ந்த இயந்திரங்கள்", 9]
],
inputs=[tamil_input, creativity]
)
# Clear inputs button
clear_btn = gr.Button("துடைத்து துவக்கவும்")
def clear_all():
return "", "", "", None, ""
submit_btn.click(
fn=process_content,
inputs=[tamil_input, creativity],
outputs=[{"translation": translation_box, "creative_text": creative_output, "image": image_output}, error_output]
)
clear_btn.click(
fn=clear_all,
inputs=[],
outputs=[tamil_input, translation_box, creative_output, image_output, error_output]
)
if __name__ == "__main__":
app.launch() |