E.g. creating a voice command to write a loop template.
I think the power/potential of voice activation tools for productivity would lie in using spoken word to trigger actions and events, but not to replace typing.
For example, if you can configure a voice recognition package to trigger commands like "open", "save", "build", "run", etc, you can save yourself time hopping through menus or typing hotkeys. However, I wouldn't recommend putting any effort whatever into using voice recognition to actually generate your source code keyword-by-keyword. Unless you are a very fast speaker or a very slow typist, you will probably not be able to increase your speed, accuracy, or effectiveness much by this method. Imagine having to say "dot", "open-bracket", "semi-colon" and so on every time you need the special markup characters that are so much more prevalent in programming than in prose. Without a highly specialized approach (one which will take much more effort than tweaking a package like NaturallySpeaking), I doubt you will increase efficiency this way.
One of the biggest areas of success in productivity as a programmer is in avoiding context shifts. For example, doing as much as possible without removing your hands from the keyboard (using hotkeys instead of mousing) will help you stay focused and effective. A voice activation system might be effective if it reduces how much you need to use the mouse or move away from the program you are in, but trying to replace typing with speaking does not sound likely to be beneficial.
More efficiently in what sense?
IMO voice input for programming is substantially less efficient than typing, particularly in an decent editor with good macro and template facilities. I think you'd be better served figuring out the domain(s) you normally work in, figuring out what code gen tools you already have access to or can create, and nail down every possible keyboard and template efficiency you can find.
Programming vocabulary is specialized and focuses on a different set of terminals than "normal" speech does. Context- and language-sensitive editors have access to the AST of whatever language, environment, and framework you're working on--Dragon and similar voice input software does not.
This is something I've played with every couple of years for over a decade now, and it rarely takes more than an hour or two before I give up in disgust. The abstractions we deal with as developers simply don't map to the English vocabulary. Even assuming voice macros I have yet to see a system, or combination of systems, that doesn't make me want to punch my monitor in the face.
|show 2 more comments|
I've used it extensively for a code type task, in the end I had many macros that would save me 10 or 20 mouse clicks and moves! It would take me a bit less time and I found it extremely convenient.
It was for coding, something called reaktor DSP environment. I know the program pretty well. I do believe that it would be EXTREMELY efficient at coding.
What I think you need to do though, is not use any normal text. Just make a specialised command mode that doesn't interpret any normal phrases, and copy into it about 2000 words that you use in programming; "foreach, var, Vector3()" etc.
You'll need to make some commands like logical if
After that you will be coding 1 language A LOT faster I think, unless you use predictive code typing which is very fast anyway. But you will have to train it as a command mode only, ignorning normal prose text and teach it a mass of code words. I will do this myself soon because my hands need a rest from coding for a week or 2. It will be a safe solution for me.
Remember, Dragon naturally speaking PRO is the only serious solution for making a very specialised command mode. You will be able to add commands like reference search to open a browser and read refs about a highlighted text, etc. Premium version is limited.
Alexandria Carstens, who is a speech recognition (Dragon) trainer & consultant in Vancouver, gave me a couple of advice:
(if you are a Dragon NaturallySpeaking user, you will probably be interested in her website which gives useful advice)
Also, here is an interesting video/demo on programming by voice (using Dragon NaturallySpeaking + DragonFly): http://pyvideo.org/video/1735/using-python-to-code-by-voice
The source code for voice commands isn't online yet, it should be released in June or July on https://github.com/tavisrudd?tab=repositories.