Automated Speech Recognition

From Engineered Arts Wiki
Jump to navigation Jump to search


Automated speech recognition (AKA speech-to-text) is the process of turning sound picked up by the robot's microphone into meaningful text. The text may be interpreted as the human side of a conversation with the robot. The robot replies using the reverse process, text-to-speech, which turns text into an audio signal to send to the loudspeaker.

Speech recognition is not easy. It works best in a quiet environment with a single human speaking at a time.

Technical Details

Speech to text is provided by the Speech Recognition Tritium node. The actual recognition is done by a configurable backend, with Google's Cloud Speech-to-Text API as the default (and currently only) option.

Google Cloud Speech-to-Text API

Google's Cloud Speech-to-Text is probably the best service available of its kind. Using highly trained neural networks it reliably converts audio into well-formed text. Compared to other similar services, it does a good job of transcribing the text correctly.

To use the Google API the Tritium node uploads the raw audio data picked up by the microphone to the Google service, then waits for messages back from the service containing any text recognised. This requires a reasonably fast, reliable internet connection.

The Tritium node must provide authentication credentials, created using the API management web application. The process to create new credentials is as follows:

  1. Create a Google Cloud API project
  2. Generate a private service account key JSON file
  3. Download the JSON file
  4. If happy to do so share the JSON file with Engineered Arts
  5. Engineered Arts to copy the JSON file to /opt/tritium/nodes/speech_recognition/google_application_credentials.json

Before restarting the Speech Recognition node visit and enable the Cloud Speech API for your project.

The Before You Begin section of the Quickstart: Using Client Libraries tutorial covers this process. (You do not need to follow the rest of the tutorial.)