24Sureshkumar commited on
Commit
52b96f9
·
verified ·
1 Parent(s): 33dc770

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +18 -24
app.py CHANGED
@@ -5,11 +5,12 @@ from PIL import Image
5
  import torch
6
  import io
7
  import os
 
8
 
9
  # Load Hugging Face API key securely
10
- HF_API_KEY = os.getenv("HF_API_KEY") # give token
11
  if not HF_API_KEY:
12
- raise ValueError("HF_API_KEY is not set. Add it in Hugging Face 'Variables and Secrets'.")
13
 
14
  # API Endpoint for Image Generation
15
  IMAGE_GEN_URL = "https://api-inference.huggingface.co/models/black-forest-labs/FLUX.1-schnell"
@@ -30,45 +31,36 @@ generator_tokenizer = AutoTokenizer.from_pretrained(generator_model)
30
  if generator_tokenizer.pad_token is None:
31
  generator_tokenizer.pad_token = generator_tokenizer.eos_token
32
 
33
- def translate_tamil_to_english(text):
34
  """Translates Tamil text to English."""
35
  inputs = translator_tokenizer(text, return_tensors="pt", padding=True, truncation=True).to(device)
36
  output = translator.generate(**inputs)
37
  return translator_tokenizer.decode(output[0], skip_special_tokens=True)
38
 
39
- def generate_text(prompt):
40
  """Generates a creative text based on English input."""
41
  inputs = generator_tokenizer(prompt, return_tensors="pt", padding=True, truncation=True).to(device)
42
  output = generator.generate(**inputs, max_length=100)
43
  return generator_tokenizer.decode(output[0], skip_special_tokens=True)
44
 
45
- def generate_image(prompt):
46
  """Sends request to API for image generation."""
47
  response = requests.post(IMAGE_GEN_URL, headers=HEADERS, json={"inputs": prompt})
48
- if response.status_code == 200:
49
- return Image.open(io.BytesIO(response.content))
50
- return Image.new("RGB", (300, 300), "red") # Placeholder image for errors
 
 
 
51
 
52
- def process_input(tamil_text):
53
  """Complete pipeline: Translation, Text Generation, and Image Generation."""
54
  english_text = translate_tamil_to_english(tamil_text)
55
  creative_text = generate_text(english_text)
56
  image = generate_image(english_text)
57
  return english_text, creative_text, image
58
 
59
- # Create Gradio Interface
60
-
61
- # interface = gr.Interface(
62
- # fn=process_input,
63
- # inputs=gr.Textbox(label="Enter Tamil Text"),
64
- # outputs=[
65
- # gr.Textbox(label="Translated English Text"),
66
- # gr.Textbox(label="Creative Text"),
67
- # gr.Image(label="Generated Image")
68
- # ],
69
- # title="Tamil to English Translator & Image Generator",
70
- # description="Enter Tamil text, and this app will translate it, generate a creative description, and create an image based on the text."
71
- # )
72
  interface = gr.Interface(
73
  fn=process_input,
74
  inputs=gr.Textbox(label="Enter Tamil Text"),
@@ -78,7 +70,9 @@ interface = gr.Interface(
78
  gr.Image(label="Generated Image")
79
  ],
80
  title="Tamil to English Translator & Image Generator",
81
- description="Enter Tamil text, and this app will translate it, generate a creative description, and create an image based on the text."
 
82
  )
83
- # Launch the Gradio app
 
84
  interface.launch()
 
5
  import torch
6
  import io
7
  import os
8
+ from typing import Tuple
9
 
10
  # Load Hugging Face API key securely
11
+ HF_API_KEY = os.getenv("HF_API_KEY") # You must set this as an environment variable
12
  if not HF_API_KEY:
13
+ raise ValueError("HF_API_KEY is not set. Add it in Hugging Face 'Variables and Secrets' or local environment.")
14
 
15
  # API Endpoint for Image Generation
16
  IMAGE_GEN_URL = "https://api-inference.huggingface.co/models/black-forest-labs/FLUX.1-schnell"
 
31
  if generator_tokenizer.pad_token is None:
32
  generator_tokenizer.pad_token = generator_tokenizer.eos_token
33
 
34
+ def translate_tamil_to_english(text: str) -> str:
35
  """Translates Tamil text to English."""
36
  inputs = translator_tokenizer(text, return_tensors="pt", padding=True, truncation=True).to(device)
37
  output = translator.generate(**inputs)
38
  return translator_tokenizer.decode(output[0], skip_special_tokens=True)
39
 
40
+ def generate_text(prompt: str) -> str:
41
  """Generates a creative text based on English input."""
42
  inputs = generator_tokenizer(prompt, return_tensors="pt", padding=True, truncation=True).to(device)
43
  output = generator.generate(**inputs, max_length=100)
44
  return generator_tokenizer.decode(output[0], skip_special_tokens=True)
45
 
46
+ def generate_image(prompt: str) -> Image.Image:
47
  """Sends request to API for image generation."""
48
  response = requests.post(IMAGE_GEN_URL, headers=HEADERS, json={"inputs": prompt})
49
+ try:
50
+ if response.status_code == 200 and response.headers["content-type"].startswith("image"):
51
+ return Image.open(io.BytesIO(response.content))
52
+ except Exception as e:
53
+ print("Image generation error:", e)
54
+ return Image.new("RGB", (300, 300), "red") # Fallback placeholder image
55
 
56
+ def process_input(tamil_text: str) -> Tuple[str, str, Image.Image]:
57
  """Complete pipeline: Translation, Text Generation, and Image Generation."""
58
  english_text = translate_tamil_to_english(tamil_text)
59
  creative_text = generate_text(english_text)
60
  image = generate_image(english_text)
61
  return english_text, creative_text, image
62
 
63
+ # Gradio Interface
 
 
 
 
 
 
 
 
 
 
 
 
64
  interface = gr.Interface(
65
  fn=process_input,
66
  inputs=gr.Textbox(label="Enter Tamil Text"),
 
70
  gr.Image(label="Generated Image")
71
  ],
72
  title="Tamil to English Translator & Image Generator",
73
+ description="Enter Tamil text, and this app will translate it, generate a creative description, and create an image based on the text.",
74
+ allow_flagging="never" # Avoids schema-related error in Spaces
75
  )
76
+
77
+ # Launch the app
78
  interface.launch()