Hi Inmoov  Core Team,

I am facing problem with myrobotlab that robot hearing background noise and interprting  it as a possible command. or Give random answer. plus many time it take his output sound as input command.

Is it possible to incorpate a "trigger word" into the voice command? The program would have to hear this word before interpeting the command.

 command's like    Robo (any voice command in _inmoovGestures.aiml) , Robo look on right side, Robo look in middel .....etc "ROBO is Name of Robot given in fresh installation will be his trigger word " , without this word it does nothing.

Just an idea/suggestion, it might make running the robot in public where there is a lot of backgroung noise easier. it will take perticular command and not the other talk which public talk each other .


5 years 2 months ago

Yes, that would be a great idea to have a trigger word. Looked into it, and the best solution I can find if a wakeword engine called Snowboy. It's the same engine that the Alexa Java client uses, and from my tests it is incredibly accurate. The downside is that Snowboy is packaged as a Linux native library with Swig Java bindings, making it difficult to use on Windows or Mac. It'll take a bit to create the necessary services and interfaces, but in the meantime you can intercept the text from the speech recognition interface and only pass the text to the chatbot if the text begins with the keyword. That can be done in your Python code, I'll put up an example here in a bit.


Step #1 Look at AbstractSpeechRecognizer interface and determine what is a meaningful function name and parameters to add to it to support the context of a Tag name.

this will be the file... 


Step #2 After a quick little survey on Google .. it appears the common name for this concept is "Wake Word".

So, to make thing simple we'd add a setWakeWord(String word) method