Wakeword

Wakeword

Device Compatibility

Overview

The Wakeword driver allows for:

  • Reading custom wakewords created with Sphinx Knowledge Base.
  • Notifications on which wakewords are heard.

Available ZeroMQ Ports

  • Base port: 60001
  • Error port: 60003
  • Data update port: 60004

Installation

In order to use MATRIX CORE wakeword, you must install the following on your MATRIX device.

Install the MATRIX Kernel modules.

sudo apt install matrixio-kernel-modules

Install the MATRIX CORE Wakeword Package.

sudo apt install matrixio-malos-wakeword

Perform a reboot before moving on.

sudo reboot

Creating Custom Phrases

To create custom phrases, you must upload a .txt file to Sphinx Knowledge Base.

Below is an example text file that has each phrase separated by a line break. Once this is uploaded to the Sphinx Knowledge base, you will need to download the language model .lm and dictation .dic files for the Wakeword Driver.

matrix start action
matrix stop action
matrix ring red
matrix ring blue
matrix ring green
matrix ring clear

Protocol

Base Port This port accepts a single configuration for communicating with the Wakeword driver.

  • wakeword - the wakeword configuration that's created from a WakeWordParams message.
message DriverConfig {
  // Wakeword service configuration
  matrix_io.malos.v1.io.WakeWordParams wakeword = 12;
}

View the defined message here.

WakeWordParams

  • MicChannel - Desired MATRIX device microphone to use.

  • lm_path - File path for language model. Obtained from Sphinx Knowledge Base.

  • dic_path - File path for dictation. Obtained from Sphinx Knowledge Base.

  • enable_verbose - Boolean to send output to stdout.

  • stop_recognition - Stop Pocket Sphinx service.

message WakeWordParams {
  // Mic channels
  enum MicChannel {
    channel0 = 0;
    channel1 = 1;
    channel2 = 2;
    channel3 = 3;
    channel4 = 4;
    channel5 = 5;
    channel6 = 6;
    channel7 = 7;
    channel8 = 8;
  }
  // Desired mic channel
  MicChannel channel = 2;

  // http://www.speech.cs.cmu.edu/tools/lmtool-new.html
  // Language model path
  string lm_path = 3;
  // Dictation path
  string dic_path = 4;

  // enable pocketsphinx verbose mode
  bool enable_verbose = 5;

  // stop recognition service
  bool stop_recognition = 6;
}

View the defined message here.

Keep-alive Port This driver needs keep-alive messages in order to send data to your application. It's recommended to send an empty string "" because the contents of a keep-alive message are never read.

Error Port Applications can subscribe to this port to receive driver related errors.

Data Update Port Applications can subscribe to this port for Everloop data. The output will be a serialized message of type EverloopImage with the following information.

// The led array.
message WakeWordParams {
  // Wake Word
  string wake_word = 1;
}

View the defined message here.