Here at 3spin – my current employer – we lately experimented with unlisted voice commands on Google Glass. During the process we discovered some pitfalls you might encounter as well.
Why unlisted voice commands?
On Google Glass there exist two types of voice commands. As Glass is mostly a hand free device you can define a voice trigger command – most likely a short sentence – to start your application without any physical interaction. The other type of voice command is called contextual menu command and can be used to navigate the menu structure of your application by voice only.
A list of both voice trigger commands and contextual menu commands is build in in every Glass platform release. Google claims these commands are especially tuned and therefore will be recognized particularly well.
“Glass voice commands are carefully tuned and designed for the best accuracy and recognition. This means they take quite a bit of time for us to model and develop.”
https://developers.google.com/glass/distribute/voice-checklist
When developing Glassware you may need other voice commands than the build in ones. For example there are contextual menu commands for “play video” and “pause video” but none for “stop video” at the moment. In this case you could submit the missing command to Google for approval, hoping it will pass and be part of the next platform release.
In the meantime it is possible to use the desired command as an unlisted voice command. Any string can be used as an unlisted command as long as the DEVELOPMENT permission is requested in the AndroidManifest.xml file of your application.
Why not use unlisted voice commands all the time?
Fixed, build in lists of voice commands do seem rather inflexible at first. Application developers will be highly dependent on Googles approval process and the XE versions currently installed on their audiences devices. However, there are several disadvantages to be aware of when using unlisted voice commands.
Worse recognition quality
We have not tested this in detail but it seems very likely that unlisted voice commands will have worse recognition rates than the build in, fine-tuned ones. Especially longer and more complex unlisted commands are only recognized with some difficulties.
No MyGlass approval
This is a no-go for most applications. The DEVELOPMENT permission required for unlisted voice commands prevents the application from being approved for MyGlass – Google Glass’ own app store. So you either have to wait until your unlisted voice command gets approved and part of the next platform version or you don’t care about market access at all. The latter may be the case for internal business applications that are distributed through other channels than MyGlass.
Needs network access
This took us a while to figure out. Unlisted voice commands need network access at least one time before they can be used. Our theory is that these commands need some kind of pattern definitions that are downloaded from Google servers. This happens right after you have installed the application with unlisted voice commands. Glass will contact a Google server, download the definitions and cache them on the device. After this process the unlisted voice commands will work fine, even with all network connections turned off.
When using a Glass not connected to a Wi-Fi network or paired with a phone that is connected to a Wi-Fi network your unlisted voice commands will just not be recognized and you might be wondering why. We encountered the problem that our Glass was paired with a phone that in turn was connected to the cellular phone network. So Glass had network access but nevertheless it refused to download the definitions. When connecting the phone to our Wi-Fi network the unlisted voice commands started to work almost instantly.
Roundup
Unlisted voice commands are a great tool for prototyping and development as long as you are aware of their disadvantages. Also they might be useful for business applications in controlled environments. For production ready consumer applications however you should submit missing voice commands as soon as possible for approval.
Christophe Oosterlynck
November 19, 2014 — 3:21 pm
Great article! Took me a while to realise that network connection is needed when unlisted commands are used for the first time. This doesn’t seem to be documented anywhere and it’s nice to have my presumption confirmed by this post.
Do you have any more info on this? Will the voice commands always be available once they have been recognised once? Voice commands still seem to work after uninstalling app and starting it up after a reinstall and no internet connection. But maybe there is some kind of limit to the total of commands that will be cached.
The only situation in which I have lost recognition of my custom commands, was after a factory reset. Which makes sense 🙂
Christine Coenen
November 20, 2014 — 10:25 am
Thank you!
Sadly we don’t have any more information on how the commands are stored. However, I can confirm your observations: Uninstalling an app does not remove the voice trigger but a factory reset does.
The documentation on this topic is indeed poor. But that is not that surprising when using a developer option on a beta device 🙂