mikeee/diffusers-test
0
1"""See https://huggingface.co/spaces/Gradio-Blocks/Story-to-video/blob/main/app.py."""2import base643import io4import logzero5import os6import re7import time8from random import choice, choices9 10import gradio as gr11import translators as ts12from fastlid import fastlid13from logzero import logger14from PIL import Image # opencv-python15from tenacity import retry16from tenacity.stop import stop_after_attempt, stop_after_delay17 18# from PIL import Image19# from transformers import AutoTokenizer, AutoModelForSeq2SeqLM,pipeline20# import requests21# import torch22 23image_gen = gr.Interface.load("spaces/multimodalart/latentdiffusion")24# image_gen = gr.Interface.load("huggingface/multimodalart/latentdiffusion")25 26os.environ["TZ"] = "Asia/Shanghai"27try:28 time.tzset()29except Exception:30 ... # Windows31 32loglevel = 10 # change to 20 to switch off debug33logzero.loglevel(loglevel)34 35 36examples_ = [37 "黄金在河里流淌,宝石遍地,空中铺满巨大的彩虹。",38 "蓝色的夜,森林中好多萤火虫",39 "黑云压城城欲摧 ,甲光向日金鳞开。",40 "季姬寂,集鸡,鸡即棘鸡。棘鸡饥叽,季姬及箕稷济鸡。",41 "an apple",42 "a cat",43 "blue moon",44 "metaverse",45]46 47 48# @retry(stop=stop_after_attempt(5))49@retry(stop=(stop_after_delay(10) | stop_after_attempt(5)))50def tr_(51 text: str,52 from_language="auto",53 to_language="en",54) -> str:55 """Wrap [ts.deepl, ts.baidu, ts.google] with tenacity.56 57 not working: sogou; ?tencent58 """59 cand = [ts.baidu, ts.youdao, ts.google]60 for tr in [ts.deepl] + choices(cand, k=len(cand)):61 try:62 res = tr(63 text,64 from_language=from_language,65 to_language=to_language,66 )67 logger.info(" api used: %s", tr.__name__)68 tr_.api_used = tr.__name__69 break70 except Exception:71 continue72 else:73 res = "Something is probably wrong, ping dev to fix it if you like."74 75 return res76 77 78def generate_images(phrase: str, steps: int = 125):79 if not phrase.strip():80 phrase = choice(examples_)81 82 generated_text = phrase83 detected = "en"84 extra_info = ""85 try:86 detected = fastlid(phrase)[0]87 except Exception as exc:88 logger.error(exc)89 90 logzero.loglevel(loglevel)91 logger.debug("phrase: %s, deteted: %s", phrase, detected)92 93 # safeguard short Chinese phrases94 if len(phrase) <= 10 and re.search(r"[一-龟]+", phrase):95 detected = "zh"96 logger.debug(" safeguard branch ")97 98 if detected not in ["en"]:99 try:100 generated_text = tr_(101 phrase,102 detected,103 "en",104 )105 extra_info = f"({tr_.api_used}: {generated_text})"106 except Exception as exc:107 logger.error(exc)108 return None, f"{phrase:}, errors: {str(exc)}"109 110 # steps = 125111 width = 256112 height = 256113 num_images = 4114 num_images = 1115 diversity = 6116 117 try:118 image_bytes = image_gen(119 generated_text, steps, width, height, num_images, diversity120 )121 except Exception as exc:122 logger.error(exc)123 return None, f"phrase: {phrase}, errors: {str(exc)}. Try again."124 125 # Algo from spaces/Gradio-Blocks/latent_gpt2_story/blob/main/app.py126 # generated_images = []127 128 img = None129 err_msg = f"{phrase} {extra_info}"130 for image in image_bytes[1]:131 image_str = image[0]132 try:133 image_str = image_str.replace("data:image/png;base64,", "")134 except Exception as exc:135 logger.error(exc)136 err_msg = str(exc)137 return None, f"errors: {err_msg}. Try again."138 decoded_bytes = base64.decodebytes(bytes(image_str, "utf-8"))139 img = Image.open(io.BytesIO(decoded_bytes))140 141 # generated_images.append(img)142 143 # return generated_images144 145 return img, err_msg146 147 148# examples = [["an apple", 125], ["Donald Trump", 125]]149examples = [list(_) for _ in zip(examples_, [125] * len(examples_))]150 151inputs = [152 # "text",153 gr.Text(value="a dog with a funny hat"),154 gr.Slider(minimum=2, maximum=250, value=115, step=5),155]156 157iface = gr.Interface(158 generate_images,159 inputs,160 # ["image", gr.Text(value="", label="phrase")],161 [gr.Image(label=""), gr.Text(value="", label="phrase")],162 examples=examples,163 cache_examples=False,164 allow_flagging="never",165)166 167iface.launch(enable_queue=True)168 