This is a light-weight client for the Genie Web API implemented using C++.
It is designed for embedded clients with limited flash storage and RAM.
Genie is a research project led by Prof. Monica Lam, from Stanford University. You can find more information at https://oval.cs.stanford.edu.
Disclaimer: "Hey Genie" wake word is powered by Picovoice Porcupine for non-commercial use only, for commercial use please contact Picovoice.
You can make a local build for development a standard Linux distro using meson
and ninja
.
Install the dependencies from your package manager. On Fedora, this is:
sudo dnf -y install meson gcc-c++ 'pkgconfig(alsa)' 'pkgconfig(glib-2.0)' 'pkgconfig(libsoup-2.4)' \
'pkgconfig(json-glib-1.0)' 'pkgconfig(libevdev)' 'pkgconfig(gstreamer-1.0)' 'pkgconfig(speex)' 'pkgconfig(speexdsp)' \
'pkgconfig(webrtc-audio-processing)' gstreamer1-plugins-base gstreamer1-plugins-good cmake
On Ubuntu, this is:
sudo apt-get install -y meson g++ libasound2-dev libglib2.0-0 libsoup2.4 libjson-glib-dev \
libevdev-dev libgstreamer1.0-0 libgstreamer1.0-dev libspeex-dev libspeexdsp-dev libwebrtc-audio-processing-dev \
gstreamer1.0-plugins-base gstreamer1.0-plugins-good cmake
Run:
./scripts/get-assets.sh
Review the Picovoice SDK Licence before continuing.
Run:
meson ./build/
ninja -C ./build/
The compiled binary is located in ./build/src/genie-client
To use in a normal Linux installation, the binary should be installed with
ninja -C ./build/ install
The default config.ini is optimized for use in a general purpose Linux device (such as a laptop or Raspberry Pi), against a cloud instance of Genie.
While Genie is running, limited configuration is possible by connecting to the client web interface, hosted on port 8000. The web interface allows to login to the cloud instance, or connect to a local Genie server.
Advanced customization to target a specific hardward is possible by editing the file config.ini in the same directory as where the client is run. The config.ini in the repository is an example and shows the default values.