tasomi / app.py
raheemuddin's picture
Delete temp files
82a1852 verified
raw
history blame
2.14 kB
import uuid
import gradio as gr
import boto3
import os
from PIL import Image
hf_token = os.environ.get("HF_TOKEN")
tasomi_model = os.environ.get("TASOMI_MODEL")
s3_bucket = os.environ.get("IMCAPSULE_EXTERNAL_BUCKET")
m=gr.load(tasomi_model, src="models",hf_token=hf_token)
def detect_language(text):
# Initialize the Comprehend client
comprehend = boto3.client('comprehend')
# Call DetectDominantLanguage API
response = comprehend.detect_dominant_language(Text=text)
# Extract the detected language
detected_language = response['Languages'][0]['LanguageCode']
return detected_language
def upload_file(file_path):
s3 = boto3.client('s3')
key='public/' + os.path.basename(file_path)
# Upload the file
s3.upload_file(file_path, s3_bucket, key)
s3_path = f"{s3.meta.endpoint_url}/{s3_bucket}/{key}"
print(f'File uploaded successfully. s3_path= {s3_path} ')
return s3_path
def translate_and_predict(text):
"""Translates text and generates an image using Stable Diffusion."""
source_language_code=detect_language(text)
# Translate input text
translate = boto3.client('translate')
target_language_code="en"
print("source_language_code:" , source_language_code)
translation_result = translate.translate_text(Text=text, SourceLanguageCode=source_language_code, TargetLanguageCode=target_language_code)
translated_text = translation_result.get('TranslatedText')
print("translated_text:" , translated_text)
gen_image=m(translated_text)
webp_image = Image.open(gen_image)
converted_image_path = f"./tasomi-{uuid.uuid4().hex}.jpg"
webp_image.save(converted_image_path, "JPEG")
s3_path = upload_file(converted_image_path)
os.remove(converted_image_path)
return s3_path,s3_path
# Define the Gradio interface
iface = gr.Interface(
fn=translate_and_predict, # Since we're only displaying an image, there's no function to call
inputs=["text"], # Input: text, source language, target language
outputs=["image","text"], # Output: generated image
title="Tasomi Images",
)
# Launch the interface
iface.launch()