I've been playing around with this idea for a program that will allow users to use speech to control their computer. I've needed a project I could work on to learn C#, and so if everything goes according to plan, this'll be my first .NET application after working exclusively in VB6 for program development.
Microsoft released a
Speech SDK that installs all the necessary dll's for API calls, and I even found a basic program that attempts to match what you say to a list of keywords I've picked out as command phrases.
Ideally, this program will be able to accept voice input globally, even without focus. A user would attach a microphone to their computer and as long as the mic could pick up on what the user is saying, one could theoretically control their computer from several feet away without laying so much as a finger on the keyboard or mouse. Now, to execute the voice commands, I'd need to grab what is being said and then execute a program based on the keyword that is used. For example, if someone said "search fastfood", the program would start the default internet browser, go to a website and search for "fastfood".
I'm sure starting up the programs based on the keyword is easy, as I could simply execute a program via the command line and it'd start right up. I would need to find out the "hooks" of certain popular programs that would allow me to pass along arguments to, for example, Firefox as it started up.
At this point, I'm sure the post sounds a little disjointed. I've been on a "stream of conciousness" all day today and I'm just brainstorming, really. I wanted to see what you all thought about this idea of mine so let me know if I should go ahead and run with it or if I should abandon all hope.
By EER @ Sat Aug 12, 2006 07:54 AM
Well, firing up programs is fairly easy, just use Process.Start() in the System.Diagnostics namespace.
However, Speech recognition technology plain sucks (from a technical POV, ideally it's great, but wait 'till you catch a cold).
IF the Speech SDK works ok, I think the project could easily be accomplished within a day or two worth of work (probably even if you're new to C#).