File size: 2,135 Bytes
0411334
d76d7a7
18ae9dd
 
0411334
d76d7a7
67f7693
8fefe8c
0411334
 
8fefe8c
069f1ba
18ae9dd
 
8fefe8c
18ae9dd
 
 
 
 
069f1ba
0411334
 
 
 
 
 
 
 
 
18ae9dd
 
 
 
8fefe8c
18ae9dd
 
 
 
 
0411334
 
 
 
 
82a1852
0411334
745ec12
18ae9dd
 
 
 
0411334
 
18ae9dd
745ec12
18ae9dd
 
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
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()