love-tester / app.py
Mischa88's picture
Create app.py
179cca4 verified
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()