Arduino+EasyVR : a little help in programming

In your loop you have the code:

  do
  {
    
    //Serial.println("can do some processing while waiting for a spoken command");
  }
  while (!easyvr.hasFinished());

You just need to add something there to check if a previous command has completed and if not, reissue the command.

Another strategy would be to reorganize your loop so that on entry it checks for a complete VR command and if present handles it. Otherwise it checks for the completion of the previous VR command response and if complete, re-initiates it.

With programming that responds to external events it is never a good idea to have a loop like the one I copied as it does not allow the S/W to deal with anything else until the loop's exit condition is met. Much better to enter loop(), check and respond to all conditions and then exit. The Arduino S/W will repeat the loop. You need not do that in your code.

HTH