Setting up a 100% local smart speaker on an Android tablet using Tasker and Snowboy to handle wake word detection

Yes I’m still using it daily, I have two devices running with this workaround, one tablet/dashboard in my main room, and an old phone in my kitchen that was supposed to also be a digital photo frame.

There’s two ways I could take your question, if you’re asking specifically about the wakeword piece I can tell you it works flawlessly. If you’re asking about the overall experience of running an HA voice assistant on an android device I have a few complaints.

It’s definitely reliable enough to be useful, and all of my issues have been specific to the HA app, not the wakeword automation. In a quiet environment whispers STT is fairly accurate (about 95% of commands are understood), when other people are talking in the background the wakeword will still work flawlessly but it’s a 50/50 chance whisper will understand it. Unless you have 3-5 seconds of silence after a command it may not be sure when to stop listening and eventually just times out. I haven’t used any other voice assistants extensively so maybe that’s to be expected. I’m using the small-int8 whisper model with beam size 3 for reference.

I found that running fotoo as the photo frame app in the foreground seemed to somehow cause HA to not be able to access the device audio. The wakeword would function normally while the photos were displaying, but the HA assist dialog would be unable to hear the command.

I haven’t set up AI yet, waiting for an implementation that’s friendlier to non-tech inclined people. That would certainly help resolve another issue I’ve had with using HA as a voice assistant, which is that the built in commands are limited and require specific verbiage. My wife has attempted to use it but was frustrated by the fact that commands have to be phrased particularly ways and she could never remember exactly how to ask it what she wanted.

1 Like

Thanks for the detailed response. I’ve been playing around with the little Atom Stack Echo device and I couldn’t agree more with finding the HA commands very limited. That said, the ability to use wakeword and pass that data over to HA is the first step so I guess patience is necessary.

In regards to the AI, take a look at this integration:

and this video that brought me there (this guy has great content btw):

All said, this is the interaction that I am hoping for. It’s super easy to install.
Hardest thing is getting the API key as it requires setting up a paid account with OpenAI but if you can put your solution in place I think getting this hooked in will be a snap.

Unfortunately you’ll see some comments in regard to pricing. The repo above appears, in my eyes, to include lots of current sensor information with each query. It basically includes all states for all exposed entities which each query as well as how to call services. OpenAI is charging based on amount of text sent for each query and amount of text sent back as an answer to that query. This results in sending a lot more than is needed and as such costs more. The YT creator states his bill is between $5-$15 month with heavy usage. I’m a cake and eat it too kind of guy so this pricing is more than I’d like to spend. I’d cap my price at $5/month to have it on par with what I get with the HA cloud service that exposes Alexa/GH.

Well that was a rambling response but hopefully something good in there.

1 Like

Hi i have a new rooted ns panel pro, with latest hass companion app, tasker 7 days free, hotword free. One part in my setup that does not work, is the hotword free. When i start it, is stops. I have my nspanel on 1.6.0 thats android 8.1.0.
My tasker en hass app works, when i do i long push on the volume i can give a voice command to hass that works! Thats nice, but still 1 click to much…

What am i doing wrong I installed the hotword apk with adb and that succeeded, but when clicking it, it does not start up

@update: got an another version of hotword and this version starts!
I am able to start a hass device by wakeword on the ns panel pro, but still an issue as apps are claiming the microfone and one at the time is wat works with my nspanel. So for now it partially works…

i can start 1 device by voice, then disable tha wakewortd service automatic by settings, after that tasker pics it up and start hass assist voice. i have to manually set the wakeword device to listen again as this part of the services dont work between tasker and the wakeword app. Maybe because of my android version or nspanel version pro ? Or something with battery savings settings

What version of android is your device running? This sounds like an issue with Androids audio permission handling in earlier versions.

Edit: looks like it runs Android 8 from what I could find, which doesnt allow 2 apps to access the mic at the same time, which was an inherent limitation of all android versions before Android 10. To get it to work repeatedly you’ll have to add a delay into your automation to manually hand the mic back to Hotword Plugin after some time has passed, 10 to 15 seconds is likely enough time for you to issue a command and HA to respond.

I can give you more guidance on how to set it up if you want, but Í’ll warn you that it’s a PITA to use it like this because you’ll have to wait for the delay to give the mic back to Hotword Plugin before you can issue another command (i.e. if it misunderstands your first command, you’ll wait 15 seconds before you can try again), AND anything that takes longer than your delay timer will get cut off (i.e. Piper may get cut off while trying to tell you the weather forecast if the delay isn’t long enough).

Also if you’re still on the free trial of tasker and don’t want to buy it, you can use the free alternative “Automate” instead.

1 Like

I could use that guidance. I am using one of the Lenovo ThinkSmart Views, and am using Automate with Hotword Plugin to call Assist. I am having trouble with after issuing my command and getting reply, am stuck on the assist popup. How can I dismiss this and restart my flow from the beginning? Or whatever the remainder of your Automate flow is, I saw the screenshot to get the first 3 pieces working, but have only messed with Home Assistant, not Tasker/Automate, and am a little lost on proper search terms to find the answer on my own.

Rather than trying to make the mic manually hand control back to the hotword plugin, I strongly recommend you upgrade the thinksmart view to the android 11 rom linked here:

I’ve got one working flawlessly for voice commands with this rom. Both hotword plugin and assist can listen to the mic at the same time, meaning you can trigger the hotword while the Assist dialog box is still up (if you mess up the command or just don’t want to wait for it to process).

But if you’re stuck with android 8 for other reasons, the way to manually hand the mic back to hotword plugin is to add a delay block into automate after the assist service call, set the delay to whatever seems reasonable (10-15 seconds), and then add a block to emulate a “back” or a “home” button press (that will exit the Assist dialog window), then loop the automate sequence back to the start as normal.

Am on the Android 11 rom, I want the popup to go away after command is complete, using hotword again to starts a new command. Trying the recommendation for Android 8, after the start of the Assist activity, I have a 15s delay block to allow the command to finish, then a key send block with “input method”, “down”, and “navigation back” or “navigation home” options, then connection from that block to block 2, which is the hotword activation, right after flow start block. For some reason, the key input does not dismiss the Assist popup. In the log I see key press entry. I have the Automate keyboard enabled in settings, privileges enabled on the flow screen, and feel I’m missing something small and simple since all the rest works fine.

Ahh, I understand what you’re trying to do now. Use the interact block, not the “simulate button press” block. This is what my flow looks like:


Did you ever have any luck using camera audio streams as hotword listening devices?

Yes, since yesterday! @AlexxIT rewrote StreamAssist!

1 Like

That was it, thanks!

I have been trying to get this up and running. I’m using the latest Android 11 ROM shared in this thread. However, I can’t seem to get the HotwordPlugin to pick up anything. When I go into the settings there I have several Audio Sources. I’ve tried all of them expecting ‘Default’ to work, but none of them seem to. Any recommendations on what i’m missing here? Did I miss a piece of this thread where someone already explained this? Just really hoping to get this thing up soon as a voice assistant. THANK YOU for any help!

I should also note that when i’m in the HASS app and I use Assist directly in there the mic picks up just fine and recognizes everything I say. It’s only when trying to use the HotwordPlugins or even an IP Webcam app and Stream Assist solution.

Ok…amateur here I guess. I finally got it working by fiddling with the HotwordPlugin sensitivity and audio gain. However, i can’t seem to quite get it dialed in. It now picks up random sounds as the keyword and triggers Assist. When Assist starts reading back it’s response it dings again like Assist said the hotword. What is other’s settings on sensitivity and audio gain?

What hotword are you using? One of the universal ones or a custom hotword?

I found that custom hotwords were overly sensitive unless I used a bunch of super clean audio samples (i.e. zero background noise).

@Endlessvoid I was using “Computer” as my hotword. The default one that was available.

Ahh, yeah that one gave me a ton of false positives as well, and if you cranked the sensitivity up then it was probably imagining all kinds of sounds as being “close enough”. I would consider using a less common word/phrase for your wakeword. As a star trek fan I really wanted “Computer” to work, but ultimately I was able to train a fairly accurate “Hey Computer” wakeword, you could likely do something similar.

And to be honest, I found that the sensitivity setting couldn’t make a bad wakeword better, increasing it would just increase the false positive rate, not improve the accuracy.

I have this all set up on two ThinkSmarts and its working well, however the one device in our kitchen is getting triggered way too frequently because its so loud (kids, etc). Does anyone have any sensitivity settings to make it work a bit better? Ive tried Alexa and Jarvis currently. Its set to the default of 50%. I can ramp that up if needed but figured id check here first to see if anyone has a good setup willing to share settings. TIA.

Also, for hiding the assist popup i am using AutoApps AutoInput plugin to click the navbar instead of the back button as i kept jumping to a screen in HA and not the home screen. I wonder if the free tasker alternative can simulate clicks like AutoInput?

I’m also using this on two ThinkSmarts and have found that Jarvis at 32% sensitivity along with a mic gain of 20 has been working well for my uses. I have one placed a few feet from a TV that gets near daily use, but the room is otherwise fairly quiet, with two adult speakers at most.

On day one, I set the mic gain to 20 because I tend to speak softly. This was done on a whim with zero testing, so take it with a grain of salt.

For the sensitivity, I worked my way down from 50% until false triggers disappeared (around 27% in my environment), then I worked my way back up until I wasn’t repeating “Jarvis” to myself with increasing fervor like a madman.
30-33% sensitivity seems to be a good range for my environment and the way I speak.