First, make sure you have completed all the steps in installation and installing packages and commands.
Now that you have everything set up, let's restart VoiceCode just to be extra sure everything is working. To quit VoiceCode you can either switch to VoiceCode and press ⌘Q like any other application, or you can use the "restart" button in the VoiceCode UI to automatically quit and relaunch it in a single step.
First, make sure the microphone is on, the microphone button should be green.
Also, make sure Dragon is in "Dictation Mode", not "Command Mode".
Next open your web browser (Safari, Chrome, Firefox, etc.) and open a new tab (⌘T). The url input should be focused. Try saying something like @this is a [email protected] Whatever words you say should be typed into the address bar. If nothing happens, see troubleshooting.
You actually already used the most common VoiceCode command: `core:literal`. All words that you speak go through the VoiceCode parser and get broken down into a series of commands. Each command has a unique identifier like `core:literal` or `selection:current-line`. The first word of the command identifier is always the package name that the command came from, and the last half is the specific name of that command. You can see exactly how VoiceCode parses a phrase by inspecting the log window. Any words that don't match a pattern defined by more specific commands will fall back to match the `core:literal` command. In the case of @this is a [email protected] you would see the following in the log window:
Now it’s time to start using some basic VoiceCode commands. We will naturally start with some of the commands from the package called `common`.
Open the main VoiceCode window and click the `Commands` tab, then in the search bar, type "common". It will now display all the commands from that package.
Notice each command has its spoken name in uppercase bold letters. Below that is its identifier, i.e. `common:delete`. On the left is the toggle for whether that command is enabled or not. And underneath the command identifier is a brief description of the command's action. Notice each command also has `tags` which are a way of organizing commands into related groups that may span across multiple packages. Clicking on any tag will take you to all commands that share the same tag. Also notice the selector to the left of the search bar, which allows you to search in different ways, by "package name (the default)", "tags", "command name", or "command description". Hover the mouse over any of the UI elements to get a tooltip descriptor. The last thing to notice is the badges to the right of each command identifier. These show the different "implementations" of that command for specific Scopes. For example you can see that `common:find-next` @[email protected] has a specific implementation for the `vim:terminal` scope, as well as a "global" implementation that applies everywhere else.
Let's try the command `common:find` @[email protected] Switch back to your web browser and go to any webpage. Now say @[email protected] and it should open the normal "find on page" dialogue of your browser. Now speak a search term such as @[email protected] You have just used an individual command, then followed it up with some literal text. Now clear out that search field and press escape to exit the search. This time say @marco [email protected] and notice it does the same thing as last time but all from a single phrase, it will open the search dialogue and then type the next thing you say immediately. Now try @marco this is a [email protected] Commands can be freely intermixed with literal text or other commands in any combination or series, in order to achieve highly customizable results from a single spoken phrase.
Go ahead and try out some of the other commands from the `common` package. If you have any issues with commands "not being recognized" see the vocabulary section.
Next let's move to the `format` and `symbols` packages.
This package contains commands related to formatting or outputting text. Find this package the same way we did before, by typing `format` into the package search bar (make sure the search selector is set to "packages")
Make sure the commands in this package are all enabled, so they are ready to use - if you need to enable them, do it now, then click the "restart" button on the bottom left again.
To try out these commands, let's open the built-in TextEdit app. Open TextEdit and create a new blank document, then click in the document to place the cursor as if you were going to start typing.
Many of these commands will do different things depending on whether you say the command name by itself, or give it textual content after the command name. To see this in action, type the text "hello world" into the document, and then select that text. Now just say @[email protected], and it should uppercase the selected text - this works for most of the text formatting commands.
Take some time now to scroll through the rest of the commands in the `format` package to see what is available, and try them out in your blank TextEdit document.
By now you should start to see that there are a lot of commands. There are many packages, and each one contains many commands. Your initial goal shouldn't be to memorize them all, but to start memorizing the ones that seem the most important to your specific workflows. I highly recommend taking the time to scroll through all the commands of all the packages at least once, and read each description, so you at least have a cursory understanding of where to find each command when you need to come back to it later, maybe take notes and jot down which packages seem to contain the commands you are most interested in.
Another really important set of commands is the `symbols` package, which contains things like parentheses, punctuation, and common symbol combinations. Again, type "symbols" into the package search to see these commands and make sure they are enabled.
Now try a few of these commands in your TextEdit document
Notice some of the commands have multiple variations for whether they apply spaces around the symbols or not. For example @[email protected] => "+", while @[email protected] => " + ". These variations are very useful when writing code.
Different programming languages make greater use of different symbols, so look through this package and make yourself a cheat sheet of the ones that seem most important to you.
The names of most commands were chosen to be short and easily distinguishable by speech recognition, but it is also easy to change the name of any command if you have a preferred way you want to say it. See Commands for details on changing the spoken name of any command.
Here's some other packages that you should get familiar with right away. Some of them have their own documentation as well.
Sometimes a command name might be similar to a regular english word that you are trying to say literally. Dragon tries extra hard to pigeonhole the very first word you say into one of the commands it is expecting. For example the `selection:previous-occurrence` command is spoken @[email protected], so if you try to insert the literal text @[email protected] as the first word in a phrase there is some chance that Dragon might think you are trying to say the command @[email protected] If this happens, there is a special command `core:delimiter` @[email protected] which essentially does "nothing", but allows your next word to be more distinguished, so in this case @shin [email protected] would help the word be recognized more easily, and it would simply type "trailer" onto the screen.
The command `core:pass-through` @[email protected] will allow whatever text follows it to be interpreted literally, even if it is followed by command words, so @keeper [email protected] would type "shock".
The command `core:insert-command-id` @[email protected] will insert the command identifier of its argument, so @sherlock [email protected] would type "common:enter".
Like learning any new form of expression, VoiceCode takes patience and dedication to learn. It is like learning a musical instrument or a spoken language. It must be learned in small chunks that slowly start to be merged together into free-flowing phrases. Memorization comes from usage and repetition.
Don’t try to form long command chains early on.
Once you’ve mastered quite a few single commands, start using combinations of 2 commands at a time. For example:
For command combos, make sure to say the whole combination fluidly, without long gaps between the words. Think of it like you are saying a person’s full name. You would not put a pause between their first and last name, but would say it all together almost as one word.
The 80/20 rule applies to most things in life. In this case it means 80% of what you do is most likely repetitive, and can probably be moved to voice-control with 20% learning effort. Then tackling the remaining 20% of more random edge-case actions will take the remaining 80% of your learning time. So first focus on finding actions you do repetitively throughout the day, such as opening websites, switching applications, double-clicking then capitalizing a word, etc.
During the learning phase make sure to keep using the keyboard and mouse for actions that you have not learned the commands for yet. If you are trying to get actual work done while you learn, don't just go and look up a command for every action you need to do, or it will become very frustrating and slow. Instead, pick the commands you want to learn today, memorize them, and then start working - whenever you encounter the time to use one of today's commands make sure to use it, even if you have to undo what you just did using the keyboard or mouse and redo it with the voice command. The next day you will add more commands, so your repertoire will grow by 10 or 20 commands per day. Within a week you should be able to easily memorize 100 or more of the most important commands for your workflow. From there just stick to a schedule of learning new commands each day, and reinforcing the commands you already know.