Step 5: Lights & Sounds


Without some form of feedback, it is impossible to know whether the speaker is listening or not, and whether your command worked! :robot: So, we wanted to add both sounds and some LEDs to reflect that confirmation from spkr to the user. For the LEDs, there are multiple options available. The simplest is to hook up some LEDs to the GPIO pins of the Raspberry Pi. There is a built in framework for command of the pins in Python, and we had this running within a few hours.
While this gave us some fun results, we wanted more LEDs (they are limited to 8 on the GPIO). So we choose to go withe a NeoPixel ring controlled by an Arduino. The ring we used has far more lights, and has a great deal of expressivity even without the same intricacy of animations.

a. Configure the Arduino and the NeoPixel ring

We made a library to use the arduino micro as an actuator of the Raspberry Pi here are the steps to configure it:

  • You install the Arduino IDE (here) it will help you upload the code into the Arduino.

  • Clone/Download the Neopixel Ring library into the Arduino library folder.


  • Clone/Download our Snips_lights library into the same Arduino library folder

  • Open the Snips_lights library example called Home.ino

  • Plug your Arduino Micro and upload the exemple via the Arduino IDE.

b. The sound library

In order to communicate the state of the speaker to the user, such as “started listening” or “error”, we wanted to play some custom sounds, without disrupting the music. We explored various text-to-speech solutions, and found some very impressive offerings, all of which were too expensive. Instead, we found some royalty-free sounds, similar to those made by R2-D2, that communicated the state well enough. And that, of course — was cool! :speak_no_evil:


Do you have any notes on how you did b? I have been trying to send a wav file using this:

but I keep getting:

ERROR:hermes_mqtt : could not parse topic : hermes/audioServer/default/playBytes

Is there an example in node?


Hi, the R2-D2 sounds are really cool !
Can you tell us where you got them please? An URL? :wink:


Would be great to have a separate tutorial on how to integrate custom feedback sounds into the snips platform.
Have searched discord, this forum and the web for a few hours now and could not find anything regarding this topic.
So if anybody is willing to share his/her wisdom, I would really apreciate it :slight_smile:


You mean replacing the current sound feedback by yours?

If so then simply go to /usr/share/snips/assistant/custom_dialogue/sound/ and replace start_of_input.wav / error.wav and end_of_input.wav by your .wav files


Great, and so easy :slight_smile: Thanks, after I did that I unfortunatly ran into the the following problem, where the volume of the replaced file is very low.

Update: My issue with the low volume is solved. Please see the linked post for a pssible solution.


Hi Valf,

one question regarding this solution: is it true, that on each new install of the assistant via sam install assistant the sound files are rewritten with the default files? That is at least my impression when I tried to deactivate the error sound… I’ve overwritten it with an empty wav file but after updating my assitant it’s the original error.wav again… Is there a workaround that you could suggest?

Thanks a lot in advance.
Best from Berlin.


Yes it overwrite the assistant but you could still add a small script that replaces the default one by the new one and run it into systemd at each boot


thank you valv, yes that’s what I did now :slight_smile:
thanks again!