import os
import gradio as gr
from gradio_client import Client
MY_HF_TOKEN_KEY = os.environ["MY_HF_TOKEN_KEY"]
client = Client("Ghana-NLP/Khaya-image-caption-backend-infer-api",hf_token=MY_HF_TOKEN_KEY,upload_files=True)
def generate(filepath,language):
output = client.predict(filepath,language,api_name="/predict")
return output
with gr.Blocks() as demo:
title = gr.Markdown(
"""
# African Language Image Captioning
Based on the Khaya AI Translation API, Lesan AI, Google Translate API and the BLIP model. Lesan is used for Amharic and Tigrinya, Khaya AI is used for Twi, Dagbani, Ewe, Ga, Gurene, Fante, Kikuyu, Kimeru, Luo, Yoruba and Google is used for Hausa, Swahili and Shona.
""")
with gr.Row():
with gr.Column(scale=1):
language_selector = gr.Dropdown(["Twi","Amharic","Dagbani","Ewe","Ga","Gurene","Fante","Hausa", "Kikuyu", "Kimeru", "Luo","Shona","Swahili","Tigrinya","Yoruba"],value="Twi",label="Choose Language! (default is Twi)", info="Language:")
inputs = [gr.Image(type="filepath"),language_selector]
examples = [["https://raw.githubusercontent.com/gradio-app/gradio/main/test/test_files/bus.png"],
["https://raw.githubusercontent.com/gradio-app/gradio/main/test/test_files/rotated_image.jpeg"]]
with gr.Column(scale=1):
outputs = [gr.Textbox(label="English Caption"), gr.Textbox(label="African Language Caption"),
gr.Image(label="OUT", type="filepath")]
btn = gr.Button("Generate African Language Caption")
btn.click(generate, inputs=inputs, outputs=outputs)
if __name__ == "__main__":
demo.queue(max_size=20).launch()