I'm controlling my Legacy locos with an Arduino, much as Professor Chaos has done. And now I'm using a MOVI voice-recognition shield to give my trains voice commands such as "U.P. 4004, proceed" which sends a command to the loco to start moving at a given speed and momentum. Ultimately, I'll simulate more of a two-way conversation.
The voice recognition is pretty easy with the MOVI board, and is speaker independent (no voice training), but you need to define all possible phrases in advance of course. Once you've done that, you can assign any phrase to trigger any Legacy command or set of commands.
The more challenging part was programming the Arduino to talk to Legacy, but it's working perfectly now. I had to become an LCS Partner to get all of the low-level commands. Professor Chaos did it with TMCC and DCS, which inspired me to make it work with Legacy.
It would be a much bigger step to turn this into a commercial product that anyone could use, but certainly do-able. Right now, I can modify the software to work with any new layout I might build because the layout is represented in a data table -- so I simply change the table when I build a bigger layout.
My primary goal is to get a half-dozen trains running at the same time, autonomously -- without collisions and without deadlocks, on routes that the computer chooses. Trains will automatically slow to a stop as they enter destination sidings, make announcements, etc. I'm almost there -- the hardware is done (turnout motor control, occupancy sensors, Legacy interface to Arduino, etc.), and I've done everything with proof-of-concept code and am now putting all of the software pieces together. I'm using seven Arduinos but I might add another one dedicated to voice control -- it will only add about $15 to the cost of the project to do so, though I'm running out of room in my control panel! ;-)