Using Snips on Google Voice Kit v1 Hardware

Hi. I have recently been given a Google Voice Kit v1. I was very excited about the prospect of developing my own personal voice assistant but, to my dismay, it required an internet connection to be usable, and there’s a very slow allowance of free system calls, making it almost useless to me.

But doing some online research i found out about this project. And I got my hopes back up!! But only to realize that the hardware is not supported by you (obviously), and there are no tutorials (that i could find) detailing the necesary steps.

The board on the Voice Kit comes with speaker and microphone on a HAT (quite similar to your setup). I wondered if maybe it wouldn’t be down to just changing the pin number for the HW, or something like that.

I know that I’m asking a lot, but I can’t afford your branded kit, and i don’t know how to ask for another kit when the first one is just collecting dust (metaphorically speaking).

I would appreciate any and all help in this regard.

Thank you.

If you’re talking about the AIY Voice Kit in this article, that should help you. Note that some of the steps could already be outdated.

Check out Psycho’s LED control. Snips Led Control

I’m pretty sure if you follow the general Snips “SAM” install instructions. Then install the above LED control and it will install the appropriate hardware.
I originally used the instructions Koan linked, but I think the LED Control route would be easier.

I saw that article but, sadly, it never even touches the software :frowning:

thanks @platup. That might be the route I need to take if nothing else pans out, but it’s gonna be a hard one. I was hoping someone had already gone through the ordeal, and might have some info to share.

It’s actually really simple. This is assuming you have a Raspberry Pi 3? If your voice kit came with a Pi Zero, that won’t be enough power to run standalone.

Just follow the Snips install instructions for a Pi.
Then the link I gave, has a link to a Wiki with instructions. It’s only a few “cut and paste” lines and then a script runs and prompts you for what hardware you have and will install everything.

Edit: I would also recommend starting from scratch with a fresh install of Raspbian Stretch lite. I think that’s part of the basic Snips install instructions.

Hi,

I am new here and know very little about this stuff.

I spent several days trying to get v1 of the google aiy voice hat working stand alone. I lost the HDMI sound option but was able to get it to function with blue tooth. I’ll be happy to share the pages I used to get it to function.

I must be missing the wiki link, as the only ones I saw were GitHub or snips forum links??

ok I see the wiki links for the respeakers. Is that what you are referring to?

The instructions to install Snips on a Raspberry Pi are here:
https://docs.snips.ai/getting-started/quick-start-raspberry-pi

The instructions to then get the AIY hardware working with Snips is here: https://github.com/Psychokiller1888/snipsLedControl/wiki
It’s simple to install, you just have to cut and past 3 commands. But you will need console or ssh access.

Thanks for the follow up info @platup. I’ll definitely give it a push. If I get it to work I’ll publish a tutorial and link to it in a final reply. There must be quite a few of these things gathering dust due to google’s restricted free api allowances.

Hi @MSTNGSPRTS. I have the one with the RasPi3, but I’m trying to get the HAT to integrate with SNIPS, so I don’t have to use some other hardware.

Did you ever get that HW to work with SNIPS?

FYI, I was incorrect. Psycho’s LED control doesn’t install the Google AIY hardware. I just went through the install on a fresh Pi, so the hardware install step 1 will still need to be done from the link koan provided above.

Edit:
Looks like the instructions in the link are a little outdated. The 4th step should be “voicekit” instead of “voicehat”.
The revised steps to get the GoogleAIY hardware working…

sudo apt-get install git
git clone https://github.com/google/aiyprojects-raspbian.git
cd aiyprojects-raspbian
git checkout voicekit
sudo scripts/configure-driver.sh
sudo scripts/install-alsa-config.sh

Thanks for the follow-up @platup. I only had to add an extra command to what you posted.

I haven’t had a chance to go through the steps a couple of times to catch any problems (will do in the future), but he steps, for the time being stand as follows:

# prepare for, and install Snips repository
	
sudo apt install dirmngr
sudo bash -c 'echo "deb https://raspbian.snips.ai/$(lsb_release -cs) stable main" > /etc/apt/sources.list.d/snips.list'
sudo apt-key adv --keyserver gpg.mozilla.org --recv-keys D4F50CDCA10A2849
sudo apt update

# install Snips platform

sudo apt install snips-platform-voice
sudo apt install snips-template snips-skill-server

# installing audio support for AIY VoiceKit v1

sudo apt install git
git clone https://github.com/google/aiyprojects-raspbian.git
cd aiyprojects-raspbian
git checkout voicekit
sudo scripts/configure-driver.sh
sudo scripts/install-alsa-config.sh 
sudo dtoverlay googlevoicehat-soundcard

# configuring audio
	
# list all playback devices: aplay -l
# list all capture devices: arecord -l
alsamixer
sam setup audio


# testing with snips on local machine
sam test speaker
sam test microphone

However it’s probably not a complete solution.

After installing an assistant, a fatal error happens after hot-word detection. It might not have anything to do with the VoiceKit HW, but I need to isolate the issue.

Just in case, here’s the ouput from sam service log:

raspberrypi snips-hotword[1706]: INFO:snips_hotword_hermes        : Hotword detected: site_id:default model:hey_snips (59ms ago)
raspberrypi snips-dialogue[1716]: INFO:snips_dialogue_lib::coordinator::coordinator: Site [default]: reset site -> turn off ASR and turn off Hotword
raspberrypi snips-dialogue[1716]: INFO:snips_dialogue_lib::coordinator::coordinator: Session [ed651ab0-49d4-45f4-832f-cd5d20b14e6d]: The session has been created because the site "default" is free
raspberrypi snips-audio-server[1696]: INFO:snips_audio_portaudio      : Playing "7202ef1c-1297-48ae-b502-1de3dd81f888" using output "default", wav spec: WavSpec { channels: 2, sample_rate: 22050, bits_per_sample: 16, sample_format: Int }
raspberrypi snips-audio-server[1696]: Expression 'alsa_snd_pcm_hw_params_set_buffer_size_near( self->pcm, hwParams, &bufSz )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2079
raspberrypi snips-audio-server[1696]: Expression 'PaAlsaStreamComponent_FinishConfigure( &self->playback, hwParamsPlayback, outParams, self->primeBuffers, realSr, outputLatency )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2733
raspberrypi snips-audio-server[1696]: Expression 'PaAlsaStream_Configure( stream, inputParameters, outputParameters, sampleRate, framesPerBuffer, &inputLatency, &outputLatency, &hostBufferSizeMode )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2838
raspberrypi snips-audio-server[1696]: thread 'portaudio.player' panicked at 'called `Result::unwrap()` on an `Err` value: "SendError(..)"', src/libcore/result.rs:1009:5
raspberrypi snips-audio-server[1696]: ERROR:snips_audio_server_hermes  : could not play "7202ef1c-1297-48ae-b502-1de3dd81f888"
raspberrypi snips-audio-server[1696]:  -> caused by: UnanticipatedHostError

Hi Samovi,
so happy to have found this thread :slight_smile:
Same situation here, I would really love to give the AIY-Kit-dustcatcher a new life! But I am not really a pro…

What line did you add to @platup’s post?
I will try for myself with what both of you posted, perhaps there is some findings about the fatal error you described.

UPDATE

Working fine so far :smiley:
Only thing different I did was installing the AIY-Kit-stuff first, and then the snips repository, i think…
No issues with the hot-word detection.

Hi @pacocalvari, I’m glad it helped.

Do you think you could reproduce your build and post all the commands here? The devil is in the details, and I’d also love to get mine to do something other than gather dust.

Have you managed to get any asssistants to respond?

[Also, extra kudos for getting at it on a Sunday :slight_smile: ]

Sure.
I took a raspbian stretch image (full) on a 32GB card

Then I followed the article @koan mentioned here, with the hint from @platup to use “git checkout voicekit” instead of “…voicehat”

$ cd ~
$ sudo apt-get install git
$ git clone https://github.com/google/aiyprojects-raspbian.git
$ cd aiyprojects-raspbian
$ git checkout voicekit
$ sudo scripts/configure-driver.sh
$ sudo scripts/install-alsa-config.sh

Next steps were actually from your post

After that hardware worked fine with
sam test speaker
and
sam test microphone

I created an assistant with the calculator-app and installed it sussessfully via the command the console provided.

sam install assistant -i proj_xyz

Everything pretty basic, but the the assistant recognizes the hotword and answers to the questions :slight_smile:

What I DIDN’T do was running
sam setup audio
after installing the AIY-Kit stuff, because the linked article says it overrides the config for the AIY-HW. I did it once by accident and the assistant wasn’t answering any more. Fixed it by running the command from the AIY section again

$ sudo scripts/install-alsa-config.sh

Perhaps this might help you?

Thanks fot getting back to me @pacocalvari . I’ve remixed the commands, changed a few things, , tried a few times, and I finally got a confirmed working solucion.

So these are confirmed steps to go from “zero to SNIPS” with the AIY VoiceKit v1:

[using a RaspberryPi 3B+ with 2019-04-08-raspbian-stretch-lite, and a Fedora Linux PC]

  1. copy a clean raspbian lite install to an microSD card

    sudo dd if=$image_file of=/dev/mmcblk0 bs=4M status=progress

  2. in /dev/mmcblk0/boot partition create 2 files

  • empty text file called ‘ssh’ to allow ssh access: touch ssh
  • to connect to wifi create file wpa_supplicant.conf and fill:
        country=[lowercase country code]
	ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
	update_config=1
	network={
		ssid="Your Wi-Fi network name"
		psk="Your Wi-Fi network password"
	}
  1. boot up and connect to pi through ssh

    ssh pi@192.168.1.17 [password: raspberry]

  2. setup and update

	sudo raspi-config [change default password, expand filesystem, update, etc]
	sudo reboot
	sudo rpi-update
	sudo reboot
	sudo apt update && sudo apt upgrade
	sudo reboot
  1. install AIY VoiceKit v1 hardware support
	sudo apt install git
	git clone https://github.com/google/aiyprojects-raspbian.git
	cd aiyprojects-raspbian
	git checkout voicekit
	sudo scripts/configure-driver.sh
	sudo scripts/install-alsa-config.sh
  1. install Sam Command Line Interface on your computer (not the pi)
            sudo dnf install nodejs npm
            sudo npm install -g snips-sam
  1. find pi in your LAN, connect, and install software
	sam devices
	sam connect [IP]
	sam init
  1. reboot and test system
	sudo reboot
	sam test speaker
	sam test microphone

These exact steps have worked for me, but there could be other ways to do it. If anyone tries, I’d love to know if it worked for them. Thanks

3 Likes

Awesome work guys @samovi . I’ve been able to setup the AIY voice kit with raspberry pi 3 using Ubuntu on WSL but further need assistance on how to make snips app work on pi. Am a little new on this, so don’t mind my question. Kindly point me to the right direction on how to take the apps on the snip website to the pi/google AIY kit because on checking sam status I was unable to find ‘snips platform not installed’.

Thanks a

See https://github.com/franc6/aiyproject-voicehat-activate-light-with-snips to get the LED working. If you’re running it on a satellite, there will be a small delay before it lights up. It’ll also let you push the button to activate snips, if you want to do that instead of using the hotword.

hi Sam, is it possible for you to share the img of a working sd card?