Vocola Information Pages   by Rick Mohr   (last modified May 11, 2002)

->  Introduction
 Using Vocola
 Language Tutorial
 Download Vocola
 Install Vocola
 Converting DVC Files
 Troubleshooting
 Support
 Wish List
 My RSI Story
 

Introduction

Introduction to VocolaVocola is a voice command language--a language for defining commands to control a computer by voice. It was developed for use with Dragon NaturallySpeaking and implemented using Joel Gould's NatLink package. Vocola (pronounced "vo-CO-luh") builds on the strengths of both these systems, using the keystroke syntax and built-in functions from the Dragon Macro Language and a grammar syntax similar to NatLink. 

(I wish to acknowledge and appreciate Joel Gould for his time and care in designing, building, and "productizing" NatLink, which enabled and inspired Vocola.)

Examples

Vocola's main benefits are conciseness and ease of use. For example, here are four voice commands defined in Vocola:

 Copy That = {Ctrl+c};

 Copy to NatSpeak = {Ctrl+a}{Ctrl+c} AppBringUp(NatSpeak);

 1..40 (Left | Right | Up | Down) = "{$2 $1}";

 Sort by (Date=e | Sender=r | Subject=s) = {Alt+v}o $1;


The first is a simple keystroke command -- saying "Copy That" sends the keystroke Control-C, which copies the current selection to the clipboard. The great majority of commands needed for controlling a computer by voice are simple keystroke commands like this. 

The second command, invoked by saying "Copy to NatSpeak", copies a window of text (Control-A selects all text and Control-C copies it) and brings up the NaturallySpeaking editor (using the built-in function AppBringUp ).

The third command allows controlling the cursor, by saying for example "3 Left" to move left three characters, or "6 Down" to move down six lines. Spoken words match variable terms on the left and are substituted into the keystroke sequence on the right. For example, when saying "3 Left" the spoken "3" matches the numeric range "1..40" and the spoken "Left" matches the alternative set "(Left | Right | Up | Down) ". The keystroke sequence "{Left 3}" is constructed and sent, and the cursor moves left three characters.

The fourth command allows sorting messages in the Netscape Mailer, by saying "Sort by Date", "Sort by Sender", or "Sort by Subject". The matched word "Date", "Sender", or "Subject", causes the appropriate keystroke "e", "r", or "s" to be inserted into the keystroke sequence.

These and other features are discussed in greater detail in the Vocola Tutorial.

Why a New Voice Command Language?

Existing voice command languages are grafted onto existing programming languages. This means you can program any behavior you want, but unfortunately you're stuck with the syntactic overhead of the base language. In contrast, Vocola is designed specifically as a voice command language, not as a general-purpose programming language. This means you can write quickly and concisely the great majority of voice commands you need, and use another language in the few cases where you need more power. When I switched to Vocola I was able to convert all but two of my 200+ Dragon macros, and at this writing use something over 600 Vocola commands.

The Dragon Macro Language (used in NatSpeak through version 5) and the newer VisualBasic-based language (introduced in version 6) both provide the necessary ingredients for writing voice commands. But, both are cumbersome to use. Simple commands consume multiple lines, and it is hard to write them quickly, keep them organized, and keep track of what you have defined.  Joel Gould's NatLink system is a great improvement. Commands are more flexible, easier to organize, and are reloaded instantly. And the Python base language brings the power to program rich behaviors. But the trade-off is that a simple command still consumes four lines instead of one, is split in two locations, and shares the command file with the Python plumbing which makes it work.

In Vocola most commands consume one line. Besides easy creation, this also makes it easy to see what commands you have defined. And because Vocola commands are translated into NatLink they benefit from the quick reloading and careful engineering of that system, and can coexist with existing NatLink commands.

Main Features

Here's a summary of important Vocola features:
  • Simple, concise command syntax
    • Most commands are one-liners
    • Easy to see what commands you have defined
  • Expressive
    • Easy to specify different actions based on variable words
    • Inline word lists and substitutions
    • Support for number ranges and optional words
  • Familiar syntax
    • Uses keystroke syntax and built-in functions from Dragon Macro Language
    • Similar grammar syntax to NatLink
  • Easy to use
    • Open command files by voice control
    • New commands usable in 1-2 seconds

This Web Site

This web site was created using a Python program developed and shared by Joel Gould, in another admirable display of community-mindedness. His description and sources are here.

A single-page version of the site is available here.


This page is (c) Copyright 2002 by Rick Mohr, and was last modified on May 11, 2002.