Members | Sign In
Legacy MOVI User Community Forum (readonly) > MOVI Question & Answers
avatar

Keyword recognition

posted Jan 16, 2018 06:04:59 by tws6543
How do we program the MOVI to detect the word which we don't add inside the program? For example. MOVI will ask "What is your name?" Beep and we reply"John" or "My name is John", then Beep and it will reply "John, nice to meet you."
page   1
7 replies
avatar
GeraldFriedland said Jan 17, 2018 00:57:32
I am afraid, that is not possible.

In fact, no speech recognizer exists that can do that. The only solution is to add a huge amount of vocabulary.

Gerald
avatar
tws6543 said Jan 17, 2018 07:39:37
Hi Gerald,
Thanks for the reply.
Is it possible to opt out the callsign command in the program? ...so that the user does not need to keep calling callsign command to proceed?
We have tried once with nothing in callsign command but there was constant beep and we couldn't proceed.

avatar
GeraldFriedland said Jan 19, 2018 16:15:28
Yes. There are several ways documented in the examples. A popular way is to do push-to-talk or you can set the callsign to empty: Then MOVI reacts to any sound.

Gerald
avatar
tws6543 said Jan 22, 2018 02:10:19
Hi Gerald,
Thanks for the reply.
I realised that if I put ask() in the setup, it will not function sometimes when i clicked the reset button. How can I do to prevent this problem?
I faced another problem when trying the recognition. When MOVI cannot detect anything, the program will stop or told me that he cannot understand hard even though my program is a continuous program. My program is something like an AI, which i put the ask() in the loop, when MOVI detect some sentence, it will ask something. How can I do to make sure that the program is able to run continuously?
[Last edited Jan 22, 2018 02:28:43]
avatar
GeraldFriedland said Jan 23, 2018 01:37:43
As described in the manual, ask() is not supposed to be used in setup(). You can use it in setup() but only after all other initialization functions are done.

I am not sure I understand your other question completely. Please take a look in the examples: You can catch any MOVI event in loop(). My guess is that you do not catch the event that is returned when the error you described occurs?

Maybe you can post the relevant part of the program for us to take a look?

Gerald

avatar
tws6543 said Jan 23, 2018 02:21:59
Hi Greald
Thanks for the reply.
My problem is when the system said "sorry I cannot understand hard", the program will be stop. May I know the what is the event of "sorry I cannot understand hard" to put inside the if else loop to prevent the program stopping?
And I faced another problem while doing the communication between C# and MOVI Arduino Program. I have posted a the question in StackOverflow and hope you can give me some solution to fix this. Here is the link of my StackOverflow Question.
https://stackoverflow.com/questions/48393072/communication-between-c-sharp-and-arduino?noredirect=1#comment83774257_48393072
avatar
GeraldFriedland said Jan 25, 2018 01:56:30
Your program doesn't work because you have two different readers reading from the serial port.

signed int res=recognizer.poll();

  if(Serial.available() > 0){

    String data = Serial.readString();

    if(data = "START"){
             recognizer.ask("Hello. My name is John");
    }
  }


This should just look like this:

signed int res=recognizer.poll();
  if(res > 0){ // some sentence recognized
    if(res == 1){ // sentence 1
             recognizer.ask("Hello. My name is John");
    }
  }
  if(res < 0){
    // some error occurred, including the one you are describing  
  }
 


In anyways, there is no need to also read from serial.

Gerald
[Last edited Jan 25, 2018 01:57:55]
Login below to reply: