Maker ยท Technical Deep-Dive

Setting Up a Google AIY Voice Kit (V1) in 2026

A practical guide โ€” every command, and why

The Google AIY Voice Kit V1 was released in 2017 as a build-it-yourself smart speaker for the Raspberry Pi. I bought mine back then but never got around to assembling it โ€” until now. The official GitHub repo was archived by Google on Feb 9, 2023 and is now read-only, so a few things have quietly broken since the original instructions were written. This is a record of what I ran into and how I solved it, in case it saves someone else the same detective work.

A note on process: parts of the debugging below were worked through with the help of an AI assistant (Claude) โ€” the same way I'd normally ask a colleague or student in the lab when I hit something unfamiliar. No shame in that; it's just how troubleshooting works these days.

Before you start: known dead ends

A few things from the original setup flow no longer work, so don't waste time on them:

The Voice Kit V1 site and Quick Start Guide are still up and mostly still apply for the physical build.

What you need

1. Flash the system image

Go to the releases page โ€” despite the archive notice, the images are still downloadable. Grab the latest one, AIY Kits Release 2021-04-02, and flash it to your SD card with Etcher.

2. Assemble the hardware

The physical build itself was trouble-free โ€” instructions are clear, kit is well designed, cardboard folds fit the Pi 4's port layout without modification.

One thing to watch: insert the Pi into the cardboard enclosure before inserting the SD card, not after โ€” sliding the assembled hardware in with the card already inserted is awkward and risks damaging the card slot.

3. First boot

Boot went smoothly โ€” this is where the real troubleshooting started.

Troubleshooting: no WiFi

If wlan0 doesn't show up or won't connect, work through this in order.

Connect via Ethernet first so you have a reliable way in regardless of WiFi status:

ssh pi@raspberrypi.local
# default login: pi / raspberry

Check the WiFi interface actually exists:

ip link show

If there's no wlan0 at all, it's a hardware/driver issue โ€” check cat /proc/cpuinfo | grep Model to confirm which Pi board you actually have. (In this case, the board assumed to be a Pi 3 was actually an original 2014 Pi 1 Model B+, which has no WiFi hardware at all. Worth checking early.)

If wlan0 exists but isn't connecting:

rfkill list                          # check for a soft block
sudo rfkill unblock wifi             # if blocked

sudo raspi-config                    # Localisation Options โ†’ WLAN Country โ†’ set yours

sudo iwlist wlan0 scan | grep ESSID  # confirm your network is visible

sudo cat /etc/wpa_supplicant/wpa_supplicant.conf   # check for a network={} block

If the config is missing your network, add it cleanly (avoids typos, generates a proper hash):

wpa_passphrase "YOUR_SSID" "YOUR_PASSWORD"

Copy the output into the config file:

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=DE
network={
    ssid="YOUR_SSID"
    psk=<the long hash from wpa_passphrase>
}

Save (Ctrl+O, Enter, Ctrl+X), then apply:

sudo wpa_cli -i wlan0 reconfigure
# or just: sudo reboot

ip a show wlan0   # look for an inet 192.168.x.x line

4. Google Cloud setup

The Voice Kit's cloud speech recognition needs a Google Cloud project with billing enabled. This is a change from 2017 โ€” it's now required even to stay within the free tier. For light hobby use, the free 60 minutes/month of Speech-to-Text (plus $300 in new-account credit) comfortably covers testing.

Don't try to sign into Google through the Pi's own desktop browser โ€” it's an old, embedded Chromium/Epiphany build that Google's modern sign-in flow actively rejects (you may see a misleading "cookies are disabled" message). Do all of this from your laptop instead, and only use the Pi over SSH.

  1. Go to Google Cloud Console on your laptop.
  2. Create a project (e.g. aiy-voice-kit).
  3. Enable the Speech-to-Text API.
  4. Enable billing (set a small budget alert as a safety net: Billing โ†’ Budgets & Alerts).
  5. Create a Service Account โ†’ Keys โ†’ Add Key โ†’ JSON. This downloads a credentials file.
  6. Copy it to the Pi:
    scp ~/Downloads/your-credentials-file.json pi@raspberrypi.local:/home/pi/cloud_speech.json

5. Fix the outdated speech library call

Running the built-in checker:

python3 /home/pi/AIY-projects-python/checkpoints/check_cloud.py

throws:

AttributeError: module 'google.cloud.speech' has no attribute 'types'

This is a known, well-documented break โ€” the google-cloud-speech Python library moved on from the old .types structure, but the 2021 AIY code was never updated to match. Patch it:

cp /home/pi/AIY-projects-python/src/aiy/cloudspeech.py ~/cloudspeech.py.bak

sudo sed -i \
  -e 's/from google.cloud import speech$/from google.cloud import speech_v1 as speech/' \
  -e 's/speech\.types\.StreamingRecognizeResponse\.END_OF_SINGLE_UTTERANCE/speech.StreamingRecognizeResponse.SpeechEventType.END_OF_SINGLE_UTTERANCE/' \
  -e 's/speech\.types\.RecognitionConfig\.LINEAR16/speech.RecognitionConfig.AudioEncoding.LINEAR16/' \
  -e 's/speech\.types\./speech./g' \
  /home/pi/AIY-projects-python/src/aiy/cloudspeech.py

Re-run the checker โ€” it should now report:

Everything is set up to use the Google Cloud.

6. Test it

cd ~/AIY-projects-python/src/examples/voice
./cloudspeech_demo.py

This listens through the mic, sends audio to Google's Speech-to-Text API, and prints back what it heard โ€” confirming the full pipeline (mic โ†’ cloud โ†’ transcription โ†’ action mapping) works end to end.

Lessons learned