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.

Copyright © 2002-2023 Rick Mohr