This guide covers how to get Gradio interfaces to refresh automatically or continuously stream data.
You can make interfaces automatically refresh by setting
live=True in the interface. Now the interface will recalculate as soon as the user input changes.
import gradio as gr def calculator(num1, operation, num2): if operation == "add": return num1 + num2 elif operation == "subtract": return num1 - num2 elif operation == "multiply": return num1 * num2 elif operation == "divide": return num1 / num2 demo = gr.Interface( calculator, [ "number", gr.Radio(["add", "subtract", "multiply", "divide"]), "number" ], "number", live=True, ) demo.launch()
Note there is no submit button, because the interface resubmits automatically on change.
Some components have a "streaming" mode, such as
Audio component in microphone mode, or the
Image component in webcam mode. Streaming means data is sent continuously to the backend and the
Interface function is continuously being rerun.
The difference between
gr.Audio(source='microphone', streaming=True), when both are used in
gr.Interface(live=True), is that the first
Component will automatically submit data and run the
Interface function when the user stops recording, whereas the second
Component will continuously send data and run the
Interface function during recording.
Here is example code of streaming images from the webcam.
import gradio as gr import numpy as np def flip(im): return np.flipud(im) demo = gr.Interface( flip, gr.Image(source="webcam", streaming=True), "image", live=True ) demo.launch()