File size: 4,614 Bytes
6b9d2e8
 
 
e5f444f
 
 
 
 
 
 
 
 
 
 
6b9d2e8
e5f444f
 
6b9d2e8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e5f444f
 
 
6b9d2e8
 
 
 
e5f444f
6b9d2e8
 
e5f444f
6b9d2e8
 
 
e5f444f
6b9d2e8
 
e5f444f
6b9d2e8
 
e5f444f
6b9d2e8
e5f444f
6b9d2e8
 
 
 
 
 
 
cb47347
 
 
6b9d2e8
e5f444f
cb47347
 
 
e5f444f
6b9d2e8
 
e5f444f
6b9d2e8
 
e5f444f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6b9d2e8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e5f444f
 
 
 
 
 
 
 
6b9d2e8
 
 
 
e5f444f
 
 
 
6b9d2e8
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
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)