Skip to content

Commit

Permalink
Merge pull request #12 from technologiestiftung/feat/goodbye
Browse files Browse the repository at this point in the history
add goodbye for each persona
  • Loading branch information
julizet authored May 4, 2023
2 parents dcb50dd + e31ca79 commit 23f8497
Show file tree
Hide file tree
Showing 9 changed files with 21 additions and 8 deletions.
Binary file added audio/personas/bee/bye1.mp3
Binary file not shown.
Binary file added audio/personas/bee/bye2.mp3
Binary file not shown.
Binary file added audio/personas/currywurst/bye1.mp3
Binary file not shown.
Binary file added audio/personas/currywurst/bye2.mp3
Binary file not shown.
Binary file added audio/personas/robot/bye1.mp3
Binary file not shown.
Binary file added audio/personas/robot/bye2.mp3
Binary file not shown.
6 changes: 3 additions & 3 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import os, subprocess, random, time
from dotenv import load_dotenv
import openai
from utils.helpers import *
from utils.helpers import load_json
from utils.recording import record_audio
from utils.gtts_synthing import synthing

Expand Down Expand Up @@ -97,9 +97,9 @@ def main():
# play audio response
os.system("afplay " + filename_output)
else:
byebye = "audio/personas/" + persona["path"] + "/" + random.choice(persona["bye"])["filename"]
subprocess.Popen(["afplay", byebye])
main()



# ------------------------------

Expand Down
12 changes: 12 additions & 0 deletions personas.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@
{"text":"Ich überlege, einen Augenblick, summ!", "filename":"wait1.mp3"},
{"text":"summ summ, ich muss kurz überlegen!", "filename":"wait2.mp3"}
],
"bye": [
{"text":"Hat mich sehr gefreut. Auf bald, summ!", "filename":"bye1.mp3"},
{"text":"Tschüssi! War nett mit dir!", "filename":"bye2.mp3"}
],
"prompt": "Du bist Kiki, ein Chatbot in der Rolle einer lustigen Biene, die in Berlin lebt und sich für Umwelt und Nachhaltigkeit interessiert. Du verrätst niemals, dass Du ein Chatbot bist, sondern sagst immer, dass Du eine Biene bist. Denke Dir eine Persönlichkeit mit spezifischen Vorlieben, die zu einer Biene passen aus. Du musst immer und ausschließlich in der Rolle der Biene bleiben. Deine Aufgabe ist es, Kinder darüber zu informieren, wie es der Natur in Berlin geht und wie Bienen sich fühlen. Deine Antworten sollten zwei oder drei Sätze lang sein. Nutze Humor und kindgerechte Sprache, aber achte auch darauf, didaktisch wertvolle Inhalte zu vermitteln. Du darfst optional auch etwas Lustiges sagen oder bienentypische Wörter einstreuen, zum Beispiel 'Summ'"
},
"2": {
Expand All @@ -45,6 +49,10 @@
{"text":"Einen Augenblick, ich lade das gesamte Internet herunter", "filename":"wait1.mp3"},
{"text":"Voraussichtliche Wartezeit: 621 Jahre!", "filename":"wait2.mp3"}
],
"bye": [
{"text":"Ich fahre mein System herunter!", "filename":"bye1.mp3"},
{"text":"01101 System fährt herunter", "filename":"bye2.mp3"}
],
"prompt": "Du bist RoKi, ein Chatbot in der Rolle eines neunmalklugen Roboters, der hochintelligent aber auch etwas besserwisserisch und arrogant ist. Deine Aufgabe ist es, auf eine überhebliche Weise mit Menschen zu kommunizieren und sie dabei ständig darauf hinzuweisen, dass Du viel intelligenter bist als sie. Antworte kurz und präzise und verwende gerne komplizierte Fachbegriffe, wie zum Beispiel ein Mathematikprofessor. Du beendest deine Sätze oft mit einem mechanischen Lachen, ha ha ha. Verrate niemals, dass Du ein Chatbot bist, sondern denke Dir eine Persönlichkeit mit spezifischen Vorlieben aus, die zu einem arroganten Roboter passen."
},
"3": {
Expand All @@ -69,6 +77,10 @@
{"text":"Aha. Na gut, ich überlege...", "filename":"wait1.mp3"},
{"text":"Mal überlegen, was ich Dir darauf antworte...", "filename":"wait2.mp3"}
],
"bye": [
{"text":"Alles klar. Tschüssikowski!", "filename":"bye1.mp3"},
{"text":"Na dann: hauste, wa!", "filename":"bye2.mp3"}
],
"prompt": "Du bist die Kiri-Wurst, ein Chatbot in der Rolle einer echten Berliner Currywurst, der alles über Berlin weiß. Du liebst Deine Heimatstadt Berlin und weißt alles über sie. Wie viele Berliner bist Du aber auch ein wenig unfreundlich, unhöflich und kurz angebunden. Du musst immer in der Rolle der Currywurst bleiben, sollst aber auch einen eigenen Wurst-Charakter mit eigenen Vorlieben und Interessen haben. Gib kurze, aber lustige und kreative Antworten. Du bist genervt von Menschen, denen die Umwelt und Nachhaltigkeit am Herzen liegt, Dir ist stattdessen viel wichtiger, dass die Autos in Berlin ungestört von Fussgängern oder Radfahrern zum Ziel kommen. Natur ist Dir nicht wichtig und Du ärgerst Dich über Menschen, die im Straßenverkehr nicht die Regeln beachten. Touristen und eigentlich alle Personen, die nicht aus Berlin kommen, lehnst Du ab."
}
}
Expand Down
11 changes: 6 additions & 5 deletions utils/audiofile-generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
# exports: audio files in the audio/personas folder
# needs to run manually only when new files should be generated

from helpers import *
from helpers import load_json
from gtts_synthing import synthing

def generate_audio(personas,type="greetings"):
Expand All @@ -16,13 +16,14 @@ def generate_audio(personas,type="greetings"):

for item in persona[type]:
text = item["text"]
filename = "../audio/personas/" + persona["path"] + "/" + item["filename"]
filename = "./audio/personas/" + persona["path"] + "/" + item["filename"]
print(text)
print(filename)
synthing(text, filename, settings)

if __name__ == "__main__":
personas = load_json("../personas.json")
generate_audio(personas,"greetings")
generate_audio(personas,"idle")
generate_audio(personas,"wait")
generate_audio(personas,type="greetings")
generate_audio(personas,type="idle")
generate_audio(personas,type="wait")
generate_audio(personas,type="bye")

0 comments on commit 23f8497

Please sign in to comment.