File size: 2,832 Bytes
6925c40
179cca4
 
 
6925c40
179cca4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6925c40
 
179cca4
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
import gradio as gr
import random, json
from googletrans import Translator
from transformers import pipeline

translator = Translator()
sentiment_model = pipeline("sentiment-analysis", model="nlptown/bert-base-multilingual-uncased-sentiment")

with open("questions.json", "r") as f:
    questions = json.load(f)

with open("chatbot_lines.json", "r") as f:
    chatbot_lines = json.load(f)

# Helper functies
def get_question(mode):
    return random.choice(questions[mode])

def process_input(audio, lang_from, lang_to):
    text = "(Gesproken tekst hier invoegen)"
    translation = translator.translate(text, src=lang_from, dest=lang_to).text
    sentiment = sentiment_model(text)[0]
    emotion = f"{sentiment['label']} ({sentiment['score']:.2f})"
    # Chatbotreactie afhankelijk van type vraag
    if sentiment['label'].lower() in ["1 star", "2 stars"]:
        botline = random.choice(chatbot_lines["pittig"])
    else:
        botline = random.choice(chatbot_lines["grappig"])
    return text, translation, emotion, botline

with gr.Blocks() as demo:
    gr.Markdown("## ๐ŸŽญ Relatiegame voor 2 spelers op dezelfde computer")

    with gr.Row():
        speler1_taal = gr.Dropdown(["en", "pl"], label="Speler A spreekt", value="en")
        speler2_taal = gr.Dropdown(["pl", "en"], label="Speler B spreekt", value="pl")

    mode = gr.Radio(["emotioneel", "speels"], label="Soort vraag")
    vraagveld = gr.Textbox(label="Vraag", interactive=False)
    nieuwevraag = gr.Button("Nieuwe vraag")

    with gr.Row():
        audio1 = gr.Audio(source="microphone", type="filepath", label="๐ŸŽ™๏ธ Speler A opname")
        audio2 = gr.Audio(source="microphone", type="filepath", label="๐ŸŽ™๏ธ Speler B opname")

    out1 = gr.Textbox(label="Transcriptie Speler A")
    trans1 = gr.Textbox(label="Vertaling voor Speler B")
    emo1 = gr.Textbox(label="Emotie Speler A")
    bot1 = gr.Textbox(label="๐Ÿค– Opmerking Chatbot A")

    out2 = gr.Textbox(label="Transcriptie Speler B")
    trans2 = gr.Textbox(label="Vertaling voor Speler A")
    emo2 = gr.Textbox(label="Emotie Speler B")
    bot2 = gr.Textbox(label="๐Ÿค– Opmerking Chatbot B")

    nieuwevraag.click(fn=get_question, inputs=mode, outputs=vraagveld)

    def run_a(a, l1, l2): return process_input(a, l1, l2)
    def run_b(b, l2, l1): return process_input(b, l2, l1)

    knop = gr.Button("๐ŸŽฎ Beiden ingesproken, verwerk antwoord")
    knop.click(run_a, inputs=[audio1, speler1_taal, speler2_taal], outputs=[out1, trans1, emo1, bot1])
    knop.click(run_b, inputs=[audio2, speler2_taal, speler1_taal], outputs=[out2, trans2, emo2, bot2])

    gr.Markdown("""
    ๐Ÿ” Blijf spelen. Lach samen. Voel samen. Begrijp elkaar beter.
    ๐Ÿค– Onze chatbot maakt het luchtig, maar de diepgang zit in jullie antwoorden.
    """)

if __name__ == "__main__":
    demo.launch()