Skip to content

Issue multiple voice commands to Cozmo, and watch him execute all of them sequentially

License

Notifications You must be signed in to change notification settings

rizal72/Cozmo-Voice-Commands

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cozmo voice Commands (CvC)

Issue multiple voice commands to Cozmo, and watch him execute all of them sequentially: highly customizable, you can add new commands with ease. Recognizes English, Italian, French, German, Dutch but it's very easy to add new languages!

IMPORTANT!

Unfortunately Cozmo and Cozmo SDK are no longer supported or updated by their developers so, as time goes by, they will be no longer compatible with newer Python versions and libraries.
Cozmo SDK works well with Python 3.6, so what I sugget is to create a Python virtual environment with that specific version, then let this app run inside it.

I suggest to use Miniconda, because it's easy to specify a custom Python version on the fly.
First create the virtual environment and name it as you like (here I use cvc for simplicity):
conda create -n cvc python=3.6
then activate it:
conda activate cvc
and then you can install CvC package as described below:
pip install --upgrade git+https://github.com/rizal72/Cozmo-Voice-Commands then run it, typing:
cvc

*note: remeber that you will still need portaudio to be installed on your system as described in the installation section below.

Description

You can say "Cozmo, forward 20 THEN right 90", or "Hello Cozmo, my little friend, could you please drive forward for 3 seconds THEN rotate left 90 degrees THEN dance THEN drive back to your charger?", and Cozmo will execute the commands in both cases: the application will always dynamically match the recognized spoken words with the code methods and arguments, it even parses verbs in their different conjugations, and numbers as arguments of the action to perform.

Tested on macOS, Windows and Linux

Two steps installation

Assuming that you've already performed the Cozmo SDK Setup, specific for your platform:

  1. CvC requires portaudio:
  • on MacOS (see Homebrew if you don't know what brew is):
    brew install portaudio

  • on Linux:
    sudo apt-get install flac portaudio19-dev python-all-dev python3-all-dev && pip3 install --user PyAudio

  • on Windows:
    you only need to install git as it is not included by default.

  1. install cvc package:
    pip install --upgrade git+https://github.com/rizal72/Cozmo-Voice-Commands
  • If you are having permission issues (happens mainly on Linux) try:
    pip install --upgrade --user git+https://github.com/rizal72/Cozmo-Voice-Commands

note: to update CvC, repeat step 2.

Usage

  • run command cvc from the Terminal application.
    • Optional arguments:
      --version[-V]: print version and exit
      --no-wait[-N]: enable deprecated continuous listening mode
      --log[-L]: enable verbose logging
  • choose speech recognition language and press enter.
  • press SHIFT when you are ready, then issue your commands by voice (you have 5 seconds to start talking before it Timeouts), not too far from your PC, taking care to include the words "Cozmo" or "Robot" before any command you'll say: "Ok COZMO, my friend, would you enjoy DANCING?"
    You can issue multiple commands at once: use the word "THEN" ("POI" in Italian, "ALORS" in French, "DAARNA" in Dutch, and so on...), to separate them. Right now these commands will be executed in a sequence. I plan to make some of them to be executed in parallel in the near future.
  • A list of supported commands and arguments is provided at runtime.

Customization

From version 0.6 you can now add new languages and commands with ease: inside cvc/languages folder you'll find one .json file for each language (i.e. en.json). To add a new command just duplicate one of the existing commands inside the .json, changing its parameters with the desired ones (be careful to keep the same structure):

  • DO NOT FORGET to change the id number, that decides language order (it's the first parameter).
  • 'action' is the name of the method/function you are going to create in voice_commands.py
  • 'words' are the recognized words
  • 'usage' is a description/usage of your command

then open voice_commands.py and create the new method/function for your command, just copying an existing one, taking care to use the same name you set in the 'action' parameter, inside the .json.
You can even add new words to existing commands, only be careful to not use the same words in different commands.
To add a new language, duplicate one of the included .json language files, using the same naming, and translate its contents. Your new language will be automatically loaded on startup, and a new language menu item automatically generated ;)

Note for Developers:

If you want to just run the App without installing the package, you need to execute ./cvc.py from the root folder, after you have cloned/downloaded the repository content.

Todo next

  • Allow more commands at once, to be executed in parallel, using the word "and".

Please note: Cozmo does not have built-in microphone, so you should talk with your computer ;)

If you want the code, get it here: https://github.com/rizal72/Cozmo-Voice-Commands

About

Issue multiple voice commands to Cozmo, and watch him execute all of them sequentially

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages