import random import time import gradio as gr import numpy as np def store_message(message: str, history: list[str]): output = {"Current messages": message, "Previous messages": history[::-1]} history.append(message) return output, history def store_message_ui(): gr.Interface( fn=store_message, inputs=["textbox", gr.State(value=[])], outputs=["json", gr.State()], title="Session State Management", ) def fake_gan(): time.sleep(1) images = [ "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=387&q=80", "https://images.unsplash.com/photo-1554151228-14d9def656e4?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=386&q=80", "https://images.unsplash.com/photo-1542909168-82c3e7fdca5c?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxzZWFyY2h8MXx8aHVtYW4lMjBmYWNlfGVufDB8fDB8fA%3D%3D&w=1000&q=80", ] return images def fake_gan_ui(): gr.Interface( fn=fake_gan, inputs=None, outputs=gr.Gallery(label="Generated Images", columns=2), title="FD-GAN", description="This is a fake demo of a GAN. In reality, the images are randomly chosen from Unsplash.", ) def fake_diffusion(steps): rng = np.random.default_rng() for i in range(steps): time.sleep(1) image = rng.random(size=(600, 600, 3)) yield image image = np.ones((1000, 1000, 3), np.uint8) image[:] = [255, 124, 0] yield image def fake_diffusion_ui(): gr.Interface( fake_diffusion, inputs=gr.Slider(1, 10, 3, step=1, label="Steps"), outputs="image", title="Fake Diffusion", description="This is a fake demo of a diffusion model. In reality, the images are randomly chosen from Unsplash.", ) def fake_chat_ui(): with gr.Blocks(title="Fake Chat"): chatbot = gr.Chatbot() msg = gr.Textbox() clear = gr.Button("Clear") def user(user_message: str, history: list[list[str]]): return "", history + [[user_message, None]] def bot(history): bot_message = random.choice( ["How are you?", "I love you", "I'm very hungry"] ) time.sleep(1) user_message = history[-1][0] history[-1][1] = f"reply to: {user_message}\n{bot_message}" return history msg.submit(user, [msg, chatbot], [msg, chatbot], queue=False).then( bot, chatbot, chatbot ) clear.click(lambda: None, None, chatbot, queue=False) def keep_repeating(audio_file): for _ in range(10): time.sleep(0.5) print(audio_file) yield audio_file def keep_repeating_ui(): gr.Interface( keep_repeating, gr.Audio(sources=["microphone"], type="filepath"), gr.Audio(streaming=True, autoplay=True), title="Keep Repeating", description="Keep repeating the audio from the microphone", ) def flip(im): return np.flipud(im) def streaming_cam_ui(): gr.Interface( flip, gr.Image(sources=["webcam"], streaming=True), "image", live=True, title="Streaming Camera", ) def main(): # fake GAN fake_gan_ui() # keep repeating keep_repeating_ui() # fake chat # fake_chat_ui() # fake diffusion fake_diffusion_ui() # session state management store_message_ui() # streaming camera streaming_cam_ui() # static audio gr.Interface( fn=lambda x: x, inputs=gr.Audio(sources=["microphone"]), outputs=gr.Audio(sources=["microphone"]), title="Static Audio", description="Play the audio from the microphone", )