from io import BytesIO import base64 from PIL import Image import cv2 import numpy as np from gtts import gTTS def tts(text: str, language="ja") -> object: """Converts text into autoplay html. Args: text (str): generated answer of bot language (str): language of text Returns: html: autoplay object """ tts_object = gTTS(text=text, lang=language, slow=False) bytes_object = BytesIO() tts_object.write_to_fp(bytes_object) bytes_object.seek(0) b64 = base64.b64encode(bytes_object.getvalue()).decode() return b64 def read_image_file(file) -> Image.Image: image = Image.open(BytesIO(file)) return image def pil_to_base64(img, format="jpeg"): buffer = BytesIO() img.save(buffer, format) img_str = base64.b64encode(buffer.getvalue()).decode("ascii") return img_str def base64_to_pil(img_str): if "base64," in img_str: img_str = img_str.split(",")[1] img_raw = base64.b64decode(img_str) img = Image.open(BytesIO(img_raw)) return img def get_hist(image): hist = cv2.calcHist([np.array(image)], [0, 1, 2], None, [8, 8, 8], [0, 256, 0, 256, 0, 256]) hist = cv2.normalize(hist, hist).flatten() return hist