Troubleshooting

Writing Vocola commands is straightforward with a little practice. This page summarizes some potential problems, and how to solve them.

My command doesn't work

You've written a Vocola command but nothing happens when you speak the command. Here are some possible causes:

  1. You didn't save the .vcl file.
  2. Your command had a syntax error.
    • Vocola reports errors in the NatLink output window, a small window titled "Messages from Python Macros" or "Messages from NatLink" .
    • Read the error message, correct the problem, save the file, close the NatLink window, and try your command again.
  3. You're speaking the command in a different context than you defined it for.
    • Make sure you put the command in the .vcl file for the application you're running.
    • If your command appears within a context statement, make sure the context string matches the title of the current window.
  4. You changed an include file (.vch) and didn't run the Vocola translator by saying "Load All Voice Commands".
  5. Your command is in a filename which contains a character other than a digit, letter, or underscore before the @ or extension (.vcl); older versions of NatLink (before May 2007) are known to have a bug which causes them to ignore such files. Either switch to a later version of NatLink or use a different file name -- this may require renaming the executable if the offending character occurs in its name.
  6. NatLink didn't load the translated Python file.
    • Look in the NatLink\MacroSystem directory. There should be both a .py file and a .pyc starting with the same name as your .vcl file (the part starting with the @ may be mangled somewhat).
    • If the .pyc file is older than the .py file, and you really have talked at the correct application, then NatLink has not noticed the .py file. This means that NatLink or NatSpeak is in a bad state.
    • This can be corrected by exiting and restarting NatSpeak.
  7. Your command uses a non-written out number (e.g., "3" rather than "three").
    • Due to Dragon bugs, Dragon sometimes consistently fails to recognize such commands. In particular, in DNS 11 if you use <_anything> in a Vocola file, then 0, 1, ..., 9 fail to be recognized for those commands. [Unknown if this is true for non-English users]
    • If the problem is unrelated to <_anything>, then creating a new user often solves the problem for a while.
    • Another workaround is to spell out the problematic numbers; this is straightforward for all but Vocola's ranges (e.g., 1..99).
    • To deal with ranges, Vocola 2.7.2 onwards allows specifying spoken forms for numbers in ranges using the $set numbers "<spoken>,..."; statement. For example, including the following statement in a Vocola file causes Vocola to use spoken English words for the first 10 numbers when they are used in a range for commands defined in that Vocola file:

      $set numbers "zero,one,two,three,four,five,six,seven,eight,nine";

      You may specify spoken forms for as many of the numbers starting from zero as you like (including none if you want to never use spoken forms).

      To help deal with the anything bug, Vocola 2.7.2 onwards automatically defaults to the above if it detects English is being used unless a $set numbers statement is encountered.

My command doesn't work right

Your command gets executed, but doesn't work correctly. Here are some possible causes:
  1. Another command is being executed instead.
    • You may have defined a command with the same words using another voice command language. It's a good idea to delete these.
    • You may have defined a global command and an application-specific command with the same words. Usually the application-specific command will be recognized, but occasionally the global command is recognized instead. Usually if you repeat the command the application-specific version will be recognized.
    • You may have defined a command with the same words in a command file that you have since deleted or renamed; restart NatSpeak to discard any such old commands.
  2. You need to use quotation marks in your Vocola command. Quotation mark delimiters are usually optional in Vocola, but are required in some cases:
    • when whitespace is significant, e.g., "{Left 2}"
    • when keystrokes to enter contain special characters
  3. You need to use SendSystemKeys or SendInput to get Windows or some applications to see some keystrokes. For example, the Window key shortcuts require this. Thus, to pull up an explorer window, you can use SendSystemKeys({win+e}). Note that SendSystemKeys is substantially slower than Dragon's normal method of sending keystrokes so should be used only when needed.

Starting with Vocola version 2.9, verbose output while running commands is available; this can be helpful for figuring out which command is being run and how it is executing.

See the Vocola extension documentation for how to create commands adjusting this verbosity.

 
Copyright © 2002-2023 Rick Mohr