MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.

    Kalliope assistant + MM

    Scheduled Pinned Locked Moved Fun & Games
    58 Posts 10 Posters 41.3k Views 12 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • E Offline
      E3V3A @sispheor
      last edited by

      @sispheor Cool! Thanks a lot for clarifying.

      "Everything I do (here) is for free – altruism is the way!"
      MMM-FlightsAbove, MMM-Tabulator, MMM-Assistant (co-maintainer)

      1 Reply Last reply Reply Quote 0
      • M Offline
        marcnlx
        last edited by marcnlx

        Hi,

        I really love the Kalliope Virtual Assistant. I used the Manual Install (Method #2) option, since the one-liner command failed on my RPi.

        I managed to install Kalliope (“Kalliope version”: “0.5.1b”), but I have some issues having all the messages show in MMM-Kalliope module (in upper_third) on the mirror.

        I have added this to my ~/MagicMirror/config/config.js file:

        {
            module: "MMM-kalliope",
            position: "upper_third",
                                config: {
                                        max: "5",
                                        keep_seconds: "8",
                                        title: "Kalliope",
                                        notification: "KALLIOPE",
                                        payload: "my message"
                                        }
        
        }
        

        I have added this to my ~/kalliope_starter_en/brain.yml file:

        - name: "mm-say"
          signals: []
          neurons:
            - magic_mirror:
                mm_url: "http://127.0.0.1:8080/kalliope"
                notification: "KALLIOPE"
                payload: "{{ kalliope_memory['kalliope_last_tts_message'] }}"
        
        - name: "mm-alert"
          signals:
            - order: "send an alert to magic mirror"
          neurons:
            - magic_mirror:
                mm_url: "http://127.0.0.1:8080/kalliope"
                notification: "SHOW_ALERT"
                payload:
                  title: "my alert title"
                  message: "the message"
                  timer: 5000
        

        And I have added this to the hooks in my ~/kalliope_starter_en/settings.yml file:

        #  on_start_speaking:
          on_start_speaking: "mm-say"
        

        I’m not sure what I am missing here…would anybody be able to help me out?

        I also sometimes have an issue after Kalliope gets triggered by the WakeUp word related to the microphone/audio (but this might also be caused by the mic on the usb webcam I am using…):

        what can i do for you?
        Threshold set to: 4000
        Say something!
        Google Speech Recognition could not understand audio
        I don't recognize that order
        Waiting for trigger detection
        yes sir?
        Threshold set to: 4000
        Say something!
        Google Speech Recognition could not understand audio
        I don't know this order
        Exception in thread Thread-2:
        Traceback (most recent call last):
          File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
            self.run()
          File "/usr/local/lib/python2.7/dist-packages/kalliope-0.5.1b0-py2.7.egg/kalliope/signals/order/order.py", line 84, in run
            self.start_trigger()
          File "/usr/local/lib/python2.7/dist-packages/transitions-0.6.4-py2.7.egg/transitions/core.py", line 382, in trigger
            return self.machine._process(func)
          File "/usr/local/lib/python2.7/dist-packages/transitions-0.6.4-py2.7.egg/transitions/core.py", line 1020, in _process
            self._transition_queue[0]()
          File "/usr/local/lib/python2.7/dist-packages/transitions-0.6.4-py2.7.egg/transitions/core.py", line 398, in _trigger
            return self._process(event_data)
          File "/usr/local/lib/python2.7/dist-packages/transitions-0.6.4-py2.7.egg/transitions/core.py", line 408, in _process
            if trans.execute(event_data):
          File "/usr/local/lib/python2.7/dist-packages/transitions-0.6.4-py2.7.egg/transitions/core.py", line 262, in execute
            self._change_state(event_data)
          File "/usr/local/lib/python2.7/dist-packages/transitions-0.6.4-py2.7.egg/transitions/core.py", line 273, in _change_state
            event_data.machine.get_state(self.dest).enter(event_data)
          File "/usr/local/lib/python2.7/dist-packages/transitions-0.6.4-py2.7.egg/transitions/core.py", line 119, in enter
            event_data.machine.callback(handle, event_data)
          File "/usr/local/lib/python2.7/dist-packages/transitions-0.6.4-py2.7.egg/transitions/core.py", line 990, in callback
            func(*event_data.args, **event_data.kwargs)
          File "/usr/local/lib/python2.7/dist-packages/kalliope-0.5.1b0-py2.7.egg/kalliope/signals/order/order.py", line 92, in start_trigger_process
            self.trigger_instance = TriggerLauncher.get_trigger(settings=self.settings, callback=self.trigger_callback)
          File "/usr/local/lib/python2.7/dist-packages/kalliope-0.5.1b0-py2.7.egg/kalliope/core/TriggerLauncher.py", line 32, in get_trigger
            parameters=trigger.parameters)
          File "/usr/local/lib/python2.7/dist-packages/kalliope-0.5.1b0-py2.7.egg/kalliope/core/Utils/Utils.py", line 140, in get_dynamic_class_instantiation
            return klass(**parameters)
          File "/usr/local/lib/python2.7/dist-packages/kalliope-0.5.1b0-py2.7.egg/kalliope/trigger/snowboy/snowboy.py", line 51, in __init__
            sleep_time=0.03)
          File "/usr/local/lib/python2.7/dist-packages/kalliope-0.5.1b0-py2.7.egg/kalliope/trigger/snowboy/snowboydecoder.py", line 98, in __init__
            stream_callback=audio_callback)
          File "build/bdist.linux-armv7l/egg/pyaudio.py", line 750, in open
            stream = Stream(self, *args, **kwargs)
          File "build/bdist.linux-armv7l/egg/pyaudio.py", line 441, in __init__
            self._stream = pa.open(**arguments)
        IOError: [Errno -9985] Device unavailable
        

        When starting kalliope with the –debug option, I see lines like this in the debug log:

        2018-03-17 13:55:30 :: kalliope-0.5.1b :: Magic_mirror call Magic Mirror MMM-kalliope-API: http://127.0.0.1:8080/kalliope
        2018-03-17 13:55:31 :: kalliope-0.5.1b :: Magic_mirrorcannot get a valid json from returned content
        
        2018-03-17 13:55:09 :: kalliope-0.5.1b :: [NeuronLauncher] replacing brackets from {'notification': 'KALLIOPE', 'mm_url': 'http://127.0.0.1:8080/kalliope', 'is_api_call': True, 'payload': "{{kalliope_memory['kalliope_last_tts_message']}}", 'no_voice': False}, using {}
        2018-03-17 13:55:09 :: kalliope-0.5.1b :: [NeuronLauncher] replacing brackets from KALLIOPE, using {'kalliope_memory': {'kalliope_last_tts_message': 'what can i do for you?'}}
        2018-03-17 13:55:09 :: kalliope-0.5.1b :: [NeuronLauncher] replacing brackets from http://127.0.0.1:8080/kalliope, using {'kalliope_memory': {'kalliope_last_tts_message': 'what can i do for you?'}}
        2018-03-17 13:55:09 :: kalliope-0.5.1b :: [NeuronLauncher] replacing brackets from True, using {'kalliope_memory': {'kalliope_last_tts_message': 'what can i do for you?'}}
        2018-03-17 13:55:09 :: kalliope-0.5.1b :: [NeuronLauncher] replacing brackets from {{kalliope_memory['kalliope_last_tts_message']}}, using {'kalliope_memory': {'kalliope_last_tts_message': 'what can i do for you?'}}
        2018-03-17 13:55:09 :: kalliope-0.5.1b :: [NeuronLauncher] replacing brackets from False, using {'kalliope_memory': {'kalliope_last_tts_message': 'what can i do for you?'}, 'name': 'sir'}
        2018-03-17 13:55:09 :: kalliope-0.5.1b :: Run neuron: "{'name': 'magic_mirror', 'parameters': {'notification': 'KALLIOPE', 'mm_url': 'http://127.0.0.1:8080/kalliope', 'is_api_call': True, 'payload': 'what can i do for you?', 'no_voice': False}}"
        2018-03-17 13:55:09 :: kalliope-0.5.1b :: [Utils]-> get_dynamic_class_instantiation : package path : kalliope.neurons.magic_mirror.magic_mirror
        2018-03-17 13:55:09 :: kalliope-0.5.1b :: [Utils]-> get_dynamic_class_instantiation : loading path : resources/neurons/magic_mirror/magic_mirror.py, as package Magic_mirror
        2018-03-17 13:55:09 :: kalliope-0.5.1b :: [NeuronModule] TTS args: {'name': 'pico2wave', 'parameters': {'cache': True, 'language': 'en-US'}}
        2018-03-17 13:55:09 :: kalliope-0.5.1b :: Magic_mirror call Magic Mirror MMM-kalliope-API: http://127.0.0.1:8080/kalliope
        2018-03-17 13:55:09 :: kalliope-0.5.1b :: Magic_mirrorcannot get a valid json from returned content
        2018-03-17 13:55:09 :: kalliope-0.5.1b :: [NeuronModule] Say() called with message: {'content': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /kalliope</pre>\n</body>\n</html>\n', 'status_code': 404, 'response_header': {'Content-Length': '148', 'X-XSS-Protection': '1; mode=block', 'X-Download-Options': 'noopen', 'X-Content-Type-Options': 'nosniff', 'Content-Type': 'text/html; charset=utf-8', 'Strict-Transport-Security': 'max-age=15552000; includeSubDomains', 'Connection': 'keep-alive', 'Content-Security-Policy': "default-src 'self'", 'Date': 'Sat, 17 Mar 2018 12:55:09 GMT', 'X-Frame-Options': 'SAMEORIGIN', 'X-DNS-Prefetch-Control': 'off'}}
        

        Accessing the URL http://192.168.1.16:8080/kalliope, gives me this:

        Cannot GET /kalliope
        

        I also see the following error using the CURL example (removed the “<” from the beginning on the output of each line):

        pi@mirror:~ $ curl -H "Content-Type: application/json" -X POST -d '{"notification":"KALLIOPE", "payload": "my message"}' http://127.0.0.1:8080/kalliope      
        !DOCTYPE html>
        html lang="en">
        head>
        meta charset="utf-8">
        title>Error</title>
        /head>
        body>
        pre>Cannot POST /kalliope</pre>
        /body>
        /html>
        pi@mirror:~ $
        
        S 2 Replies Last reply Reply Quote 0
        • S Offline
          sispheor @marcnlx
          last edited by

          @marcnlx why are you trying to reach the URL from your browser? It’s an API. It should be accessed from a script only.

          M 1 Reply Last reply Reply Quote 0
          • M Offline
            marcnlx @sispheor
            last edited by

            @sispheor said in Kalliope assistant + MM:

            @marcnlx why are you trying to reach the URL from your browser? It’s an API. It should be accessed from a script only.

            The CURL example gave me this output on the CLI. I was only using my browser to make sure I was able to reach the API.

            Any idea what configuration mistake I could have made?

            1 Reply Last reply Reply Quote 0
            • S Offline
              sispheor @marcnlx
              last edited by

              @marcnlx @marcnlx you’ve set http://127.0.0.1:8080/kalliope for the neuron but the mirror up is 192.168.1.16. doesn’t it?

              Also, notification and payload are not needed in the config of the module.

              M 1 Reply Last reply Reply Quote 0
              • M Offline
                marcnlx @sispheor
                last edited by

                @sispheor said in Kalliope assistant + MM:

                @marcnlx @marcnlx you’ve set http://127.0.0.1:8080/kalliope for the neuron but the mirror up is 192.168.1.16. doesn’t it?

                Also, notification and payload are not needed in the config of the module.

                @sispheor 127.0.0.1 is the localhost IP, 192.168.1.16 is the external IP…the Magic Mirror is available on every IP in use on the RPi (listening address is set to 0.0.0.0).

                I just commented out the notification and payload and thing are now showing on the Mirror! This is really cool! :)

                Okay…now I need to figure out how to build the whole virtual assistant…on to “phase #2”.
                In your demo video I saw a basically complete brain…is there any place where I can find that one? ;)

                S 1 Reply Last reply Reply Quote 0
                • S Offline
                  sispheor @marcnlx
                  last edited by

                  @marcnlx take a look to starter kits. It contains example. Also there is an example of usage of each neuron on the website.
                  Have fun !

                  M 1 Reply Last reply Reply Quote 0
                  • M Offline
                    marcnlx @sispheor
                    last edited by

                    @sispheor said in Kalliope assistant + MM:

                    @marcnlx take a look to starter kits. It contains example. Also there is an example of usage of each neuron on the website.
                    Have fun !

                    I will! I’m going to check everything out later today, thanks!

                    1 Reply Last reply Reply Quote 0
                    • M Offline
                      marcnlx
                      last edited by

                      I tested Kalliope yesterday night and once you know how it works, it’s pretty sweet! ;)

                      Unfortunately I noticed some bugs/issues which are discussed multiple times on Github, so for now I think I will wait until a later release since I need to restart Kalliope multiple times after 2-3 phrases because of pulseaudio issues which I can’t seem to fix:

                      2018-03-18 12:42:27 :: kalliope-0.5.1b :: File found in /home/pi/kalliope_starter_en/trigger/kalliope-EN-12samples.pmdl
                      Exception in thread Thread-2:
                      Traceback (most recent call last):
                        File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
                          self.run()
                      
                        File "/usr/local/lib/python2.7/dist-packages/kalliope-0.5.1b0-py2.7.egg/kalliope/trigger/snowboy/snowboydecoder.py", line 98, in __init__
                          stream_callback=audio_callback)
                        File "build/bdist.linux-armv7l/egg/pyaudio.py", line 750, in open
                          stream = Stream(self, *args, **kwargs)
                        File "build/bdist.linux-armv7l/egg/pyaudio.py", line 441, in __init__
                          self._stream = pa.open(**arguments)
                      IOError: [Errno -9985] Device unavailable
                      
                      S 1 Reply Last reply Reply Quote 0
                      • S Offline
                        sispheor @marcnlx
                        last edited by

                        @marcnlx Uninstall pulse audio and work only with alsa.
                        We’ve remove pulseaudio from our doc.

                        1 Reply Last reply Reply Quote 0
                        • 1
                        • 2
                        • 3
                        • 4
                        • 5
                        • 6
                        • 3 / 6
                        • First post
                          Last post
                        Enjoying MagicMirror? Please consider a donation!
                        MagicMirror created by Michael Teeuw.
                        Forum managed by Sam, technical setup by Karsten.
                        This forum is using NodeBB as its core | Contributors
                        Contact | Privacy Policy