Voice Control

Voice Control

Amazon Echo

Amazon Echo

I’ve had an Amazon Echo imported from the US for a while but since it was officially launched in the UK I’ve added a second and an Echo Dot which now gives me coverage across downstairs and in the main bedroom. The Echo devices work amazingly well for voice control, the seven built in microphones makes it very sensitive and it deals with background noise very well, I also have an Echo remote which comes in handy if there is a lot of noise. I use ha-bridge to provide a link into my home automation system, this emulates the Philips Hue API which the Echo supports natively and allows me to enter URLs or call mosquitto_pub to send MQTT messages to directly control functions on my system so simply saying “Alexa turn on the kitchen lights” or “Alexa kitchen lights on” has the expected result or “Alexa turn the house off” to set away mode (it has to be on or off).

To allow more advanced home control functions I’ve also integrated the Echo with Node-RED using the Alexa Skills Kit so I can do more things than HA-Bridge allows such as asking for a status update of the house (temperatures, security status etc), setting modes such as “Alexa tell the house I am off to bed” as well as controlling volumes and things such as my Raspberry Pi Pan/Tilt camera with “Alexa tell the camera to look left” and so on.

Alarms, timers, shopping list (linked to Evernote via IFTTT) and general question and answering are all proving very useful too. As the Echo isn’t officially available or supported in the UK there are a few things that don’t work fully or need to be asked in a particular way, for example simply asking for a weather forecast won’t give you one for the current location as you can’t set a UK address but “what will the weather be like in Warrington tomorrow” works.

There is a workaround to change the timezone to the UK but the address changing mentioned there does not appear to work. Update – when I revisited this to do it again for another AlexaPi install it appears that the Chrome “Request Maker” extension no longer works in newer versions of Chrome (the envelope icon doesn’t appear) and I had to dig an old laptop out that hadn’t been updated to do it. As of September 2016 the Echo is now available and supported in the UK.

AlexaPi

AlexaPi is a Python script that implements the Alexa Voice Service (as used in the Amazon Echo) for the Raspberry Pi. This can be used for the basic question and answer service, adding things to your to do list and so on but things like audio streaming (news reports, music), alarms, timers etc. won’t work (update, the API was updated in March 2016 to add these functions and this branch of a fork of AlexaPi has some of it working already) and as the API terms and conditions prevent using a “wake word” to signal that you are talking to Alexa you have hold a button down while you speak with this, I’ve used one of these capacitive buttons on the one I have set up by my bed and it works really well.

AlexaPi will work with your custom ASK skills and while you can’t add connected home devices directly (real ones or via the ha-bridge mentioned above) it turns out that if you have an Echo and add them with that then they will also work with any AlexaPi installs you have which makes this a very useful (and cheap) secondary voice control method from other rooms. Alternatively you can link AlexaPi up to IFTTT and use the maker channel to make http GET requests so you can say “trigger kitchen lights on” etc. although security might be an issue and usability isn’t great.

Android Apps

There are a few Android apps that work with Alexa, the first was the Roger talk app (also available for iOS) which is a “push to talk” application for communicating with people using voice messages but it also has built in Alexa functionality, you press and talk to send your message and then when the reply comes back you press again to listen to it, it works but is quite slow. Alexa Listens takes a different approach, more like a real Echo you talk to it and it answers back without the two way comms effect of Roger, responses seem much faster with this and it can even listen all the time for a wake word (as long as the device is on) just like an Echo. The third one I have tried is Lexa but this is currently not available to install from the Play store outside the US (states “This app is incompatible with all of your devices.”), I contacted the devs about this and was told it was due to Amazon restrictions (not that it stopped the other two) but they were kind enough to send me the apk to side load. It works well but seem to ask me to log into Amazon nearly every time I tried it. Hopefully now the Echo has been officially launched in the UK they will make it available from the Play store here too.

These apps are handy for using Alexa when out of earshot of an Echo, eg. in the garden or away from home and is something the official Alexa app really should have built in. If you have smart home devices or custom skills set up with your Echo they will also work with these apps which is nice.

Audeme MOVI

This speech recognition and synthesis board from last years Kickstarter recently arrived, I’m not sure where this will fit into the plan now I’m using the Echo and AlexaPi. Maybe in the car where its “cloud free” nature could be a boon.

Audeme MOVI

AutoVoice

The AutoVoice Android app along with Tasker works reasonably well for voice control from an Android phone or tablet although it does take a bit of setting up. I have it set up so that shaking my phone gets it listening and then I can speak commands such as “kitchen lights on” upon which it will turn the lights on and speak a voice confirmation. There is a nice demo video of AutoVoice in action (not by me) on YouTube. In practice this doesn’t actually get used much.

Share this:

5 thoughts on “Voice Control”

I have been following your Amazon Echo posts, they have been very helpful, thank you for all your hard work. I am stuck on one thing though, how to you get the ha-bridge to make the MQTT request? I have no problem sending a URL but I would like to send MQTT directly.

Make sure mosquitto-clients is installed then in ha-bridge set the device type to “Execute Script/Program” and the set On/Off/Dim URLs like this:
mosquitto_pub -h your-mqtt-server -t lights/kitchen -m on