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