The Nao robot has a range of facilities to let you interact with it, from tactile sensors to vision system and speech recognition. However, with the V3.3 based Nao the speech recognition systems capabilities don't really stretch to free format speech input. What I mean by this is that the speech recognition system can currently be provided with a word or phase list and will recognise these words. This is great for interactions based around Nao asking a question or awaiting a command but doesn't address the need to be able to input free format speech.
Why would you want free format speech input? Imagine you have a question, you want to be able to ask Nao and let him do the work of searching the internet for the answer. Once he gets the answer he can tell you what he has found. The basis for this type of operation are already here with things such as Nao Knowledge, NaoPedia and WikiQuery, behaviours already available for Nao. The issue is how do you get your free format, spoken question over to Nao?
Aldebaran have already addressed this area by providing an XMPP based remote calling system for Nao that they have implemented as a widget interface. What I wanted to do was take it a little further and see if we could get speech input. This is the prototype we ended up with:
As I am an Android phone user and have done some app development, I decided to see if the Google speech to text capabilities of the phone could be harnessed as the input source. I then just need a method to get the data from the phone over to Nao.
Nao has, as part of his system, the concept of memory locations that can store user data. The API can read from and write to these locations and the system even raises a trappable event when the data has been changed in a location. So all we need is to be able to write to a Nao ALMemory location from Android. Enter the Nao Android Communications Library, a Nao Developer Program project started by Bilock. This library exposes a suite of methods to let us call any function within the Nao API. Ah ha, we have a methodology. Here is a little video explaining the approach the prototype took, showing the prototype interface and the interaction with Nao.
All the behaviours and the Android App are available on the
Nao Developer Program website.