KITT / kitt.py
sasan's picture
chore: Update vehicle destination in calculate_route function
e5f444f
raw
history blame
4.61 kB
import gradio as gr
import requests
import skills
from skills.common import config, vehicle
from skills.routing import calculate_route
# Generate options for hours (00-23)
hour_options = [f"{i:02d}:00" for i in range(24)]
def set_time(time_picker):
vehicle.time = time_picker
return vehicle.model_dump_json()
def get_vehicle_status(state):
return state.value["vehicle"].model_dump_json()
# to be able to use the microphone on chrome, you will have to go to chrome://flags/#unsafely-treat-insecure-origin-as-secure and enter http://10.186.115.21:7860/
# in "Insecure origins treated as secure", enable it and relaunch chrome
# example question:
# what's the weather like outside?
# What's the closest restaurant from here?
model_answer = ""
general_context = ""
# Define the initial state with some initial context.
print(general_context)
initial_state = {"context": general_context}
initial_context = initial_state["context"]
# Create the Gradio interface.
with gr.Blocks(theme=gr.themes.Default()) as demo:
state = gr.State(
value={"context": initial_context, "query": "", "vehicle": vehicle, "route_points": []}
)
with gr.Row():
with gr.Column(scale=1, min_width=300):
time_picker = gr.Dropdown(
choices=hour_options, label="What time is it? (HH:MM)", value="08:00", interactive=True
)
history = gr.Radio(
["Yes", "No"], label="Maintain the conversation history?", value="No", interactive=True
)
voice_character = gr.Radio(
choices=[
"Morgan Freeman",
"Eddie Murphy",
"David Attenborough",
"Rick Sanches",
],
label="Choose a voice",
value="Morgan Freeman",
show_label=True,
interactive=True,
)
emotion = gr.Radio(
choices=["Cheerful", "Grumpy"],
label="Choose an emotion",
value="Cheerful",
show_label=True,
)
origin = gr.Textbox(
value="Luxembourg Gare, Luxembourg", label="Origin", interactive=True
)
destination = gr.Textbox(
value="Kirchberg Campus, Luxembourg",
label="Destination",
interactive=True,
)
with gr.Column(scale=2, min_width=600):
map_plot = gr.Plot()
# map_if = gr.Interface(fn=plot_map, inputs=year_input, outputs=map_plot)
with gr.Row():
with gr.Column():
recorder = gr.Audio(
type="filepath", label="Input audio", elem_id="recorder"
)
input_text = gr.Textbox(
value="How is the weather?", label="Input text", interactive=True
)
vehicle_status = gr.Textbox(
value=get_vehicle_status(state), label="Vehicle status", interactive=False
)
with gr.Column():
output_audio = gr.Audio(label="output audio")
output_text = gr.TextArea(
value="", label="Output text", interactive=False
)
# iface = gr.Interface(
# fn=transcript,
# inputs=[
# gr.Textbox(value=initial_context, visible=False),
# gr.Audio(type="filepath", label="input audio", elem_id="recorder"),
# voice_character,
# emotion,
# place,
# time_picker,
# history,
# gr.State(), # This will keep track of the context state across interactions.
# ],
# outputs=[gr.Audio(label="output audio"), gr.Textbox(visible=False), gr.State()],
# head=shortcut_js,
# )
# Update plot based on the origin and destination
# Sets the current location and destination
origin.submit(fn=calculate_route, inputs=[origin, destination], outputs=[map_plot, vehicle_status])
destination.submit(fn=calculate_route, inputs=[origin, destination], outputs=[map_plot, vehicle_status])
# Update time based on the time picker
time_picker.select(fn=set_time, inputs=[time_picker], outputs=[vehicle_status])
# close all interfaces open to make the port available
gr.close_all()
# Launch the interface.
if __name__ == "__main__":
demo.launch(
debug=True, server_name="0.0.0.0", server_port=7860, ssl_verify=False
)
# iface.launch(debug=True, share=False, server_name="0.0.0.0", server_port=7860, ssl_verify=False)