Need to get sattelites working with Rhasspy - troubles oh my!

I want to use android cell phones as satellites for several reasons.

  • Raspberry Pis are nearly impossible to find – they can’t be purchased onlilne (at least not from reputable sources) and I would have to drive 2.5 hours to the nearest Microcenter. IF they have them in stock, I’d be limited to buying ONE per visit and I want at least 6 satellites.
  • Once I have the RasPi, I’d still need to buy other parts – cases, microphones, speakers and in some instances, touch screens.
  • I bought a cheap $30 android phone and have installed the Rhasspy Mobile app on it (downloaded from Github). Once I get this one working, I’ll get more – they’ll be good enough to sit at various places around my house. I’ll get a couple tablets for wall mounted dashboards – they can act as satellites too.

Anyway – I’m having difficulty getting the mobile app to do the wake word. And it’s also showing an error message that nobody handled the intent.

When I press the microphone icon (on the screen) and speak a request to turn on or off a light, Rhasspy server processes it correctly (even though the mobile app indicates that the intent wasn’t handled).

But I don’t want to press the microphone every time I want to make a request – of the two issues I’ve noted, this one is my priority.

I have wake word enabled on mobile. But I don’t see a way to configure it other than to turn it on or off and if on, enter a URL and port number. It is currently pointed at my Rhasspy server’s IP address and port 2000. Beyond that, I’m not sure what to do next. Rhasspy server does have Wake word turned on.

Hi,
I played a little bit with the Android App and as far as I can tell, you cannot use the Wake Word over MQTT or HTTP.
You have to select Porcupine (Local).
There you have to create a Token with picovoice.ai.
The Link to the Token Site will appear under the Selection Field after you select Porcupine.
Registration is free and you can create Tokens for up to three Devices.
Paste the Token to the App and choose a Wake Word.

Thanks. I eventually figured that out. I’d still like to get away from using the porcupine option but it’s fine for now.

My biggest concern is that it doesn’t perform as reliably as I’d like.

  • Sometimes, I’ll say the wake word and it’ll respond with the acknowledgement sound then immediately play the “recorded” sound as though it recorded request but the server never got ta request.
  • Sometimes, I’ll say the wake word and it’ll respond with the acknowledgement sound then immediately play the error sound.
  • Sometimes, I’ll say the wake word and it’ll respond with the acknowledgement sound then half-way through speaking my request, it’ll play the error sound.
  • Sometimes, I’ll say the wake word and it’ll work great.
  • Sometimes, I’ll say the wake word (even less than a foot away from it) and it won’t respond at all.
  • When it won’t respond, I sometimes pick it up and press the microphone button and then make my request. Sometimes it works, sometimes it doesn’t.

Hi that sounds like you unfortunately have a lot of problems with the app.
Please file an issue on Github as it is easier to track there, (GitHub - Nailik/rhasspy_mobile: Rhasspy is a voice assistant software. This repository implements the functionality of a Rhasspy satellite, with local wake word recognition.)
Also please provide info like:

  • Satellite Configuration
  • Server Configuration
  • Android Version & Device Name
  • exoported log if possible

I can’t help but relate to your situation, I’ve been trying out Rhasspy for last week and have got it working how I want for the most part. But lack of suitable sbc’s on the market is one of the biggest hurdles yet.

I offer some caution against the android route as I have been using old phone / tablets for several years now as my media player hooked up to a hi-fi (mainly due to shortages of pi’s or similar) using Jellyfin.
It works okay but I’ve had one phone just die, another the battery ballooned on me due to always been plugged in :firecracker: Hence I’m currently using a device to try and power cycle the tablet I’m using to avoid this. But that’s hit and miss if it works so I’m always having to check it routinely each morning to get it working again. No one wants exploding tech all over the place.

My other problem is related to the app and how different phones handle it, due to it’s nature of always running it does drain the battery faster than normal. Some phone manufacturer’s don’t respect the request to not put app to sleep. which means you constantly have to re-open it and finally it does sometimes just stop recognising what your saying. which means forcing it to close and re-open.

Oh and the other thing, because the wake word is local. I found I was triggering multiple devices in different rooms. I have an idea to get around that but it requires doing wake word on the server or at least coordinating with the server. I don’t want to dive into android dev, so that’s against them for me.

In a last ditch attempt for my situation I’ve written some python script to enable any windows PC / laptop to act as a satellite. I’m using porcupine for now and have added in VAD, it works quite well. The only problem now is deciding on a suitable microphone or just park all this until the pi market improves.

Anyway, Good luck with your project and hope it all works out!

So you pretty much have 3 issues, i try to explain how i would try to deal with it:

  1. Blown up batteries - i’d try to remove the battery and run it only on usb if it is installed fix on the wall
    (example after a quick google search Android Tablet Power on USB Only Solution ( without Battery ) - YouTube)
    Maybe also a device without battery like the ns panels that run android (gonna test it by myself in the future because i am interested in this device)

  2. App issues - that’s why i marked it as beta - not stable yet i probably need to add more tests but there are also some fixes in the next release. It just all takes a while because it’s sometimes hard to find time for side projects.

  3. Multiple device triggering is a very big issue and i don’t really have an answer to that just some ideas.

    • using the dialog management of the rhasspy base and not from the app. This way the base could react to the first occurence only. (Maybe it would also be good to add the confidence in how clear the wakeword was detected to find out which satellite you are closest to.)
    • different wake word per room (for example “hey ”
    • udp wakeword and letting the base decide which satellite to listen to

it’s very hard when you have multiple devices nearby and maybe also using them together (multiple sessions as multiple users could speak at the same time)

  1. I have already been thinking of ways to avoid having them charging all the time – main thought is to use smart plugs and let HA turn them off when the phone is at 100%. But I’m curious how overcharged batteries could have anything to do with the noted issues.

  2. I, for one, understand this is beta and appreciate your efforts to develop it.

  3. I’ve not been able to get UDP wake word working. That would be my preferred method. Same with remote dialog management.

Edit: when I wrote this, I thought it was a reply to me. But 2 & 3 are still valid.

So let’s work out your udp issues.
Maybe this UDP Wakeword detection with Rhasspy mobile app can help?

I’ve ready that but couldn’t figure out how to use it. I even asked about it and never got a response.

https://community.rhasspy.org/t/how-do-i-run-the-docker-command-to-open-a-udp-port/4506?u=donireland49