|
|
|
import requests |
|
import constants |
|
import os |
|
from PIL import Image |
|
from gradio_client import Client |
|
|
|
|
|
def clean_response(result): |
|
"""A temporary fix to the output of predict which returns output of openai-whisper-large-v3-turbo as string |
|
but it outputs: AutomaticSpeechRecognitionOutput(text=" sometimes life <- like this the class name still remains |
|
in the response, ideally which should have started from "sometimes..." as in the given example """ |
|
|
|
start_pos = result.find('text="') + len('text="') |
|
end_pos = result.find('", chunks=None') |
|
|
|
|
|
cleaned_result = result[start_pos:end_pos] |
|
|
|
return cleaned_result |
|
|
|
|
|
def get_translation(text: str): |
|
|
|
params = {"text": text} |
|
|
|
|
|
headers = {"Authorization": f"Bearer {constants.HF_TOKEN}"} |
|
|
|
try: |
|
|
|
response = requests.get(constants.TRANSLATION_ENDPOINT, params=params, headers=headers) |
|
|
|
|
|
if response.status_code == 200: |
|
response_data = response.json() |
|
return response_data.get("output", "No output found.") |
|
else: |
|
print(f"Error: {response.status_code}, {response.text}") |
|
return None |
|
except Exception as e: |
|
print(f"An exception occurred: {e}") |
|
return None |
|
|
|
|
|
|
|
def get_image_prompts(text_input): |
|
headers = { |
|
"Authorization": f"Bearer {constants.HF_TOKEN}", |
|
"Content-Type": "application/json" |
|
} |
|
|
|
endpoint = f"{constants.PROMPT_GENERATION_ENDPOINT}" |
|
payload = {"text_input": text_input} |
|
|
|
try: |
|
|
|
print("making post request for image prompts", endpoint) |
|
response = requests.post(endpoint, json=payload, headers=headers) |
|
|
|
|
|
response.raise_for_status() |
|
|
|
|
|
result = response.json() |
|
return result |
|
|
|
except requests.exceptions.RequestException as e: |
|
print(f"Error during request: {e}") |
|
return {"error": str(e)} |
|
|
|
|
|
|
|
|
|
def generate_image(prompt, path='test_image.png'): |
|
try: |
|
|
|
client = Client(constants.IMAGE_GENERATION_SPACE_NAME, hf_token=constants.HF_TOKEN) |
|
|
|
|
|
result = client.predict( |
|
param_0=prompt, |
|
api_name="/predict" |
|
) |
|
|
|
image = Image.open(result) |
|
image.save(path) |
|
|
|
|
|
return result |
|
|
|
except Exception as e: |
|
print(f"Error during image generation: {e}") |
|
return {"error": str(e)} |
|
|
|
def generate_images(image_prompts, folder_name='test_folder'): |
|
folder_path = tmp_folder(folder_name) |
|
for index, prompt in enumerate(image_prompts): |
|
print(index, prompt) |
|
generate_image(prompt=prompt, path=f"{folder_path}/{index}.png") |
|
return folder_path |
|
|
|
|
|
|
|
def tmp_folder(folder_name: str) -> str: |
|
|
|
base_tmp_path = os.path.join(os.getcwd(), "tmp_dir") |
|
|
|
|
|
if not os.path.exists(base_tmp_path): |
|
os.makedirs(base_tmp_path) |
|
print(f"Base temporary folder '{base_tmp_path}' created.") |
|
|
|
|
|
folder_path = os.path.join(base_tmp_path, folder_name) |
|
|
|
|
|
os.makedirs(folder_path, exist_ok=True) |
|
|
|
print(f"Temporary folder '{folder_name}' is ready at {folder_path}.") |
|
|
|
return folder_path |
|
|
|
|
|
def generate_video(image_folder, audio): |
|
return os.path.join(os.getcwd(), "test.mp4") |
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
result = generate_images(["a guy in jungle", "a waterfall","greenery"]) |
|
print(result,'is the result') |
|
|