2 years ago

Voice control on your Pi

Use Amazon’s Alexa service on a Raspberry Pi and open up a world of voice-control projects

In the UK, all the Star Trek shows have just been put back on Netflix, reminding us of the desire to ask the computer for Earl Grey tea or Klingon coffee (we can’t start the day without a raktajino, you know). So it’s exciting to see Amazon’s Alexa is quite readily available on the Pi now. Let’s get it working, then, and make some projects.

You’ll need

  • Alexa AVS
  • A constant internet connection
  • External speakers
  • A USB microphone

We need to start by installing VLC. Not just normal VLC, though – we need to install this one slightly differently. Open up the terminal and enter:

This might take a while; once its done, we then need to set the environment variables so we can access VLC from Alexa properly later. Do this with:

Next, it’s time to download the Alexa files we need:

Now we need to install our dependencies: Node, JDK, and Maven. In the terminal, enter:

And let it work. It will end by prompting you to install Node.js. Do that with:

Next, use cd to move to /alexa-avs-raspberry-pi/samples/companionService and install npm with:

Once that’s finished, we need to then install a specific version of the Java Development Kit (JDK). Use cd to move to the alexa-avs-raspberry-pi/samples/javaclient folder and run:

You will get a message from Oracle Java installer that you must accept the terms of service for the Java SE platform, which you need to now do.

Once that’s complete, download Apache Maven from magpi.cc/2bDPluf. Move to the Downloads folder and extract the contents with:

You then need to create a file with some system settings for Maven. Start by creating the file like so:

Add the following to the file you just opened:

Save and exit the file. Reboot your Raspberry Pi before continuing.

Certification

We now need to generate self-signed certificates:

Once installed, move back to /alexa-avs-raspberry-pi/samples/javaclient and run the script:

It will ask you to enter some information. Enter the following details exactly as shown:

  • Product ID: my_device
  • Serial Number: 123456

Just press ENTER when it prompts you for a password and then let it run and generate a key.

Now we can get our details for the Alexa Voice Service; this does require an Amazon account, though. Go to developer.amazon.com and log in – we then had to ‘complete’ our registration before continuing, so be prepared to do so as well.

Once you’re at the dashboard, click on the Apps & Services tab, then Alexa. On Alexa Voice Service, hit Get Started. From the drop-down menu ‘Register a Product Type’, select Device.

On the first page, fill in Device Type ID as my_device and Display Name with My Device. Click Next to go to the security profile. Click on the Security Profile drop-down and choose ‘Create a new profile’.

Enter the following:

  • Security Profile Name: Alexa Voice Service Sample App Security Profile
  • Security Profile Description: Alexa Voice Service Sample App Security Profile Description

Click Next and your Client ID and Client Secret will be generated for you. Go to the Web Settings tab and make sure the security profile you just created is selected in the drop-down menu, then click the Edit button.

On Allowed Origins, click Add Another and then enter https://localhost:3000 in the text field that appears. For Allowed Return URLs, enter https://localhost:3000/authresponse and then click on Next.

We’re now on Device Details; first set the Category as Other. Use a description of ‘Alexa Voice Service sample app test’ and then choose ‘Longer than 4 months / TBD’ for the expected timeline question. Finally, enter 0 for for the number of devices you plan to commercialise and hit Next once more. On the next tab, click for Amazon Music and hit Submit. You’re done!

Final configurations

In a browser, go to the developer overview page. At the top of the page, select the security profile we created and click Confirm. You’ll need to enter a dummy web address for the consent privacy notice URL.

Click Save. Click on Show Client ID and Client Secret and make a note of them.

Back on the Pi, move the alexa code folder to the Desktop and rename it alexa-avs-raspberry-pi-master. In the terminal, open the following file:

Post your Client ID and Client Secret in the fields clientID and clientSecret respectively, and then save and close the file.

Now we can get the Alexa service running. Start in the terminal with:

Open a new terminal window. Move to alexa-avs-raspberry-pi-master/samples/javaclient and use:

It will say ‘build success’ when done. Run it with:

Talk to me

A window will pop up asking you to register the device. Copy the URL into a browser and log into Amazon, and click Okay on the next page to confirm everything. You’ll be redirected to a page saying ‘device tokens ready’.

Click OK on the original pop-up and you can start asking Alexa stuff. Hit the Start Listening button, wait for the audio cue, then ask it something like ‘what is two plus two’. Hit Stop Listening and it should reply ‘four’. And that’s it, you’re ready to play with Alexa!

Check out Akash Chandran’s version of this tutorial which ours was based on!