Go to file
Matthew D. Scholefield 0169d44dd9 Update diagram 2018-02-26 23:14:24 -06:00
data Remove placeholder folders 2018-02-23 14:46:10 -06:00
precise Rename precise-stream to precise-engine 2018-02-26 21:19:30 -06:00
runner Rename precise-stream to precise-engine 2018-02-26 21:19:30 -06:00
.gitignore Ignore all data folders 2018-02-23 14:48:57 -06:00
README.md Update diagram 2018-02-26 23:14:24 -06:00
export.sh Refacetor and source code standardization 2018-02-21 13:15:51 -06:00
precise.engine.spec Rename precise-stream to precise-engine 2018-02-26 21:19:30 -06:00
publish.sh Rename precise-stream to precise-engine 2018-02-26 21:19:30 -06:00
requirements.txt Remove prettyparse from hiddenimports 2018-02-26 17:06:37 -06:00
setup.py Rename precise-stream to precise-engine 2018-02-26 21:19:30 -06:00
setup.sh Be more explicit to ensure correct pyinstaller version is used 2018-02-26 17:08:57 -06:00

README.md

Mycroft Precise

A lightweight, simple-to-use, RNN wake word listener.

Precise is a wake word listener. Like its name suggests, a wake word listener's job is to continually listen to sounds and speech around the device, and activate when the sounds or speech match a wake word.

Training Models

You can find info on training your own models here. It requires running through the Source Install instructions first.

Installation

If you just want to use Mycroft Precise for running models in your own application, you can use the binary install option. If you want to train your own models or mess with the source code, you'll need to follow the Source Install instructions below.

Binary Install

First download precise-engine.tar.gz from the precise-data GitHub repo. Currently, we support both 64 bit desktops (x86_64) and the Raspberry Pi (armv7l).

Next, extract the tar to the folder of your choice. The following commands will work for the pi:

ARCH=armv7l
wget https://github.com/MycroftAI/precise-data/raw/dist/$ARCH/precise-engine.tar.gz
tar xvf precise-engine.tar.gz

Now, the Precise binary exists at precise-engine/precise-engine.

Next, install the Python wrapper with pip3 (or pip if you are on Python 2):

sudo pip3 install precise-runner

Finally, you can write your program, passing the location of the precise binary like shown:

#!/usr/bin/env python3

from precise_runner import PreciseEngine, PreciseRunner

engine = PreciseEngine('precise-engine/precise-engine', 'my_model_file.pb')
runner = PreciseRunner(engine, on_activation=lambda: print('hello'))

Source Install

Start out by cloning the repository:

git clone https://github.com/mycroftai/mycroft-precise
cd mycroft-precise

Next, install the necessary system dependencies. If you are on Ubuntu, this will be done automatically in the next step. Otherwise, feel free to submit a PR to support other operating systems. The dependencies are:

  • python3-pip
  • libopenblas-dev
  • python3-scipy
  • cython
  • libhdf5-dev
  • python3-h5py
  • portaudio19-dev

After this, run the setup script:

./setup.sh

Finally, you can write your program as follows:

#!/usr/bin/env python3

from precise_runner import PreciseEngine, PreciseRunner

engine = PreciseEngine('.venv/bin/precise-engine', 'my_model_file.pb')
runner = PreciseRunner(engine, on_activation=lambda: print('hello'))

In addition to the precise-engine executable, doing a Source Install gives you access to some other scripts. You can read more about them here. One of these executables, precise-record, can be used to test a model using your microphone:

source .venv/bin/activate  # Gain access to precise-* executables
precise-record my_model_file.pb

How it Works

At it's core, Precise uses just a single recurrent network, specifically a GRU. Everything else is just a matter of getting data into the right form.

Architecture Diagram