Rhasspy offline voice assistant toolkit

@synesthesiam I’m getting an error when I try to run the last version…
docker can’t pull the image:

Error response from daemon: pull access denied for synesthesiam/rhasspy-hassio-addon, repository does not exist or may require 'docker login'

Use synesthesiam/rhasspy-server instead. I consolidated everything into that Docker tag.

Thanks, it worked.
Do I need to separately install snowboy wake listener?
I don’t see it in settings.

Yes, that’s under the synesthesiam/snowboy:1.3.0 Docker tag. You can see how to run it like this:

docker run -it synesthesiam/snowboy:1.3.0 --help

You’ll also need an MQTT broker. I usually use mosquitto.

Ok, so we need to pass the wakeword via mqtt even if snowboy is on the same pi as rhasspy.
I’m not at home now so I can’t test this, but it should be possible to use the mqtt broker that’s already running on my other pi with hassio, right?

Yes, that should work fine. Just put the hostname of the other pi in as the MQTT host for Rhasspy and snowboy.

Hmm, I uninstalled phasspy, rebooted pi and reinstalled.
It chooses the ub mic ok, but still gives this error. Will keep trying things :slight_smile:

I’ve tried just now but it behave in a weird way and doesn’t seem to work:

I’ve setup Rhasspy to use remote Mqtt system

Wakeword Id: default

Then this is how I’ve run snowboy:

docker run -it synesthesiam/snowboy:1.3.0 --host 192.xxx.x.xxx --username xxxxx --password xxxxx --model snowboy --feedback

It starts but then I get:

> ...
> ...
> INFO:root:Listening
> 
> DEBUG:root:Connected to my.hass.io.ip:1883
> 
> DEBUG:root:Receiving audio data
> 
> ...................................................................................................................................................
>..........................................................................................................................................................
>..........................................................................................................................................................
>..........................................................................................................................................................
>..........................................................................................................................................................
>..........................................................................................................................................................
>..........................................................................................................................................................
>.......................................................

and the dots keep increasing until I stop the docker.

Side note: if you start the docker using the model “Jarvis” you get this error:

ERROR (CheckLicense():universal-detect-stream.cc:1391) Your license for Snowboy has been expired. Please contact KITT.AI at [email protected]

Looks like you’re pretty close to getting this working, actually. The “Receiving audio data” is a great sign: it means Rhasspy is streaming the microphone data out, and that snowboy is receiving it.

The --feedback flag causes a . to be output for every audio frame (MQTT message) received. It’s just for debugging, and you’re already good to go with receiving data.

If Rhasspy is properly connected to a microphone, speaking “snowboy” should activate it now.

Side note:
I noticed that error too with the Jarvis model. This is a recent download of snowboy, and it’s one of the models they include, so I’m not sure what the deal is.

OK, thanks for trying. Please also see if switching from PyAudio (the default) to arecord helps things. It also helps me to exec into the running Rhasspy container and run:

arecord -L

The list returned should be exactly what you see available in the microphone drop down on Rhasspy’s web interface. Make sure a real microphone is listed.

Ok, but I am using Hassio and that a bit hard to access the containers.
Also, how do I set to arecord without the webserver running? Is this possible?

Some info here, don’t know if they can be of any help.

Regarding my Rhasspy, with the settings wrote in my previous post, speaking “snowboy” doesn’t trigger it.
I had to investigate more, cause I’ve noticed other issues: for example if I use the “hold to record” button but then don’t speak nothing, rhasspy try to elaborate endlessly untill I restart the docker. With the old version it correctly used to give me an empty intent.
Anyway I’m not even sure I like Rhasspy flooding my mqtt broker constantly.

I’m starting to think I may have broken something with microphone recording in general, though everything works fine on my Pi 3 and laptop (both inside and outside Docker).

For the MQTT flooding, I think the only solution is for me to re-base my Hass.io add-on on a different Docker image. I’m using the base Hass.io image, which is based on Alpine Linux, and is not compatible with snowboy. With a different base image, I should be able to embed snowboy directly and avoid the MQTT stuff for you.

As always, thanks to everyone for sticking with it!

It is possible, but I’m actually not sure how directly. Rhasspy writes to /data/rhasspy inside the Hass.io add-on per the guide, but this doesn’t seem to be accessible on the file system.

Another way would be to simply change the run_dir configuration item in the Rhasspy add-on to the Hass.io share directory. This will cause Rhasspy to write profiles there instead, which you could modify via SSH or SMB.

For those who are still on board with testing, here are some things I’m working on now:

  • A “Test Microphones” button that identifies which of the (many) devices that PyAudio/arecord lists are actually providing audio data.
  • Embedding snowboy inside Rhasspy (Hass.io too)
  • Embedding Mycroft Precise inside Rhasspy (Hass.io too)
1 Like

Nice, can’t wait to test.

Thanks to you for all the hard work.

On snowboard trip now, but will try thanks :slight_smile:

Hi @synesthesiam and everybody here.

Knowing of Jasper since some times and having tried it back in time with more or less success, I’ve been happy to see this project and and even more when seeing you added it as an addon to Hassio. So thank you for your work.

But… there is always a but in such case ;-)… I’m failing at installing it on my Hassio instance.

I’m trying to install your addon since some versions now (both of your addon and of Hassio) and it each time fails with those lines in Hassio system logs :

 19-01-26 08:59:11 INFO (SyncWorker_2) [hassio.docker.addon] Start build 75f2ff60/aarch64-addon-rhasspy:1.19
19-01-26 09:10:31 ERROR (SyncWorker_2) [hassio.docker.addon] Can't build 75f2ff60/aarch64-addon-rhasspy:1.19: The command '/bin/sh -c cd / && wget -qO - https://github.com/synesthesiam/phonetisaurus-2013/releases/download/v1.0-$BUILD_ARCH-alpine/phonetisaurus_2013-1_$BUILD_ARCH-alpine.tar.gz | tar xzf -' returned a non-zero code: 1

My actual vesion of Hassio is the latest one (at this time), so 0.86.2
I installed your repository into Addon Store and trying to install the addon thru it.
This Hassio instance is running on a Raspberry Pi 3 B+.

Any clue of what is going wrong ?

Let me know if you need more informations.

Thanks for trying Rhasspy out! Jasper was a great inspiration, but my hope was to make something more powerful and easier to install/use. The second goal is obviously still a work in progress…

For your error, the $BUILD_ARCH variable not having a value strikes me as odd. Previous versions of Hass.io have filled this is with either amd64 or armhf. Has this changed?

Well I am not too much used to docker, but when I try to install the addon and then try to monitor the build of the successive docker images, it seems that $BUILD_ARCH is substitued with aarch64.