I built this remote for someone I was helping with Multiple Sclerosis. MS had affected his legs, vision, and dexterity such that he needed remote controls to use the things around him, but he was having difficulty seeing and pressing the buttons on those remotes. Below are two designs we tried out. Depending on the user, one or the other may be a better fit.
In the first design, you initially press the button (could be any type of adaptive switch) to begin reading the menu options, then press it again to select the one you want. TV and VCR then each have a submenu of device specific actions. Everything is done through that one button except for going directly to a specific TV channel, which is done through voice. This could have also been done with just the button, but the user preferred voice recognition for that function. Also it’s a demonstration of how multiple methods can be mixed.
In the second design, you only press the button to initiate voice recognition. Again, this could have been instead initiated with a trigger word or phrase to be fully voice controlled, but the switch avoids accidental false triggering from the TV or other sounds. This is a choice to be made after testing with the user in their specific environment. For ease of comparison, the “menus” are the same as the first design: TV, VCR, FAN, LAMP; and submenus for TV and VCR. There could be certain advantages to making all voice commands active at once, so you could directly say TV-power all in one go for example. These and other options need to be tested with the intended user for the best fit.
The voice recognition is done by an EasyVR module: http://www.veear.eu/products/easyvr3/
It can do speaker dependent and speaker independent recognition. For ease of setup I opted for speaker independent through the QuickT2SI tool which allows you to simply type the words that need to be recognized: http://www.veear.eu/products/quickt2si-lite/
This added some cost to get started but I figured it would save me significant time and effort in the long run.
The synthesized speech is done by an Emic 2 module: https://www.parallax.com/product/30016
This text-to-speech module has a lot of useful options but also allows an Arduino or other simple microcontroller to simply send the text it wants spoken over serial.
The TV and VCR are being controlled through IR signals, just as they would be with their original remotes. I recorded those IR codes and the Arduino plays them back through an IR LED at the right time to perform a requested action.
The fan and the lamp are on RF remote control outlets, the control for which is wired directly to the Arduino. In this way the Arduino can simulate pressing buttons on that remote which toggles the outlets on or off. With the power switches for the fan and lamp set to ‘on’, toggling power at the outlet toggles power for the target device.
The code can be found here: https://github.com/bobparadiso/voiceRemote