Team Ai
Apppublic

mikeee/diffusers-test

sourceHugging Faceupdated 4y agoView on Hugging Face
0likes
app.py168 linesDownload Raw Back to root
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