DSC_0005 Cover Photo by Zach Doty for Build Your Own Amazon Alexa x Echo from Raspberry Pi

How to Build Your Own Amazon Alexa with a Raspberry Pi

Howdy, it’s been a minute since my last post on Alexa Skill Development. I left us hanging, as I mentioned in one of my previous SQL posts, work craziness, sickness, and general life stuff happening imposed a brief, involuntary hiatus on writing.

Enough self talk to make future self feel better. Let’s build our own Amazon Alexa with a Raspberry Pi! What a step up from our previous articles. 🙂

But first! A couple of notes: This is NOT necessary for you to do in learning Alexa Skill Development. You can use a regular Echo instead of this expedition into Computer Homebrew 102. Also, I developed my first Alexa skill without an Echo or comparable device at all. One more thing, this is a long post that is both deep and wide ranging. Don’t say I didn’t warn you.

1. The Materials List

To get started, you’ll need a few things:

  1. Raspberry Pi, version 2 or later
  2. Power source
  3. Micro SD card (Recommended at least 8 gb in storage size)
  4. Speaker with a line-in 3.5mm cable (or headphones of similar line-in spec)
  5. USB microphone
  6. Keyboard and Mouse
  7. HDMI cable to connect to a monitor or TV
    1. Obviously, you need a monitor or TV. 🙂

 

A few notes on the Raspberry Pi: I recommend you get a pre-assembled kit, for time and convenience, if nothing else. I previously purchased from CanaKit on Amazon, and have been pleased with it. If, for some reason, you are building your own or need to reformat, the two articles below from RaspberryPi.org are simple, fast instructions to get you up to speed.

 

Formatting a MicroSD card 32 GB or less:

https://www.raspberrypi.org/documentation/installation/noobs.md

Downloading New Out of Box Software (NOOBS) for Raspberry Pi, in preparation of your first boot.

https://www.raspberrypi.org/downloads/noobs/

 

Okay, we’re going to proceed assuming that you’ve taken care of the above, and have successfully booted your Pi, connected all requisite hardware, connected to the internet, and so on. Below is where I’m at.

2017-02-20-001-Alexa-Raspberry-Pi-Successful-Boot

2. Installing Other Utilities

Another note here, it is possible to SSH (read: a bit like Microsoft’s RDP remote desktop application, but command line style) your way into the Raspberry Pi. I will not be doing that. This may sound a bit silly, but I don’t have a multi-screen dock for my laptop (capped at 2), and I’m happy for the Pi and other monitor to be a standalone computer. (Perks of a wide desk.) Also, the Wi-Fi USB card I’m using is very slow at the moment. Also, an edit after I’ve written this post offline: Linux-esque command line work is a royal pain in the you-know-what. Remarkable computing has advanced to where it is today. More on Raspberry Pi intricacies later.

Enough of my discourse, let’s continue setting up our Raspberry Pi / DIY Alexa to-be. Task time.

Navigate to your Pi’s command line module.

  1. We’re going to update the GET. Type:
    1. sudo apt-get update (Pro tip: don’t misspell sudo as I’ve laughingly done on the first try.)
    2. In the new line created by default, type: clear and hit enter. This will clear your command line.

2017-02-20-003-Alexa-Raspberry-Pi-Get-Update

3. Registering Your Raspberry Pi as an Alexa Voice Service Device Type

Alright, head to the Amazon Developer Portal and log in with your credentials.. (If you’ve followed along with previous posts, you have a login! If not, see this article on setting up an AWS account.)

C-2017-02-23-001-Alexa-Raspberry-Pi-Registration

Once you’ve logged in, click on the Alexa navigation item, then click “Get Started”. You should land on a page that has a “Register Product Type” drop-down. Select Device and continue.

C-2017-02-23-002-Alexa-Raspberry-Pi-Registration

You’ll be taken to a new screen / process to create a new device type. Choose and type your  device type ID and display name. For ease of process here, I’ve used the same value for device type ID and display name.

C-2017-02-23-003-Alexa-Raspberry-Pi-Registration

Once you’ve selected your ID and name of choice, click next. Now we need to create a new security profile. Click the dropdown menu that reads, “Select Security Profile” and click, “Create New Profile”. If you’ve filled out all the fields properly, you should have the option to submit this device / product. Hooray! Below is what I see after I submit the new device.

C-2017-02-23-004-Alexa-Raspberry-Pi-Registration

Create a Security Profile Name and Description of your choosing and click “Next”.

C-2017-02-23-005-Alexa-Raspberry-Pi-Registration

You’ll now see a new screen with your created security profile. Below, you should see some tabs such as, “General”, “Web Settings”, “Android/Kindle Settings”, and so forth. Click on “Web Settings” and then click “Edit”.

C-2017-02-23-006-Alexa-Raspberry-Pi-Registration

You should now be able to edit the “Allowed Origins” and “Allowed Return URLs” fields. Enter the following values into each of the fields, respectively:

1) https://localhost:3000

2) https://localhost:3000authresponse

Once you’ve entered the above values, click “Next”.

C-2017-02-23-007-Alexa-Raspberry-Pi-Registration

Now we need to add some additional detail about our device type.

  • Upload an image (I used this one, they’re picky about sizing)
  • Choose a category (I selected “Other”)
  • Provide a short description to your pleasing
  • Select “No” for plans on making product available to general public
  • Select “No” for product directed to children

C-2017-02-23-008-Alexa-Raspberry-Pi-Registration

Click “Next” to proceed. The next screen asks about applying for access to Amazon Music. I’m selecting “No” for the purposes of this exercise.

4. Enable Login With Amazon for your new Device / Product

Sweet! After you click, “Submit”, you should see the below. Now head over to the “Apps & Services” section, and select the “Login with Amazon” item, once the Apps & Services screen has loaded.

C-2017-02-23-009-Alexa-Raspberry-Pi-Registration

From the drop-down menu of existing security profiles, select the profile we just created. You’ll need to enter a consent privacy notice URL and a consent logo image. Because we’re doing anything public facing, you can enter any URL you’d like here. For the image, I used the same image from the device creation process. Click “Save” and let’s keep moving.

C-2017-02-23-011-Alexa-Raspberry-Pi-Registration

Upon a successful save, you should see a table with a column labeled “Oauth2 Credentials”. Click, “Show Client ID and Client Secret”, copy and save the information somewhere safe. Next stop, Raspberry Pi.

5. Install the Application on Your Raspberry Pi

Flip back over to your Raspberry Pi and type the following two bullet point texts as unique lines into command line.

  • cd Desktop
  • git clone https://github.com/alexa/alexa-avs-sample-app.git

It should take a minute or two to process, and you should see the below.

C-2017-02-23-012-Alexa-Raspberry-Pi-Sample-App-Setup

Next, type the below point texts as unique lines into command line:

  • cd alexa-avs-sample-app/
  • nano automated_install.sh

After returning the two above lines, you should see something like the below. Remember what we entered in the Developer Console a few steps ago? You’ll need this information here. (Highlighted boxes.) Update from 2/25/2017: I actually had quite a bit of trouble with this step. Linux command line / text emulator is not my friend yet. The trouble I had here was making and saving my changes to the below. However, the program is surprisingly helpful! It will prompt you to verify credentials before install proceeds.

C-2017-02-23-014-Alexa-Raspberry-Pi-Sample-App-Setup

After you’ve made the appropriate changes, command line language of CTRL + X should help you save the changes. Close out the command line window and re-open. Type the following bullet texts:

  • cd Desktop
  • cd alexa-avs-sample-app
  • . automated_install.sh

When prompted for the AVS + Raspberry Pi License and Agreement, obviously answer and/or “y” to proceed, and answer yes and appropriate and desired throughout the setup process. E.g., you’ll be asked about language preference, audio input settings, enabling wake word detection, and so forth. (It takes anywhere from 30 min to 1 hour.)

Once the install runs, it’s time to start the Alexa service!

6. Running the Alexa Service / Finishing Touches

To test and run the Alexa service, we need 3 command line terminals open. The command paths for these are at the end of the install. (As I type this, the latest install on my Pi is approaching 45 minutes, so I’ll have to give you the bare bones for now based on past tests and some generous documentation.

The first terminal will set Alexa up to be listening on port 3000 (remember the local host URLs from earlier?) The second window deals with setting up a Java client and logging into Amazon with the Security profile we set up. Logging in and confirming will enable you to initiate the connection to Alexa, paving the way for the third terminal, which enables the wake word detection and actual running of the Alexa service. Woohoo! I’ll update with examples later.

Update — 2/25/2017:

So, the whole process took a looooong time. At about 3 am of the night I wrote / finished this post, the Pi finally finished unpacking and installing everything. Below is our success confirmation! I’ll be testing this evening…

Wrap-Up

Goodness, what a ride, if you stuck it through the whole article. You could do this, or just get a darn Echo. After all this, I recommend you buy an Echo. 🙂

Other miscellaneous updates from 2/25/2107: By the time I got to the wrap up, it was 3:30 in the morning, yikes! I wasn’t feeling very descriptive, nor was I yesterday either. This was an incredibly long process that took several days from start to finish. Was it worth it? Yes. I’m still going to test the capabilities tonight and hopefully have some follow up’s in the coming days. Will I be primarily using an Echo moving forward? Yes.

2 replies

Trackbacks & Pingbacks

  1. […] back, Amazon Alexa geeks! First, thanks for both your patience and kind feedback on the process of building your own Alexa and testing your DIY Alexa. Honestly, that was one of the hardest challenges I’ve had since […]

  2. […] Hey there folks, happy weekend! Hope this post finds you well. This is a follow up to my previous post on how to make your own Amazon Alexa / Echo device from a Raspberry Pi. […]

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply