Registering and logging in removes this ad.
Registering and logging in removes this ad.
Voice Coding System Request for Comments
Voice Coding System Request for Comments
Version 1.0.1
John F. McGowan, Ph.D.
President, Research and Development
GFT Group Inc.
A Voice Coding System is a system for computer programming by spoken command without the use of the hands, keyboard or mouse. GFT Group is evaluating converting its internal Petrana(tm) Voice Coding System into a commercial product. GFT Group seeks market information, comments, and suggestions from potential customers.
Problem
People who need or want to program by voice, often because of the inability to use their hands, often find programming by voice using voice dictation systems such as Dragon Naturally Speaking, Via Voice, or Microsoft Speech slow and tedious. This can, for example, make it difficult or impossible to make a living by programming.
Causes
Essentially all programming languages are designed to be typed and not dictated (spoken out loud). Most programming languages, especially the popular C-family of languages (C, C++, Java, C#, etc.), make heavy use of case, special characters, formatting and other features that are easy to type but slow and tedious to dictate.
Example
for(i=0; i<55; i++) // C-family for next loop
{
printf("Hello out there. %d\n", i);
}is easy to type but hard to dictate.
Verbally positioning the insertion point is slow and tedious compared to manual positioning of the insertion point using the arrow and other keys on a keyboard. In general, many tasks can be performed manually using the keyboard without thinking about the details of the task, whereas specifying the task by voice usually requires thinking what we say. Manual programming using the keyboard can be learned like "riding a bicycle" and become automatic without conscious thought. Spoken programming requires thinking what we say.
Solution
The Petrana Voice Coding System automatically generates or modifies source code in the target language in response to spoken English descriptions of coding elements. Standard computer science terminology for coding elements is used where feasible. The voice coding system takes care of case, special characters, and formatting that is slow and tedious to dictate. The voice coding system also automates the insertion of header and include files and other changes that would previously require verbal repositioning of the insertion point.
The Petrana Voice Coding System automatically detects the programming language being used. The source code is generated or modified in the appropriate language. The Petrana Voice Coding System has built-in support for most commonly used coding elements, for example the for next loop, and several commonly used programming languages (C, C++, Java, Perl, Python, and Visual Basic). New coding elements and programming languages can be added quickly by end users by creating or modifying human-readable ASCII templates.
Example
Programmer says "Petrana insert for next"
Petrana inserts
for(COUNTER=0; COUNTER<RANGE; COUNTER++) // PETRANA for next statement C++
{
STATEMENT_1
}and the RANGE tag is automatically selected.
or
Programmer selects the code
printf ("Hello World\n");Programmer says "Petrana apply for next"
Petrana generates
for(COUNTER=0; COUNTER<RANGE; COUNTER++) // PETRANA for next statement C++
{
printf ("Hello World\n");
}where the selected code, "printf...", replaces the STATEMENT_1 tag automatically.
The for next code element for C/C++ is specified by a code template:
' TAG RANGE
for(COUNTER=0; COUNTER<RANGE; COUNTER++) // PETRANA for next statement C++
{
STATEMENT_1
}Code templates for common coding elements are supplied for C, C++, Java, Perl, Python, and Visual Basic. Code templates can be created and modified easily using any text editor. Code templates can also specify automatic insertion of headers, library link directives, and so forth -- eliminating verbal repositioning of the insertion point for many common programming tasks.
Example
"Petrana insert print line"
uses the code template
' TAG MESSAGE
' HEADER #include <stdio.h>
printf("MESSAGE\n"); // PETRANA print line Cto insert
#include <stdio.h> // if not already present in file
.
. ... code ...
.
printf("MESSAGE\n"); // PETRANA print line CIn addition to the code template system, the Petrana Voice Coding System includes a large number of intuitive voice commands for selecting and manipulating blocks of code quickly.
The Petrana Voice Coding System will work with any programming language, programming environment (such as MS Visual Studio), and set of API(s). The Petrana Voice Coding System currently requires Dragon Naturally Speaking Professional.
Request for Comments
GFT Group seeks market information, comments and suggestions for this potential product from potential customers.
In particular, would you buy this product? What would you be willing to pay for this product? What features would be essential for you to buy this product?
About Us
GFT Group has been developing speech recognition software for several years, including the Petrana Voice Commands for DVD and the Petrana Voice Commands for Outlook Express. We are developing sofware and systems for voice operated wall display computers that do not use a computer keyboard. The Petrana Voice Coding System was developed and used extensively for these keyboard-less voice operated wall-display systems.
Please contact
John F. McGowan, Ph.D.
President, R&D Division
GFT Group, Inc.
jmcg...@gftgroup.com
http://www.Petrana.net/
###



Why not voicecoder? It
Why not voicecoder?
It seems to me the goals of this project are exactly the same as the goals of the project voicecoder.
Voicecoder is free, and work with "natlink", which is also free. Natlink is THE extension of NaturallySpeaking which is capable of very complex sets of of grammars.
I would be very surprised if this project could compete with the things that are achieved with natlink/natpython and voicecoder already. But of course I would very much like to have a surprise.
For me, at this moment, the most important drawback of voicecoder is, that it works only in emacs. Having adopted emacs for most of my manual formatting (of css and javascript files), it is nearly impossible for me to develop code (python) outside the native IDE (like Pythonwin). Voicecoder is designed to have more programmes that work with it, but that part is not ready yet.
My take, Quintijn
I would spend $100
I would spend $100 without blinking an eye for a voice coding system that didn't totally suck.
I would spend $500 for a voice coding system that was acceptable.
I would spend up to $1000 for a system that was good.
And higher for a system that was excellent.
Of course, these prices are contingent upon the US job market for programming skills remaining healthy.
I suspect at this point the challenge is getting out of the suck zone. Here are some of my requirements:
Installation
Installation should require no documentation, take less than 5 clicks, require no typing, no reboot, follow Windows standards, and of course no manual intervention. Preferably based on Windows installer technology (.msi)
Before I buy
I want to be able to watch a video of the system in use.
I want to be able to download a fully functioning demo with a trial period of at least five days.
The user interface, documentation, graphics, and icons should look professional
Integration requirements
The only editor/environment that actually matters to me is Visual Studio 2005. Adding full dictation support would be nice.
VS .Net 2003 is a distant second
Visual Studio and Visual Basic 6, Emacs, Eclipse, and others are irrelevant (for me)
The most important feature of the editor is IntelliSense. It's how APIs are discovered, learned, and used. A voice coding system that expects me to actually remember API method names is worthless.
The voice coding system should be optimized for modifying existing code.
A voice command that spits out a new for loop is just a parlor trick. Real programming is modifying existing code.
Identifiers. Enough said?
Languages that matter
(clearly this list is specific to me)
C# v 1 and 2.0
Visual Basic .Net v7 and 8
XML
HTML
SQL
Discoverability and usability
Expectations need to be set as to how difficult and time-consuming it will be to learn the voice coding system.
Context-sensitive help is a must
A consistent and evident philosophy of voice commands should be in use
I'm not sure I could live with voice commands that require ‘petrana’ in front of each command.
“good” features
Language based voice commands that are aware that languages are no longer pure.
ASP.Net code contains C# or VB
Perl has embedded SQL literals
All code has embedded regular expressions
XSLT has embedded XSL
Voice commands for the debugger
Thoughts?
-- Scott W
Speech resources at SpeechWiki
Try QuickSwitch at Applied Recognition today