Переглянути джерело

say neurone can now handle list of messae to play randomly

nico 8 роки тому
батько
коміт
424612cacd
5 змінених файлів з 35 додано та 7 видалено
  1. 1 1
      core/MainController.py
  2. 1 1
      core/OrderAnalyser.py
  3. 2 2
      neurons/Neurone.py
  4. 16 2
      neurons/say/say.py
  5. 15 1
      test.py

+ 1 - 1
core/MainController.py

@@ -41,7 +41,7 @@ class MainController:
         # pause the snowboy process
         self.pause_jarvis_trigger()
         print "Start listening for order"
-        Say("oui monsieur?")
+        Say(message="oui monsieur?")
         self.order_listener.loadSTTPlugin()
 
     def analyse_order(self, order):

+ 1 - 1
core/OrderAnalyser.py

@@ -24,7 +24,7 @@ class OrderAnalyser:
             whens = el["when"]
             for when in whens:
                 brain_order = when["order"]
-                print "order to test: %s" % brain_order
+                # print "order to test: %s" % brain_order
                 if self._spelt_order_match_brain_order(brain_order):
                     print "Order found! Run neurons: %s" % el["neurons"]
                     neurons = el["neurons"]

+ 2 - 2
neurons/Neurone.py

@@ -5,8 +5,8 @@ class Neurone:
     def __init__(self, stt=None, tts=None):
         # TODO load the stt and tts from settings
         self.stt = "google"
-        # self.tts = "pico2wave"
-        self.tts = "voxygen"
+        self.tts = "pico2wave"
+        #self.tts = "voxygen"
 
     def say(self, message):
         # here we use the tts to make jarvis talk

+ 16 - 2
neurons/say/say.py

@@ -1,4 +1,9 @@
 from neurons import Neurone
+import random
+
+
+class NoMessageException(Exception):
+    pass
 
 
 class Say(Neurone):
@@ -6,5 +11,14 @@ class Say(Neurone):
         Neurone.__init__(self)
 
         # get message to spell out loud
-        message = kwargs.get('message', "")
-        self.say(message)
+        message = kwargs.get('message', None)
+        # user must specify a message
+        if message is None:
+            raise NoMessageException("You must specify a message string or a list of messages as parameter")
+        else:
+            # check if it's a single message or multiple one
+            if isinstance(message, list):
+                # then we play randomly one message
+                self.say(random.choice(message))
+            else:
+                self.say(message)

+ 15 - 1
test.py

@@ -1,3 +1,4 @@
+# coding=utf-8
 from core import ConfigurationManager
 from core.NeuroneLauncher import NeuroneLauncher
 from core.OrderAnalyser import OrderAnalyser
@@ -42,5 +43,18 @@ logger.setLevel(logging.DEBUG)
 #
 #     # test_multi_args(**el["neurons"][0]["say"])
 
-Say(message="bonjour monsieur")
+# test unique message
+# Say(message="A vôtre écoute")
+
+# test multiple message
+messages = list()
+messages.append("Je vous écoute")
+messages.append("Oui monsieur?")
+messages.append("Que puis-je faire pour vous?")
+messages.append("Monsieur?")
+messages.append("A vôtre écoute")
+messages.append("J'écoute")
+
+Say(message=messages)
+