Speech Recognition

From RobotinoWiki

Introduction

Robotino sr icon 64.png Robotino can now comprehend basic human speech commands. This feature is integrated in the v2.4 OS for both 1GB and 4GB CF cards. The setup is preconfigured for a Logitech ClearChat PC Wireless Stereo Headset. Read below how to modify the setup to fit your audio device.

{{#ev:youtube|VNE9QJsZv-s}}

Package links

CF card images

Julius

Speech recognition

Robotino has already been trained for a voice but this may not work for everyone. In case it doesn't, then a new acoustic model will have to be created for that person. There are two ways to do this

  1. Recommended The acoustic model is created by us and we just need your training data -> Recording data for speech recognition training
  2. Creating the acoustic model yourself

Setup audio devices

When the Logitech ClearChat headset is plugged into Robotino's USB port, the udev rule "/etc/udev/rules.d/99-robotinosr.rules" matches

SUBSYSTEMS=="usb", KERNEL=="hiddev[0-9]*", SYSFS{idVendor}=="046d", SYSFS{idProduct}=="0a12", RUN+="/usr/local/OpenRobotinoAPI/1/daemons/srd.sh start", SYMLINK+="headset"

udev runs "/usr/local/OpenRobotinoAPI/1/daemons/srd.sh start"

Copy "/etc/udev/rules.d/99-robotinosr.rules" to "/etc/udev/rules.d/99-myheadset.rules" and modify the new rule to fit your hardware. How to do this can be read here.

"/usr/local/OpenRobotinoAPI/1/daemons/srd.sh" uses the "/usr/local/OpenRobotinoAPI/1/daemons/configure_alsa.sh" to write a valid alsa configuration to "/root/.asoundrc". The audo interface from which card and device number are taken is given in "/etc/robotino/sr/devicename". Modify this file to match the output from "aplay -l".

Test the setup by running "/usr/local/OpenRobotinoAPI/1/daemons/configure_alsa.sh" and see if "/root/.asoundrc" is reasonable. Then run "/usr/local/OpenRobotinoAPI/1/daemons/srd.sh start". If this works test your udev rule by detaching and reattaching your USB audio device and see if srd comes up.

Commands recognized by Robotino

Robotino can currently recognize the following commands:

ROBOTINO STOP

ROBOTINO ROTATE *NUMBER* DEGREES
ROBOTINO ROTATE *NUMBER* *NUMBER* DEGREES
ROBOTINO ROTATE *NUMBER* *NUMBER* *NUMBER* DEGREES

ROBOTINO ROTATE MINUS *NUMBER* DEGREES
ROBOTINO ROTATE MINUS *NUMBER* *NUMBER* DEGREES
ROBOTINO ROTATE MINUS *NUMBER* *NUMBER* *NUMBER* DEGREES

ROBOTINO MOVE FORWARD *NUMBER* METERS
ROBOTINO MOVE FORWARD *NUMBER* *NUMBER* METERS
ROBOTINO MOVE FORWARD *NUMBER* *NUMBER* *NUMBER* METERS
ROBOTINO MOVE FORWARD *NUMBER* CENTIMETERS
ROBOTINO MOVE FORWARD *NUMBER* *NUMBER* CENTIMETERS
ROBOTINO MOVE FORWARD *NUMBER* *NUMBER* *NUMBER* CENTIMETERS

ROBOTINO MOVE BACKWARD *NUMBER* METERS
ROBOTINO MOVE BACKWARD *NUMBER* *NUMBER* METERS
ROBOTINO MOVE BACKWARD *NUMBER* *NUMBER* *NUMBER* METERS
ROBOTINO MOVE BACKWARD *NUMBER* CENTIMETERS
ROBOTINO MOVE BACKWARD *NUMBER* *NUMBER* CENTIMETERS
ROBOTINO MOVE BACKWARD *NUMBER* *NUMBER* *NUMBER* CENTIMETERS

ROBOTINO MOVE LEFT *NUMBER* METERS
ROBOTINO MOVE LEFT *NUMBER* *NUMBER* METERS
ROBOTINO MOVE LEFT *NUMBER* *NUMBER* *NUMBER* METERS
ROBOTINO MOVE LEFT *NUMBER* CENTIMETERS
ROBOTINO MOVE LEFT *NUMBER* *NUMBER* CENTIMETERS
ROBOTINO MOVE LEFT *NUMBER* *NUMBER* *NUMBER* CENTIMETERS

ROBOTINO MOVE RIGHT *NUMBER* METERS
ROBOTINO MOVE RIGHT *NUMBER* *NUMBER* METERS
ROBOTINO MOVE RIGHT *NUMBER* *NUMBER* *NUMBER* METERS
ROBOTINO MOVE RIGHT *NUMBER* CENTIMETERS
ROBOTINO MOVE RIGHT *NUMBER* *NUMBER* CENTIMETERS
ROBOTINO MOVE RIGHT *NUMBER* *NUMBER* *NUMBER* CENTIMETERS

*NUMBER* = ZERO, ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE

Examples:

ROBOTINO MOVE FORWARD ONE METER
ROBOTINO ROTATE ONE EIGHT ZERO DEGREES
ROBOTINO MOVE BACKWARD FOUR FIVE CENTIMETERS