File size: 3,801 Bytes
6e2fd22
 
 
 
 
 
 
 
 
 
 
1c0b271
 
 
6e2fd22
 
 
 
 
 
1c0b271
6e2fd22
 
 
aa938da
 
 
 
1c0b271
 
 
aa938da
1c0b271
6e2fd22
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1c0b271
6e2fd22
1c0b271
6e2fd22
1c0b271
 
 
 
6e2fd22
1c0b271
6e2fd22
 
 
 
1c0b271
 
6e2fd22
1c0b271
6e2fd22
 
 
 
 
 
 
 
 
 
1c0b271
6e2fd22
 
 
 
 
 
 
 
 
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
from functions import *


scores_parameters, authors = get_main_data()

with (gr.Blocks() as app):
    user_id = gr.State('')  # id used to find the chat into the database

    with gr.Tab('Test Chats'):
        with gr.Row() as select_author:
            author = gr.Dropdown(authors, value=authors[0], label='Author', interactive=True)
            language = gr.Dropdown(
                value='Español', choices=['Español', 'English', 'Português'], label='Language'
            )
            chat_btn = gr.Button(value='Start chat')

        # ------------------------------------- Chat -------------------------------------------
        with gr.Row(visible=False) as chatbot:
            with gr.Column():
                with gr.Row():
                    video = gr.Video(interactive=False, label='Video', autoplay=True)
                with gr.Row():
                    output_audio = gr.Audio(interactive=False, label='Audio', autoplay=True)
                with gr.Row():
                    checkbox = gr.Checkbox(
                        label='Get video', info='Remember that this has a cost'
                    )
                    radio = gr.Radio(
                        choices=['small', 'big'], value='small',
                        label='GPU', info='Select the size of GPU (at the moment they are the same)',
                        visible=False
                    )
                    predict_language = gr.Checkbox(label='Predict language')

            with gr.Column():
                with gr.Row():
                    chat = gr.Chatbot(label='Chat')
                with gr.Row():
                    text = gr.Text(label='Write your question')
                    audio = gr.Audio(sources=['microphone'], type='filepath', label='Tell me your question')
                with gr.Row():
                    button_text = gr.Button(value='Submit text')
                    button_audio = gr.Button(value='Submit audio')

    # ------------------------------------- Result's tab ---------------------------------------
    with gr.Tab('Save results'):
        with gr.Row(visible=False) as scores_row:
            with gr.Column(scale=75):
                with gr.Row():
                    scores = [
                        gr.Radio(choices=['Aprobado', 'No aprobado'], label=parameter)
                        for parameter in scores_parameters
                    ]

            with gr.Column(scale=25):
                opinion_box = gr.Textbox(label='Opinion')
                scores_btn = gr.Button(value='Send scores')
                scores_box = gr.Textbox(label='Status', interactive=False)

    # -------------------------------------- Actions -----------------------------------------
    chat_btn.click(
        make_invisible, None, select_author
    ).then(
        make_visible, None, [chatbot, scores_row]
    ).then(
        init_chatbot, [chat, language], [video, chat, user_id]
    )
    import time
    button_text.click(
        play_searching, language, video
    ).then(
        lambda : time.sleep(5), None, None
    ).then(
        get_answer_text,
        [text, chat, user_id, checkbox, radio, predict_language],
        [video, output_audio, chat, text]
    )

    button_audio.click(
        play_searching, language, video
    ).then(
        get_answer_audio,
        [audio, chat, user_id, checkbox, radio, predict_language],
        [video, output_audio, chat, audio]
    )

    scores_btn.click(
        save_scores,
        [author, chat, opinion_box] + scores,
        scores_box
    )

    video.end(
        lambda: 'videos/waiting.mp4', None, video
    )

    output_audio.stop(
        lambda: None, None, output_audio
    )


app.queue()
app.launch(debug=True, auth=(os.environ.get('USERNAME'), os.environ.get('PASSWORD')))