Snips.ai Voice Assistant - from questions to ultimate guide

To those following, I found this https://www.facebook.com/notes/daniel-kornev/building-your-own-private-digital-assistant-with-snipsai-part-i/2348353985205582/

2 Likes

I installed/updated snips via Sam.

I installed Sam on the raspi. I have notes on that too, I will get that posted.

I will work on a full proper step by step guide.

Happy to work with you on a how to as I work through it. I’ll start making notes!

Hi guys, new here.
Trying to set up home assistant controlled by voice using snips.
I’ve spend the last week reading a lot of documentation, watching tutorials, following different forums… and now my head is a totally mess. With home assistant updating every now and them, also snips doing so its very hard to know if the documentation is updated or the different tutorials are still valid or not.
For now, I’ve got home assistant running on a pi3 through hassio and snips running on another pi3 on debian using the respeaker 2 mic pi hat. Snips is working ok, i can connect using sam watch and check that is actually listen and creating intends…
But I cant figure out how to link both together. I’ve installed mosquitto addon on home assistant (but not sure how to configure it now) dont know if i have to link the home assistant to the snips pi, snips pi to the home assistant or if i have to do a bridge¿? between both??
Also, where do I have to configure the actions for the intends? In the snips console? In the configuration.yaml on home assistant? Do I need to set up user and password for mosquitto. Im desperate, because I feel im so close but cant figure out this last part.
Mattvirus, how are you going with this? I think you are using a similar configuration and you said that everything is working?
Looking forward to heard how you did it
Thank you guys for participating in this

This answers some of your questions, and has been posted earlier in the thread.

http://hackspace.io/?page_id=245

Hi nickrout, thanks for the reference. I saw it before but not sure whats it is doing. As far I can understand (I knew about home assistant and all this world just 1 week ago) modifying the /etc/mosquitto/mosquitto.conf on the snips raspberry we are creating a bridge between snips and home assistant right? then the “Homeassistant” by HASS app is only defining a few intends with no action on the snips part. So… after doing this… “hey Snips, turn on the tv”… I imagine that snips is creating a topic (where? can I check that topic?) and home assistant is reading this topic. But now how I link my “media_player.sony_bravia_tv”
to react to that topic??
Thanks again mate, i’m sweating blood to finish this

You have to configure home assistant’s configuration.yaml to react to the intent.

I am thinking you might not have read https://www.home-assistant.io/components/snips/

oh yes, I did, more than 10 times. this is what I have now on my configuration.yaml

intent_script:
turn_on_tv:
action:
- service: media_player.turn_on
data_template:
entity_id: media_player.sony_bravia_tv

“turn on tv” is the name I put to the intend on the console

anyway, after modifying the mosquitto.conf snips don’t respond to “hey snips” anymore and if I try sam watch it say "Could not start MQTT client on localhost:1883 caused by: Connection refused (os error111)

Sorry I don’t read configs that are not posted properly. Look for the </> button.

and I don’t understand what you mean. Anyway I see i’m not going to have much help from you. Not sure how I offended. thanks for your help

Hi. Do you have mqtt user and password? if yes… try anonymous.

Just to clarify, you aren’t running the Hassio snips addon right? You have snips installed on your pi and it’s talking to HA via MQTT.

That is not my howto.

I don’t have anything running yet. I got distracted by rhasspy Rhasspy offline voice assistant toolkit which looks really good. Then real life intervened.

Sorry i read a lott but stil iam not able to get it running.
And i cant find out what is wrong.
The following components and platforms could not be set up:

  • snips
    Please check your config.

Please help

  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_6/slot_filler.json  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_5/slot_filler.json  
  inflating: /usr/share/snips/assistant/nlu_engine/custom_entity_parser/parser/parser_11/metadata.json  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/metadata.json  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_9/slot_filler.json  
  inflating: /usr/share/snips/assistant/nlu_engine/resources/en/noise.txt  
  inflating: /usr/share/snips/assistant/nlu_engine/custom_entity_parser/parser/parser_2/parser  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/intent_classifier/featurizer/tfidf_vectorizer/metadata.json  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_15/modelll3hYc.crfsuite  
  inflating: /usr/share/snips/assistant/nlu_engine/custom_entity_parser/parser/parser_4/metadata.json  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_0/slot_filler.json  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_17/metadata.json  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_3/metadata.json  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_8/slot_filler.json  
  inflating: /usr/share/snips/assistant/nlu_engine/custom_entity_parser/parser/parser_3/metadata.json  
  inflating: /usr/share/snips/assistant/nlu_engine/custom_entity_parser/parser/parser_7/parser  
  inflating: /usr/share/snips/assistant/nlu_engine/resources/en/gazetteers/top_10000_words_stemmed.txt  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_10/metadata.json  
  inflating: /usr/share/snips/assistant/nlu_engine/custom_entity_parser/parser/parser_9/parser  
  inflating: /usr/share/snips/assistant/nlu_engine/custom_entity_parser/parser/parser_7/metadata.json  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_10/modelm10JLa.crfsuite  
  inflating: /usr/share/snips/assistant/nlu_engine/custom_entity_parser/parser/parser_2/metadata.json  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_7/slot_filler.json  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/intent_classifier/intent_classifier.json  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_0/modelL25y30.crfsuite  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_4/metadata.json  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_13/slot_filler.json  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_7/model0OYWOn.crfsuite  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_13/model0vImtT.crfsuite  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_8/metadata.json  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_3/slot_filler.json  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/intent_classifier/metadata.json  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_5/metadata.json  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_15/slot_filler.json  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_0/metadata.json  
  inflating: /usr/share/snips/assistant/nlu_engine/custom_entity_parser/parser/parser_8/metadata.json  
  inflating: /usr/share/snips/assistant/nlu_engine/custom_entity_parser/metadata.json  
  inflating: /usr/share/snips/assistant/nlu_engine/builtin_entity_parser/metadata.json  
  inflating: /usr/share/snips/assistant/nlu_engine/custom_entity_parser/parser/parser_3/parser  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_13/metadata.json  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_5/modelTumKFn.crfsuite  
  inflating: /usr/share/snips/assistant/nlu_engine/nlu_engine.json  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_16/slot_filler.json  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_6/metadata.json  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_12/slot_filler.json  
  inflating: /usr/share/snips/assistant/nlu_engine/custom_entity_parser/parser/parser_12/metadata.json  
  inflating: /usr/share/snips/assistant/nlu_engine/resources/en/stemming/stems.txt  
  inflating: /usr/share/snips/assistant/nlu_engine/custom_entity_parser/parser/parser_6/parser  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_7/metadata.json  
  inflating: /usr/share/snips/assistant/nlu_engine/custom_entity_parser/parser/parser_6/metadata.json  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_9/metadata.json  
  inflating: /usr/share/snips/assistant/nlu_engine/custom_entity_parser/parser/parser_5/metadata.json  
  inflating: /usr/share/snips/assistant/nlu_engine/custom_entity_parser/parser/parser_1/parser  
  inflating: /usr/share/snips/assistant/nlu_engine/custom_entity_parser/parser/parser_10/metadata.json  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_2/metadata.json  
  inflating: /usr/share/snips/assistant/nlu_engine/custom_entity_parser/parser/parser_10/parser  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/slot_filler_10/slot_filler.json  
  inflating: /usr/share/snips/assistant/nlu_engine/custom_entity_parser/parser/parser_4/parser  
  inflating: /usr/share/snips/assistant/nlu_engine/resources/en/metadata.json  
  inflating: /usr/share/snips/assistant/nlu_engine/probabilistic_intent_parser/intent_classifier/featurizer/metadata.json  
  inflating: /usr/share/snips/assistant/trained_assistant.json  
  inflating: /usr/share/snips/assistant/custom_hotword/config.json  
  inflating: /usr/share/snips/assistant/custom_hotword/model.pb  
  inflating: /usr/share/snips/assistant/custom_hotword/thresholds_curve.json  
  inflating: /usr/share/snips/assistant/custom_dialogue/sound/end_of_input.wav  
  inflating: /usr/share/snips/assistant/custom_dialogue/sound/config.json  
  inflating: /usr/share/snips/assistant/custom_dialogue/sound/error.wav  
  inflating: /usr/share/snips/assistant/custom_dialogue/sound/start_of_input.wav  
  inflating: /usr/share/snips/assistant/custom_dialogue/speak/it.json  
  inflating: /usr/share/snips/assistant/custom_dialogue/speak/ko.json  
  inflating: /usr/share/snips/assistant/custom_dialogue/speak/de.json  
  inflating: /usr/share/snips/assistant/custom_dialogue/speak/es.json  
  inflating: /usr/share/snips/assistant/custom_dialogue/speak/en.json  
  inflating: /usr/share/snips/assistant/custom_dialogue/speak/fr.json  
  inflating: /usr/share/snips/assistant/snippets/SirBuildsALot7.Greetings/python2/SirBuildsALot7/bye.snippet  
  inflating: /usr/share/snips/assistant/snippets/SirBuildsALot7.Greetings/python2/SirBuildsALot7/hello.snippet  
  inflating: /usr/share/snips/assistant/snippets/SirBuildsALot7.Greetings/config.ini  
  inflating: /usr/share/snips/assistant/snippets/v_amish.HomeAssistant/python2/v_amish/TurnOff.snippet  
  inflating: /usr/share/snips/assistant/snippets/v_amish.HomeAssistant/python2/v_amish/TurnOn.snippet  
  inflating: /usr/share/snips/assistant/snippets/v_amish.HomeAssistant/python2/v_amish/Query.snippet  
  inflating: /usr/share/snips/assistant/snippets/v_amish.HomeAssistant/config.ini  
  inflating: /usr/share/snips/assistant/snippets/sandro.Music_Player/config.ini  
  inflating: /usr/share/snips/assistant/snippets/Marshall.Music_Player/config.ini  
  inflating: /usr/share/snips/assistant/Snipsfile.yaml  
[INFO] Starting snips-watch
snips-asr 1.2.1 (0.63.2)
snips-injection 1.2.1 (0.63.2)
snips-audio-server 1.2.1 (0.63.2)
snips-dialogue 1.2.1 (0.63.2)
snips-hotword 1.2.1 (0.63.2)
snips-nlu 1.2.1 (0.63.2) [model_version: 0.19.0]
Spawning /usr/bin/snips-asr-google   --mqtt 'localhost:1883' 
snips-asr is disabled
Spawning /usr/bin/snips-audio-server   --mqtt 'localhost:1883' --frame=256
Spawning /usr/bin/snips-tts   --mqtt 'localhost:1883' 
Spawning /usr/bin/snips-hotword   --mqtt 'localhost:1883' 
Spawning /usr/bin/snips-nlu  --mqtt 'localhost:1883' 
Spawning /usr/bin/snips-dialogue   --mqtt 'localhost:1883' 
Spawning /usr/bin/snips-analytics  --mqtt 'localhost:1883' 
snips-debug is disabled

I’m at the start of this journey but have a few simple questions - I’m trying to use the HassIO addon.

  1. On set up, I’m not able to set the Audio Input / Output options. In hardware it sees an Input (Jabra Link 370 (headphone and microphone set on wireless to usb) but no doesn’t see anything in Snips settings.

  2. From looking at the documentation it seems you’re best to set up assistants from scratch - I’ll obviously need to program all the automation related activities, but is there not pre-complied/made versions which have all the standard stuff in them rather than needing to go through and install every app as that appears like it would take a long time to then have it do simple things.

Thanks

I’d be super keen to get a “newbie” tutorial on the start and finish process of setting up snips to work with HassIO, I have HassIO on one PI 3b+ and a seperate PI 3B+ with the Respeaker 4 mic and a headless Raspbian buster added to it. However every corner i turn i reach a stumbling block. I’m now 6 days into trying to get this working and so far all i have is a Hassio Addon that won’t recognise any audio or mic config, A second Raspbery pi with a respeaker attached but only half configured and wayyyyy more grey hair than i should by now:)

Just to update a few. I spent couple of weeks now trying to just get snips working on a fresh PI. I now have it connected and operating locally on the one pi, i have the bridge set up but yet to confirm it actually works and yet to get it working with HA. However …
Let me explain a couple of things that done my head in for ages that might help a few others out there at a later date.

  1. Snips doesnt work on Buster ( latest raspbian) just yet as it has a kernal issue or something so you need to find a previous image of Stretch as stretch is fully supported by Snips at the time of writing this.

  2. The error kasido mentioned "Could not start MQTT client on localhost:1883 caused by: Connection refused (os error111) had me spinning out for many, many and i mean many hours. What fixed mine in the end was doing the following .

sudo systemctl stop mosquitto
sudo mosquitto -v -c /etc/mosquitto/mosquitto.conf

That will stop the mosquitto server and then restart it with extra logging enabled. if you get a message saying something like,
Error: Unable to open log file /var/log/mosquitto/mosquitto.log for writing.

then type the following commands

sudo chown mosquitto /var/log/mosquitto
sudo chown mosquitto:mosquitto /var/log/mosquitto/mosquitto.log

*then restart the mosquitto with systemctl :*

sudo systemctl restart mosquitto

Also … if watching this guys video and following his steps https://www.youtube.com/watch?v=x4bo7ru9q2M

then make sure if you are updating the mosquitto.conf as suggested but doing it in /etc/mosquitto/conf.d/default.conf , that you dont double up on a couple of persistance settings etc ( you do this by adding his code to /etc/mosquitto/conf.d/default.conf and removing/commenting out any similar lines found in /etc/mosquitto/mosquitto.conf

anyway. i had ooodles more issues than just the above but those two did my head in so hope it helps someone else with similar issues until the op actually does a tutorial as mentioned :slight_smile:

2 Likes