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')
and 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()