Command Sequences
You can configure Vocola to allow speaking several commands in a row without
pausing. For example, assume your commands allow you to say:
"3 Words Right" |
|
to move the cursor 3 words to the right, |
"2 Right" |
|
to move the cursor 2 characters to the right, and |
"Kill Char" |
|
to delete 1 character. |
If you wanted to speak these three commands in succession you would normally
have to pause between commands, saying
"3 Words Right" (pause) "2 Right" (pause) "Kill
Char".
With command sequences enabled you don't need to pause, so you can say
"3 Words Right 2 Right Kill Char".
Once you get used to speaking command sequences, text editing by voice becomes
faster and less frustrating.
Note that with Vocola 3 you can sequence commands defined in different files, such as a global command and an
application-specific command. But you can't sequence a command which isn't enabled—for example, if you wanted
to bring up your mail application and start a new message you would have to say "Use Mailer"
(pause) "New Message". (You could of course write a global "New Message" command to do both actions.)
Also, you cannot sequence a Vocola command with a WSR command. But if a WSR command is important in
sequences you could write a Vocola command which invokes it using
HearCommand, and sequence that.
To enable command sequences, use the Vocola Options Panel.
You might think command sequences would lead to mistakes when an unexpected combination of commands is
recognized, but in practice I have found few misrecognitions. It's a good idea to avoid single-word
commands, but that's a good idea anyway.
How to prevent command sequence misrecognitions
Command sequences work pretty well, but unfortunately are more likely than single commands to be misrecognized
as dictation. For example, the commands "Word Right" and "Kill Word" are reliably recognized as single commands,
but the sequence "Word Right Kill Word" may be misrecognized as the dictation "word right till word".
You can work around this problem using the library function
Vocola.AddTermAlternate, which
registers alternate command words. For example:
Vocola.AddTermAlternate(Kill, Till)
|
This call directs Vocola to recognize any command containing the word "Kill" even if the word "Till" is spoken
instead. So if WSR hears "Word Right Till Word" Vocola will still invoke the commands "Word Right" and "Kill
Word". It's as if the "Kill Word" command were written as (Kill|Till) Word, except it
doesn't obscure the meaning of the command and it works for all commands containing the word "Kill".
If you encounter misrecognitions, add calls to an onLoad function
in _global.vcl (or another global command file), for example:
onLoad() := Vocola.AddTermAlternate(End, And)
Vocola.AddTermAlternate(Find, Fine)
Vocola.AddTermAlternate(Paste, Pace, Base, Based);
|
Because most command words won't need alternates you can fairly quickly eliminate most command sequence
misrecognitions. It's an annoying time investment, but having the efficiency of command sequences
may override the annoyance.
Some readers may wonder why this problem arises. It's caused by a baffling feature of the WSR
engine—a command with many alternative words has a lower recognition score than a command with few
alternative words. Since command sequences use a giant command with many alternative words, the engine gives
them a very low score. WSR does favor commands over identical dictation, so in most cases a command sequence
is recognized just fine even with its low score. But if one or more command words sounds very similar to another
word, the engine gives a higher score to the non-identical dictation and you get a misrecognition.