Somewhat fancy voice command recognition software
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Kaylee
======

Kaylee is a somewhat fancy voice command recognition program that
performs actions when a user speaks loosely preset sentences. It has a
flexible plugin API allowing developers to add new advanced features
that can be distributed and loaded with ease.

Kaylee is based on `Blather <https://gitlab.com/jezra/blather>`__ by
`Jezra <http://jezra.net/>`__, but adds a lot of features that go
beyond the original purpose of Blather.

Installation
------------

Kaylee is only tested on GNU/Linux systems, so make sure you're trying
to install it on one of those. The current recommended way to use Kaylee
is to check out the Git repository and run it from there::

git clone https://git.clayhobbs.com/clay/kaylee.git
cd kaylee

Dependencies
~~~~~~~~~~~~

1. Python 3.6
2. pocketsphinx 5prealpha
3. gstreamer-1.0 (and what ever plugin has pocketsphinx support)
4. gstreamer-1.0 base plugins (required for ALSA)
5. python-gobject (required for GStreamer and the GTK-based UI)
6. python-requests
7. python-setuptools

**Note:** it may also be required to install
``pocketsphinx-hmm-en-hub4wsj``

Optional Dependencies
~~~~~~~~~~~~~~~~~~~~~

1. python-pydbus (required for MPRIS plugin)

Usage
-----

1. Copy plugins.json.dist to ~/.config/kaylee/plugins.json and fill the
".shell" section of the file with sentences to speak and commands
to run.
2. Run Kaylee with ``./kaylee.py``. This generates a language model and
dictionary using the `Sphinx Knowledge Base Tool
<http://www.speech.cs.cmu.edu/tools/lmtool.html>`__, then listens for
commands with the system default microphone. To use a microphone
other than the system default, use the ``-m`` flag.
3. Start talking!

Examples
~~~~~~~~

- To run Kaylee with the GTK UI, starting in continuous listen mode:
``./kaylee.py -i g -c``

- To run Kaylee with no UI and using a USB microphone recognized as
device 2: ``./kaylee.py -m 2``

- To run a command when a valid sentence has been detected:
``./kaylee.py --valid-sentence-command=/path/to/command``

- To run a command when an invalid sentence has been detected:
``./kaylee.py --invalid-sentence-command=/path/to/command``

Default values for command-line arguments may be specified in
~/.config/kaylee/options.json. It is recommended to base this file on
the default configuration file, kayleevc/conf/options.json.

Finding the Device Number of a USB microphone
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

There are a few ways to find the device number of a USB microphone.

- ``cat /proc/asound/cards``
- ``arecord -l``