• Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
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.

VoiceControl module

Scheduled Pinned Locked Moved Utilities
79 Posts 27 Posters 97.9k Views 29 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.
  • R Offline
    Rattenjunge8080
    last edited by May 1, 2017, 9:19 AM

    Hello,

    I’m new here, and I need a little bit help…
    I still don’t get the concept of this module for 100%, but I will describe my problem as accurate as possible.

    So I downloaded the module and installed python-pyaudio. I created a PMDL-File (here: http://filehorst.de/d/bDfbfCBE), tested it and saved it in the MagicMirror-Location (and many other locations…). I recorded it on the Pi btw, microphone is also still working.

    I don’t know if I miss anything, but when I start the MM, the modules are totally fine, I keep saying my command (“Go to sleep”), but nothing happens. I also checked the dev-mode and set breakpoints…but like I said, I’m not 100% sure what every class is doing in particular. Here is my code, do I miss anything?

    config.js

    {
    			module: "helloworld1",
    			position: "bottom_right",	// This can be any of the regions.
    			config: {
    				// See 'Configuration options' for more information.
    				text: "Hello world!"
    			}
    		},
    		{
                module: 'voicecontrol',
                config: {
                    models: [
                        {
                            keyword: "gotosleep",   // keyword 
                            file: "GoToSleep.pmdl", // trained model file name
                            message: "gotosleep"   // notification message that's broadcast in the MagicMirror app
                        },
    					{
                            keyword: "wake up",   // keyword 
                            file: "Wake_up.pmdl", // trained model file name
                            message: "wake_up"   // notification message that's broadcast in the MagicMirror app
                        },
                    ]
                }
            },
    

    Voicecontrol.js

    
    'use strict';
    
    Module.register("voicecontrol", {
    
    	// Default module config.
    
        defaults: {
    		models: [
    					{
    						keyword: "gotosleep",   // keyword 
    						description: "Go To Sleep",
                            file: "GoToSleep.pmdl", // trained model file name
                            message: "gotosleep"   // notification message that's broadcast in the MagicMirror app
    					},
    					{
    						keyword: "Hide Camera",
    						description: "Say 'Hide Camera' to hide camera",
    						file: "hideCamera.pmdl",
    						message: "HIDE_CAMERA"
    					},
    					{
    						keyword: "Selfie",
    						description: "Say 'Selfie' when camera is visible",
    						file: "selfie.pmdl",
    						message: "SELFIE"
    					},
    				]
    	},
    
        start: function() { 
    
            this.sendSocketNotification("CONNECT", this.config);
    
        },
    
        getStyles: function() {
    		return ['voicecontrol.css'];
    	},
    
        socketNotificationReceived: function(notification, payload){
            if (notification === "KEYWORD_SPOTTED"){
                //Broadcast the message
                this.sendNotification(payload.message, {type: "notification"});
            }
    	},
    
        getDom: function() {
            var wrapper = document.createElement("div");
            var header = document.createElement("header");
            header.innerHTML = "Voice Commands";
            wrapper.appendChild(header);
            var models = this.config.models;
    
            models.forEach(function(model) {
                var command = document.createElement("div");
                command.innerHTML = model.description;
                command.className = "small dimmed top";
                wrapper.appendChild(command);
            }, this);
    
            return wrapper;
        }
    
    });
    
    

    helloworld1.js (I wanted to log the notification to see if it works…)

    Module.register("helloworld1",{
    
    	// Default module config.
    	defaults: {
    		text: "World!"
    	},
    	
    	start: function() {
    		Log.log("Starting module: " + this.name);
    	},
    
    	notificationReceived: function(notification, payload, sender) {
    				
    		if (notification === "gotosleep"){
    			Log.log("Go To Sleep");
    		}
    	},
    
    	// Override dom generator.
    	getDom: function() {
    		var wrapper = document.createElement("div");
    		wrapper.innerHTML = this.config.text;
    		return wrapper;
    	}
    });
    
    
    1 Reply Last reply Reply Quote 0
    • R Offline
      romain
      last edited by May 2, 2017, 7:22 AM

      The code look’s fine to me at first glance. (You don’t need to have the { keyword: "gotosleep", // keyword description: "Go To Sleep", file: "GoToSleep.pmdl", // trained model file name message: "gotosleep" // notification message that's broadcast in the MagicMirror app }, in both config file and the voice controle.js at the same time though. But that’s not an issue.)

      Maybe try to add a position for the voicecontrol module just to be sure the module itself doesn’t crash (If you add a position it should print the description of the words on screen. If nothing appear it probably mean something went wrong.)
      If nothing wrong and the cd ~/MagicMirror/ ; DISPLAY=:0 npm start dev didnt show an error, maybe the issue is with your mic configuration. If the module dosn’t hear you it might not work.

      Add a Log.log("Helloworld1 received " + notification); before the if in the helloword1.js . SO you print every single notification you receive and maybe add a Log in the socketNotificationReceive of voicecontrol.js to see if it spot your keywords at all.

      also, do you use your microphone with this module only or with multiple application ? Because by default, I think, a microphone can only be open by one thing at the time. So try toclose every application that use your microphone and run the mirror. If the that’s work you might to configure your microphone so it can be open in multiple application

      1 Reply Last reply Reply Quote 0
      • C Offline
        claudia
        last edited by May 3, 2017, 3:51 AM

        im trying to get the module to work on my Magic Mirror but without any luck so far. I have a google maps API that opens in an iframe (iFrame reload module) which i currently have to click on my Magic Mirror to display. I am trying to instead have it open using voice control rather than clicking on it. Any ideas on how to get this to work?

        R 1 Reply Last reply May 3, 2017, 7:11 AM Reply Quote 0
        • R Offline
          romain @claudia
          last edited by May 3, 2017, 7:11 AM

          @claudia first thing first. Did you made a snowboy word ? then did you put the file in your MagicMirror folder ? Then did you put it in your configuration (you should probably delete their example since they didn’t provide the file to go with it. inside the config from the voicecontrol.js too).
          Then when you say the word, is the module picking it up and send the associate notification ?
          You can know if the notification is sended by runing the mirror in dev mode so you can see the console and use some module to print the notification they receive (I think some default module do it already).

          When you got this part to work, you can proceed to the next step, which is catch the notification in the Iframe module

          C 1 Reply Last reply May 3, 2017, 10:41 AM Reply Quote 0
          • C Offline
            claudia @romain
            last edited by May 3, 2017, 10:41 AM

            @romain thanks for getting back to me. I have made a snowboy word (showmap.pmdl) , as well as adding it into the magic mirror folder, and changing the config.js file and the voice control.js file accordingly.

            To see if the module is picking up the word, how would you run the mirror in dev mode? I’m not sure how to do this.

            Thanks again.

            R 1 Reply Last reply May 3, 2017, 12:14 PM Reply Quote 0
            • R Offline
              romain @claudia
              last edited by May 3, 2017, 12:14 PM

              @claudia To run it in dev mode first close the current mirror. If you followed the autostart thing, it will be pm2 stop mm. Then, you need to go in the MagicMirror folder. cd ~/MagicMirror/.
              If you are directly on the raspberry, you need to write the following command npm start dev
              If you accessing your raspberry from a remote location through ssh (or vnc), you’ll need to run DISPLAY=:0 npm start dev . the display thing is to told your raspberry the visual should be run on the raspberry screen.
              The mirror should open allongside a browser. within the brower you’ll have few tab. One of the tab should be “console”. If it’s not selected, click on it.

              every "console.log(“message”) will appear on the console. and every Log.log(“message”) will appear directly on the terminal if I’m not mistaking.

              when you finished with debug mode, you can close the mirror by sending the kill signal (press ctrl + c on your keyboard. If you are using a mac, I guess it would be command + c . Not sure about that). Or you can close the terminal window.

              C 1 Reply Last reply May 4, 2017, 2:17 AM Reply Quote 0
              • C Offline
                claudia @romain
                last edited by May 4, 2017, 2:17 AM

                @romain so i am running it through VNC, however the command DISPLAY=:0 npm start dev didn’t work, and npm start dev did. Not sure if that makes a difference or not, but when i said the hot word, i received this error, so i guess that means the module is picking up my voice:
                0_1493863724300_upload-44f0cd21-41ec-4d08-a3f5-44b4568a49af

                The way i tried to open the iFrame, which i suspect is wrong since it isn’t working, was to add this to the iFrame module:

                
                 notificationReceived: function(notification, payload, sender) {
                
                		if (notification === "SHOW_MAP"){
                			http://localhost:8080/modules/MMM-iFrameReload/Maps.html
                			this.media.play();
                		}
                
                    
                	},
                
                

                Thanks

                R 1 Reply Last reply May 4, 2017, 7:25 AM Reply Quote 0
                • R Offline
                  romain @claudia
                  last edited by May 4, 2017, 7:25 AM

                  @claudia It sure does look like the issue came from the IframeReload module indid. It seem that the “this.media” wasn’t initialized since it say that it’s “undefined”.
                  Where did you initialized that variable ?

                  C 1 Reply Last reply May 4, 2017, 7:44 AM Reply Quote 0
                  • C Offline
                    claudia @romain
                    last edited by May 4, 2017, 7:44 AM

                    @romain woops, that seemed to be left over from a previous example and I’m not sure what to replace it with.

                    R 1 Reply Last reply May 4, 2017, 7:46 AM Reply Quote 0
                    • R Offline
                      romain @claudia
                      last edited by romain May 4, 2017, 7:48 AM May 4, 2017, 7:46 AM

                      @claudia copy past the entire file so I can see If I know what to do here. Maybe do it as private message since it’s begin to not be about voicecontrol anymore

                      1 Reply Last reply Reply Quote 0
                      • 1
                      • 2
                      • 3
                      • 4
                      • 5
                      • 6
                      • 7
                      • 8
                      • 8 / 8
                      8 / 8
                      • First post
                        71/79
                        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