-
Notifications
You must be signed in to change notification settings - Fork 1
/
KuriProgram.py
52 lines (42 loc) · 1.9 KB
/
KuriProgram.py
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
""" =================================================================
File: KuriProgram.py
This file contains code that runs the command-line interface for the Kuri robot.
Authors: Anh Nguyen, Lily Irvin, Ryan Specht
Contributors: Emiliano Huerta, James Yang
==================================================================="""
from subprocess import Popen, PIPE
import io
import time
from SentimentDetector import SentimentDetector
from SpeechRecognizer import SpeechRecognizer
from FacialRecognition import FacialRecognizer
class KuriProgram:
"""Sets up and manages all the variables for the program"""
def __init__(self, proc):
"""Sets up a new sentiment detector and a new speech recognizer and
asks for communication method"""
self.sd = SentimentDetector()
self.sr = SpeechRecognizer()
self.cap = FacialRecognizer()
self.proc = proc
def startKuri(self):
"""Starts the program using chat or speech"""
self.useSpeech()
def useSpeech(self):
"""Displays the Kuri robot and repeatedly takes in user input in speech form,
while continuously updating the robot's face and heart light"""
# Implements a subprocess to run the Kuri robot simultaneously with the user input loop
proc_stdin = io.TextIOWrapper(self.proc.stdin, encoding='utf-8', line_buffering=True)
# self.cap.captureImage() this is for image processing
while True:
name = self.cap.recognizeFace()
time.sleep(1.5)
self.sr.kuri_speak(name + "How may I help you?")
self.sr.response(self.sr.getSpeech())
def RunKuriProgram():
"""Sets up the KuriProgram and its widgets and makes it go simultaneously with the KuriBot"""
proc = Popen(["python KuriBot.py"], shell=True, stdin=PIPE, close_fds=True)
k = KuriProgram(proc)
k.startKuri()
if __name__ == "__main__":
RunKuriProgram()