Thursday, September 23, 2010

Using Accessible Twitter With JAWS Screen Reader

Accessible Twitter is a third-party Twitter client that is designed to be easier to use and more accessible for disabled users. I have previously blogged about using the JAWS screen reader with the standard and mobile Twitter web sites. In this post, I describe how Accessible Twitter works with JAWS 11 and Internet Explorer 8. I list some possible areas for improvement and then I give my recommendation on which Twitter site to use.
Note: If you require a refresher on navigating web pages with Internet Explorer and JAWS, see the Navigating Pages With JAWS section of my blog post, Tips For Using With JAWS Screen Reader.

General Accessibility Features

Accessible Twitter contains many features that make it JAWS-friendly. Headings are used liberally. Form fields have descriptive labels. Lists are used to group navigation links. Other structural  elements exist to communicate page structure and facilitate direct navigation e.g. landmark roles identify commonly found sections of web page content, blockquote tags surround tweet text. If you have Javascript enabled, certain actions are more efficient e.g. display of confirmation/results messages, determining characters remaining when composing a message. Content choices make the site more user-friendly e.g. the tweeter's full name rather than their username is given in image and username alt text.

Setup and Sign In

You need a Twitter account before you can use Accessible Twitter. Then you need to allow Accessible Twitter to have access to it so that it can retrieve and update data for display on the Accessible Twitter web site. To do this, go to the Accessible Twitter home page and activate the "Sign in with Twitter" link. You'll be directed to a page that says, "The application Accessible Twitter by Web Overhauls/Dennis Lembree would like to sign you in using your Twitter account." The page contains edit boxes for your Twitter Username and Password. After typing these, tab to the Sign Up button and activate it.
The next step in the setup process is to confirm that you allow Accessible Twitter access to your Twitter account. Activate the Allow button (or the Deny button if you've changed your mind).
If you chose Allow, you will be redirected back to the Accessible Twitter home page. The setup process has signed you out, so you'll need to sign in to Accessible Twitter with the "Sign in with Twitter" link. If you are prompted for your username and password, enter them; otherwise, you'll find yourself on the Timeline page.

Site Pages

The main site pages on Accessible Twitter have links that appear in a row near the top of the page. They are contained in a 10 item list called "navTweet" below a visually hidden level 3 heading called "Tweet Menu." The first 9 links have access keys (keyboard shortcuts) assigned to them using the digits 1 through 9. So the access key for the first link (Timeline) is Alt 1; Alt 9 is assigned to Trends. Below is the name of each of these links and a brief description of what the page contains.
  1. Timeline: the most recent 20 tweets from you and those you follow; use the Older link at the bottom of the page to display more
  2. My Tweets:  your most recent 20 tweets
  3. Mentions: tweets in which @<your username> appears
  4. Favorites: tweets that you have marked as favorite
  5. DM: direct messages that you have received (Inbox, the default view) or sent (activate Sent link to view)
  6. Public: the most recent 20 tweets in the public timeline
  7. Search: contains an edit box to Search Tweets, an edit box to Search Users, and a list of your saved searches (as links to search results pages)
  8. Lists: ability to create a list, view/edit/delete your lists, view/unsubscribe subscribed lists
  9. Trends: a list of the top 10 most tweeted about topics on Twitter; activate a topic/trend link to display the 20 most recent tweets about it
  10. Links: the 15 most popular links that appear in tweets

My Profile

The My Profile link gives you access to your profile. This link doesn't appear in the navTweet list; you'll find it in the list above it, called "navMain" (which is located below a hidden level 3 heading called "App Menu"). The My Profile page contains links to: Edit Profile, Retweets By Me, Retweets of Me. The profile data are the only settings that you are able to edit on Accessible Twitter; these fields include: Name, Location, Bio and Web Site.

Tweet List/Timeline

A tweet contains the following content items:
  • image ("avatar") of user, which is a link to the user's profile page; the alt text contains the user's name
  • a thumbnail of an image ("small image") referenced in the tweet (right justified)
  • tweet text, which may contain no or several links
  • from <username>, with <username> a link to the user's profile page; the alt text contains the user's name, number of followers and number following (but that is not read by JAWS, by default)
  • several links including: user timeline, direct message, tweet message, favorite, Reply, Quote Tweet (old-school retweet), Re-Tweet; if this tweet belongs to you, some links won't be present and others will e.g. trash can for deleting the tweet
  • date the tweet was sent, which is a link to the "permanent" page for the tweet i.e. a page that contains only this tweet (and also the tweeter's profile)
  • application used to send the tweet.
Because a tweet contains so many links, you might want to choose a different element to directly navigate to each. On the Timeline page, the tweeter's name is contained in a hidden heading level 3 tag just above the tweet content items so navigating tweets by heading level 3 is one option. The tweet text is surrounded by a blockquote so you can navigate to it by pressing the Q navigation quick key and then press the down arrow key to start reading.

Composing a Tweet/Message

Several pages (Timeline, My Tweets, Mentions) contain the edit box into which you compose your tweet. Its title, "What's happening?", is a heading level 2. Note that it is a multi-line text area, so you may need to use your previous and next line JAWS reading commands to review your message. The text area is followed by the Submit button which you activate to send the tweet.
Below that you'll find a refresh page link and your most recent tweet including its time, permanent link and application used to send it.
Then you'll find the Open Shorten URL link. If you activate it, you'll open an area beneath the link that contains an edit box for you to type the web address you want to shorten, followed by a Submit button and a Clear link. Upon submitting the link, a confirmation dialog box will appear hopefully telling you that the web address was successfully shortened. Activate the OK button. Navigate back to the "What's happening?" edit box where you'll find the shortened URL appended to the end of your message.
Another helpful feature is knowing how many characters are remaining for your message. This number appears above the "What's happening?" edit box. To access it from here, press the up arrow key.
Composing a direct message on the DM page is similar except for the additional 18 character "username who is following you" edit box that appears above the "message" text area. The site uses a combo box containing your "followers" usernames here which is a big help to a visually impaired user who otherwise may have to use the JAWS Spell Word command (Insert Num Pad 5 twice quickly) to learn how it is spelled in order to type it in. However, the username is prefilled if you select the direct message link associated with one of the user's tweets or from the Followers page.
The send a "tweet message" feature takes you to the Timeline page, and pastes "@<username>" into the "What's happening?" edit box.

Replies and Re-Tweets

Replying to a tweet  causes a page to display that contains an edit box prefilled with "@<username of Tweeter>". Type your reply and activate the Submit button. The Shorten URL feature is also available here. If you need to remind yourself what the tweet said, it appears below the Open Shorten URL link; use the blockquote navigation quick key (Q) to navigate directly there. A reply causes the tweet to have a "Responding" link appear at the end of it by which you can view the tweet to which this tweet is responding.
Each tweet has both a "Quote Tweet (old-school retweet)" link and a "Re-Tweet" link. Selecting either of these causes a page to display that contains an edit box prefilled with the text of the tweet, preceded by "RT <username of Tweeter>". The difference is that with the Re-Tweet, you aren't allowed to modify the text (and for some reason this makes it impossible to access via the E navigation quick key so use the Form Fields List instead). You should check the characters remaining count and if it is negative, use the "Quote Tweet" feature. Activate the Submit button to send either type of re-tweet.

Possible Areas For Improvement

Only user testing will tell if the following significantly affect the usability of the site.
Overall, page elements have been labeled very well but some improvements could be made. The heading for the "Go To User" feature is called Menu which is too generic. The alt text for a Twitter user's image is "avatar for <username>"; image is a more common term and because the username is already displayed in the tweet, it would be better to put the user's full name into the alt text so that it is present in the JAWS Links List. Also, if the name appears first (e.g. Linda Tauscher's image), the JAWS user can more quickly navigate to a tweet from this user by pressing the first letter of their name when in the Links List.Headings on the site are plentiful and do a reasonably good job of conveying the page's structure. Because JAWS allows navigation by heading level (e.g. press "3" to move to the next level 3 heading), it would be helpful if heading levels were consistently applied across all pages. This is true for the tweeter's name heading on all pages except for the Direct Message page; here the name is a heading level 4 whereas it is a heading level 3 elsewhere. Also, having the user's full name in the heading is very helpful; however, the Search results page displays the username instead.
If Javascript is disabled, the confirmation message isn't displayed for a delete action; it would be best if the interface operated consistently when Javascript is both enabled and disabled.
The site does a good job of limiting actions to those that are permitted. For example, a user can only delete their own tweet, so the delete link is only found on the sender's tweets. But the direct message link appears for all users on the Timeline page, whether they are a follower or not. Sending a direct message to a non-follower doesn't work (an error message is displayed) but the presence of the link makes it appear as if it could.

Twitter Site Recommendation

Of the three web sites that I have reviewed with JAWS and IE 8, Accessible Twitter is the site that I recommend for JAWS users. It is much more accessible than the standard or mobile Twitter sites which means that it is efficient to navigate the site and page content, and actions/features are easy to discover and possible to perform in an efficient manner. It is also more usable in general; for example, the pages are task-specific and are thus less cluttered. Finally, Accessible Twitter offers additional features that make using Twitter more efficient e.g. Shorten URL. Other than some possible areas for improvement that I've identified, the only real downside to Accessible Twitter is that you cannot use it to modify most of your Twitter settings. Still, this is a task you're likely to do during the sign up process and then infrequently after that.
Mobile Twitter has a simple design but was clearly designed for mobile devices with a visual display; thus it lacks the structural markup that JAWS relies upon to aid in navigation and semantic comprehension (including descriptive alt text for important images!). Also, while JAWS can function well with Javascript, Mobile Twitter lacks Javascript whereas the Javascript on Accessible Twitter really enhances the user experience; it makes composing a tweet within the 140 character count easy, it displays confirmation dialog boxes to confirm irreversible actions and makes the display of results messages more efficient. As with Accessible Twitter, the mobile version does not allow you to edit your settings.
The standard Twitter web site gives you access to all features (except Shorten URL) but some of them aren't accessible or easily accessible. It isn't possible to mark a tweet as a favorite and replying to a tweet or retweeting are best to do on the tweet's "permanent" page which is less convenient. The form fields for signing in appear in a pop up dialog box that can be challenging to access via the keyboard. Some page elements aren't well labeled.
Many thanks to Dennis Lembree of Web Axe for taking such great care in creating Accessible Twitter, a web site that not only makes using Twitter a joy for JAWS users but serves as a model of best practices for accessible web development.

Thursday, September 16, 2010

Mobile Versus Standard A Comparison For JAWS Screen Reader Users

As you may know from my blog post, Tips For Using With JAWS Screen Reader, there are some keyboard accessibility issues with the standard web site that makes it challenging for JAWS screen reader users. I was hoping that the mobile version, located at would solve these issues. But as with most things, the mobile site has strengths and weaknesses. The weaknesses seems to arise from the fact that it was really designed for mobile devices that contain a visual display.

Strengths of

It is easy to reply to or retweet a tweet. Each tweet has a reply and a retweet link following the time the tweet was sent. Activating the reply link takes you to a page where you type in your reply and activate the Reply button. Activating the retweet link takes you to a confirmation page with a Yes or No button that you must activate.
After the retweet link you'll find the favorite link. It isn't possible to mark a tweet as a favorite on the standard site using the keyboard. Here you just activate the link which toggles the tweet between being or not being a favorite. As with the retweet feature, you'll be asked to confirm the favorite action by activating either the Yes or No button on the confirmation page that displays.
To delete your tweet, look for the delete link preceding the favorite link. A confirmation page will display with Yes and No buttons.
It is easier to activate the Following and Followers links because the number follows the word (rather than precedes it as on the standard site). These links appear after the timeline of tweets on the Home page, which is the page that displays when you sign in.
Access keys have been assigned to the links that take you to the Home, Replies,  Favorites and Direct Messages (Inbox) page.
The pages contain fewer links and images. They are structured in a simpler, one-column format. Navigation and form elements are consistently placed. The pages you'll find on the mobile site include: Home, Replies, Favorites, Direct Messages (Inbox), Following, Followers, Find People (includes Browse Interests), Search Results and Profile.

Weaknesses of

The mobile site does not give you access to all of the features found on Absent are: Settings,  Lists, advanced Find People features, saved searches, Suggestions For You feature and links.
Important image links lack descriptive alt text. In most cases, the image name has simply been used. This is what you'll hear for the links: reply (Ic_reply), retweet (Ic_retweet), favorite - not on (Ic_fave), favorite - currently on (Ic_faveon), delete (Ic_delete), favorites page (Ic_fav-off). In addition, @ is the label for the Replies page and DM is the label for the Direct Messages (Inbox) page. Most form fields are well-labeled.
It is more difficult to determine if you've exceeded the 140 character maximum for a message. On, you can up arrow from the message edit box to hear the characters remaining. The mobile site does not tell you how many characters are remaining as you compose your message. If the message is within the limit, activating the Tweet button will send the tweet. Otherwise, an error page displays with a "Tweet not sent — It's too long" message at the top. The keyboard focus is in the edit box containing your message. Below that is the Resend button. Following that is the text, "Where your Tweet went over:"; beneath that you'll find your message with the portion that exceeds 140 characters in strikethru font style. So you could use your JAWS reading keys to move to approximately where you think the message went over, and use the JAWS say font characteristics command (Insert F) to hear if the current character has strikethru style applied.
The pages contain less structure which makes direct navigation mostly impossible. You can use link or form element navigation to skip over content if you don't want to read the entire page. But there are no headings, lists or tables as found on the standard site. Keep in mind that each tweet will have at least 5 links associated with it (username Home, time, reply, retweet, favorite) and each username search result will have at least 3 (username Home, latest tweet time, Follow button).
When sending a direct message, the combo box of your "follower usernames" only contains the most recent three that you messaged; all usernames appear in this combo box on the standard site.
Some pages don't contain a link to your home page or the other main pages on the site so you'll need to use the browser's "go back to previous page" command e.g. Alt Left Arrow.
The mobile site has a sign up form but it only has an image CAPTCHA.

Tuesday, September 14, 2010

Tips For Using With JAWS Screen Reader

While the web interface is quite usable with the JAWS Screen Reader, it does have a few keyboard accessibility issues. Below are some tips based upon my experiences.
Note: I am assuming that you have some knowledge of, perhaps gained by listening to some/all of the podcasts that are available. I have summarized these in my blog post, Resources For Getting Started With Twitter Using JAWS Screen Reader.

Navigating Pages With JAWS

Navigation Quick keys are a letter that you press on the keyboard that moves you to the next element of that type on a web page. So when I tell you to move to a Heading, press H; move to a List, press L; move to a list Item, press I; move to an Edit box, press E; move to a Button, press B; move to a Table, press T; move to the a Combo box, press C.
Another navigation strategy is to display a list of page elements of a particular type. You can press any navigation quick key with the Insert and Control keys to display a list of that element. So to display a list of Lists, press Insert Control L; for Tables, press Insert Control T; for Edit boxes, press Insert Control E. The following elements are so frequently used that they have specific function key assignments:
  • display Links List: Insert F7
  • display Headings List: Insert F6
  • display Form Fields List: Insert F5
Using Twitter involves interacting with forms so you need to become proficient at knowing which cursor is active. Recall that the Virtual PC Cursor is usually on when the web page first displays; it allows you to tab between links and use the Navigation Quick keys. The other cursor that you’ll typically use is the PC Cursor; it lets you tab between form controls and interact with them such as typing text into an edit box. Sometimes when you navigate to a form control, JAWS will automatically switch to forms mode whereby the PC Cursor is active. If not, enter forms mode manually by pressing the Enter key; you’ll hear a sound when forms mode turns on and off. You may need to exit forms mode (and thus switch from the PC Cursor to the Virtual PC Cursor) to access static text or links on the page; do this by pressing Escape or NumPad Plus. If you are having difficulty displaying a list of elements (e.g. Links, Buttons), it may be because you're still in forms mode so press Escape to switch back to the Virtual PC Cursor and try displaying that element list again.
Several pages on use a Table to display the main content on the page e.g. settings form fields, user/People search results, followers and following usernames. You can always use the down arrow key to move through the table but it might be more efficient to use one of the following commands:
  • next/previous row: Windows Key + Down/Up Arrow
  • current row: Windows Key+ Num Pad 5
  • next/previous cell: Ctrl + Alt + Right/Left Arrow
  • cell below/above: Ctrl + Alt + Down/Up Arrow
  • current cell: Ctrl + Alt + Num Pad 5

Site-wide Pages

Headings exist on most pages and for many sections on a page, so use the Headings list to browse and access these.
Related links are grouped into lists, so use the Lists List to browse and access. It can be difficult to determine what the list is about by browsing the Lists List because it displays the list item text. Some lists have names or titles that appear above them so if you are confused by what you're hearing, go to the list and use your up arrow key to find the title. Use the list Item command to navigate through the list once you get there.
Form fields can be browsed and accessed via the Form Fields List.
Access keys have been assigned to major pages on the site. You'll hear them announced when you are on a link that has an access key. You'll also hear them when browsing the Lists List and the Links List. In Internet Explorer, access keys consist of the Alt key followed by a letter e.g. Alt H for the Home page. Remember that you must press the Enter key after typing the access key to go to the page.

Twitter Home Page

You go to to either sign in or sign up. The form fields for signing in appear in a pop up dialog box that can be challenging to access via the keyboard. I've found the most foolproof method is to use the Form Fields List to locate the Username edit box. From here, tab to the Password edit box and Sign in button.
To create an account, use the Sign Up link.

Sign Up Page / Create An Account Page

This page contains several form fields that you need to complete which is tricky with JAWS because to the right of the 4 edit boxes (which appear in a table), a help or validation message is displayed that you'll skip over when tabbing in forms mode. Also, the message is updated as you type into the edit box (e.g. to tell you that the username is OK versus already taken) so you need to wait a few moments for the form field to be validated and ensure that you read it. Do this by using your down arrow key to leave the edit box; if you don't hear the message, back up with the up arrow key. You may need to down and up arrow a few times to ensure that you've read the message. Also, arrowing in this way will give you access to a text description of the field that may appear below it e.g. Your full name will appear on your public profile. When you get to the Terms of Service text area, you'll want to tab out of it unless you want to read the entire document.  Also, be aware that the "send me email updates" check box is enabled by default and while it visually appears after the Create my account button, it precedes the button in the tab order.
When you activate the Create my account button, the CAPTCHA appears in a pop up dialog box that can be challenging to access via the keyboard. You'll want to complete the audio CAPTCHA by activating the "Hear a set of words" link; I've found that the Links List is the easiest method of locating this link. After typing the words you hear into the edit box, locate the Finish button with the Form Fields List.
If you've been successful thus far, your account will have been created and you'll be taken through 3 steps to help you locate Twitter users to follow. (Note that these steps are optional; all of the tools you are introduced to here are available once you sign in to your account.) Step 1 of 3 is entitled "browse interests"; selecting a link on a particular topic will display Twitter users associated with it that you can choose to follow. Look for the "Next step: friends" button when you are ready to move on. Step 2 of 3 is entitled "Find your friends"; you can select an email service (Gmail, Yahoo, AOL, LinkedIn) to have it scanned for any contacts that are on Twitter.  Look for the "Next step: search" button when you are ready to move on. Step 3 of 3 is entitled "Search for anyone"; the page contains an edit box into which you can type a Twitter username, first name, last name, business name, etc. Look for the "Next step: you're done" button to complete this part of the sign up process.

Sending a Tweet, Direct Message or Reply

Depending on what type of message you are sending, there will be a heading that identifies it e.g. What's happening? for a tweet. Just above the edit box on its right-hand side, you'll find a count of how many characters are still available; use your up arrow key when you are in the edit box to hear the count. Then use down arrow to get back into the edit box. Use your JAWS reading commands to read what you've typed thus far e.g. read current line with Insert Num Pad 8. When you are ready to send your message, tab to the button which may be labelled Send or Tweet.

Replying to a Tweet or Retweeting

The easiest way to either reply to or retweet a particular tweet is to locate the tweet and activate its date/time link. This displays the tweet on a separate page that contains Reply and Retweet links.

Sending a Direct Message

The easiest way to send a direct message is from your Direct Messages page. Find the link for it in your Sidebar or use the Alt D access key. You'll find a combo box listing the usernames of your followers above the message edit box. Use down arrow to select the username and then tab to the edit box. This page also contains a list of direct messages. By default, that list will be set to your Inbox i.e. messages you've received. Use the Sent link to display the list of messages you've sent.

Following and Followers Pages

From your Profile page, you can access pages listing your followers and who you are following. But these links are difficult to find because they are preceded by the number e.g. 8 following. A strategy to find these links is to locate the Favorites link in the Links List, then up arrow until you hear the following/followers link name. Users on these pages appear in a 3 column table.

Find People

The results from your search appear in a table. So you can use the next row command to browse through the results. Each search result consists of 2 links that take you to the user's profile: their image and their username; so you can use the Links list to access the results as well. Each user has 3 buttons and the button labels contain the username, so you can use the Form Fields list to find the Follow, Manage Lists or Actions button for a particular username. The Follow button toggles following on or off. Activating the other 2 buttons opens a list; for Actions, the list items include variations on the Mention, Follow, Direct Message and Block commands.

Settings Page

There are several pages of settings that you can modify. The Settings link takes you to the Account settings by default. These pages contain a list of the links for all settings pages e.g. Account, Password, Mobile, Notices, etc. Use the Form Fields List to find the fields; they appear in a table. After making changes, be sure to activate the Save button.  Some fields may have static text below them so be sure you've read it by using your arrow keys.


I was unable to use JAWS and keyboard navigation to mark a tweet as a favorite. When the keyboard focus is on a tweet on the Home page, I can use the Activate Mouse Over JAWS command (Insert Ctrl Enter) to display the additional information that appears when the mouse hovers over a tweet; this includes a Reply link, a Retweet link and the Favorite star image that is clickable. But I cannot tab to the Favorite star to activate it. It is possible to favorite a tweet on the site but that is a topic for a future blog post.

Resources For Getting Started With Twitter Using JAWS Screen Reader

There are several excellent resources that can help you learn how to use Twitter if you are a JAWS user.

FSCast on Twitter with JAWS

In this May 30th 2009 podcast from Freedom Scientific, Jonathan Mosen hosts a discussion about the use of Twitter and related third-party applications with JAWS and the PAC Mate Omni™ accessible Pocket PC.  The first 34 minutes of the podcast involves 3 Twitter and Freedom Scientific users explaining what Twitter is and how they use it. Note that there have been some changes to Twitter since this podcast. For example, on the site, the time of the Tweet is a link to the tweet so you can use the tweet's page to reply or mark it as a favorite but you can also do this from your home page; it is also easy to send a direct message on the mobile site. During the final 30 minutes, Jonathan interviews the developers behind Jawter, McTwit, TwInbox  and Accessible Twitter.

Accessible World presents Twitter on Tek Talk

In this June 1st 2009 podcast, Rich Cavallaro spent the first 30 minutes demonstrating the Twitter web interface with JAWS and Internet Explorer. and discussing some third-party Twitter clients. The demo covered how to sign in, follow people, send different types of messages, and modify settings. The remaining 28 minutes consists of questions and comments from participants of this Accessible World Tek Talk podcast. Note that there have been some changes to Twitter since this podcast. The main message edit box is now labeled, "What's happening?", the term "Tweet" is used rather than "Update", and some settings have been modified.

Twitter From A Blindness Perspective

In this 51 minute podcast, Erin Edgar uses JAWS and Mozilla Firefox to demonstrate how to: create a Twitter account, setup your profile, post updates, find people to follow and read their updates. She then discusses Twitter conventions and various third-party applications including Accessible Twitter. Since Erin posted the podcast to on May 21st 2009, Twitter has undergone some interface and terminology changes. For example, the CAPTCHA now appears in a dialog box when the Create my account button is pressed on the Sign Up page (making it even more challenging to complete via the keyboard!). At the end of her podcast, Erin demonstrates the difficulties she had with the audio CAPTCHA which lead her to use the WebVisum Firefox extension to complete it during the account creation demo.

An Introduction to Social Networking

On April 19th 2010, Anna Dresner discussed the differences between Twitter, Facebook, and LinkedIn and when you might use each. This is a 53 minute Accessible World Tek Talk podcast.

Social Networking Privacy Options

This article by Marc Grossman of the American Foundation For The Blind discusses privacy settings available on Facebook, Twitter and LinkedIn. It was published in the August 2010 issue of AccessWorld.

An .eduGuru Blog Posting About Accessible Twitter

On Feb 16th 2009, Nick DeNardis described some of the accessibility issues with and how Accessible Twitter resolves these. For more information, read the features page on the Accessible Twitter web site.

My Blog Postings About Using Twitter With JAWS

I have written the following three blog posts on this topic:

Thursday, September 2, 2010

3 Methods For Manually Adding Custom Words To The DNS Vocabulary: Single Word, List Of Words, Document Of Writing Samples

Note: This article applies to version 10.1 of Dragon NaturallySpeaking.
Dragon NaturallySpeaking (DNS) has a very large dictionary of words that it uses to translate what you say into the text that appears on the screen. To improve performance, only a portion of the dictionary is stored in memory while you run DNS; this is called the "active vocabulary." The entire vocabulary is kept on disk in what is called the "backup dictionary."
If DNS has not recognized a word that you've dictated, it may be because the word is not in the active vocabulary. But the word could be in the backup dictionary. In my previous blog post entitled Controversy re. Unselecting "Automatically add words to the vocabulary" Option in Dragon NaturallySpeaking, I explained how you can have these words added to the active vocabulary automatically. To review, here are the steps:
  • enable the "Automatically add words to the vocabulary" option (DragonBar -> Tools menu -> Options menu item -> Correction tab)
  • because the word isn't in the active dictionary, DNS won't recognize it when you dictate it -- it will display something else, so correct the word you dictated: say "Select <word>", "Correct That", and then spell the word in the Spell dialog box
  • save your user files for this change to take place permanently (this happens when you exit from Dragon, either automatically or you are prompted).
However, some specialized words, names, acronyms, and abbreviations you use may not be in the backup dictionary. In this case, you must add them to your active vocabulary manually. DNS defines "custom words" as the words that are in your active vocabulary but are not in the backup dictionary. So the purpose of this blog post is to explain how to add custom words to your vocabulary manually. You can add a single word at a time, add multiple words in a list or have DNS analyze samples of your writing.
Adding a single word is good for those occasions when you anticipate that you'll be using a word that won't be found in the backup dictionary. Note that you can also add phrases: adding "multi-words" such as names of people, places, products or institutions can help DNS resolve spelling and capitalization ambiguities.
Adding multiple words in list form is more efficient than adding a single word at a time. Use this method when you plan to start dictating a lot of specialized vocabulary that is new for you e.g. at the beginning of a course in a new discipline. You can use Kurzweil 3000 to scan textbook glossaries and edit them so they are in list format appropriate for this method.
There are two benefits to having DNS analyze a sample of your writing. First, words that aren't in the backup dictionary will be added to the active vocabulary as custom words. Second, the language model will be updated to reflect your writing style. This means that DNS learns which words are used with what frequency, and what words appear near each other. This will allow DNS to better guess between words you dictate that sound alike.

Add Word

To add a single word or phrase:
  • open the Vocabulary Editor: say "Edit Vocabulary" or click DragonBar -> Words menu -> View/Edit menu item
  • type the Written Form, Spoken Form (if different), then click the Add button
    • e.g. written forms only: "Nickle Arts Museum", "TELUS"
    • e.g. written and spoken form: written form = ""; spoken form = "my email address" (so when I dictate the phrase "my email address", the text "" is displayed).
There is an excellent tutorial on the Vocabulary Editor on pages 8-12 of the DNS End-User Workbook.

Add List Of Words

To add multiple words, prepare a list of words and phrases as follows:
  • create a document in a word processor that will allow you to save it as a plain text (.txt) file
  • put each word/phrase on a separate line
    • ensure everything is spelled, capitialized and spaced correctly
    • to include a spoken form, follow the written form with a backslash, then the spoken form e.g.\my email address
  • save the document as a plain text (.txt) file; close it
  • Say "Import custom words" or on the DragonBar, click Words, Import
  • check the "Preview the list of unknown words" checkbox; click Next
  • on the Add Word Lists dialog box, click the Add File button; browse to the .txt file you created and click Open; click the Next button
  • on the File Analysis dialog box, click Next
  • on the Add Words to Vocabulary dialog box, review the list of new words that will be added to your vocabulary; uncheck any you decide not to add, click Edit if you wish to change both the written and enter a different spoken form of the selected word, then click Next to add the words
  • on the Train Words dialog box, check the words you wish to train and click Train; you will be prompted to speak each word/phrase
  • click Next to view the summary of how many new words were added to your vocabulary; click Finish.
See pages 14-15 of the DNS End-User Workbook for a tutorial on this topic.

Add Words From Document

To have DNS analyze a sample of your writing so that its language model will reflect your writing style (i.e. learn frequency information including which words are used with what frequency, and what words appear near each other -- this will allow DNS to better guess between words that sound alike):
  • create a document in a word processor that will allow you to save it as a plain text (.txt) file
  • paste into the document previously written material that contains the text you are likely to dictate
  • remove all formatting (the plain text file format will facilitate this) and separate each paragraph by a blank line
  • ensure that the punctuation is correct
  • spell check the document
  • save the document as a plain text (.txt) file; close it
  • say "Add words from documents" or on the DragonBar, click Accuracy Center, then click or say "Add words from your documents to the vocabulary."
  • check all 4 of the checkboxes (though you may wish to uncheck "Find known words with unknown capitalization"); click Next
  • on the Add Documents dialog box, click the Add Document button; browse to the .txt file you created and click Open; click the Next button
  • on the Document Analysis dialog box, click Next
  • on the Add Words to Vocabulary dialog box, review the list of new words that will be added to your vocabulary; uncheck any you decide not to add (e.g. common words that are capitalized), click Edit if you wish to change both the written and enter a different spoken form of the selected word, then click Next to add the words
  • on the Train Words dialog box, check the words you wish to train and click Train; you will be prompted to speak each word/phrase
  • click Next to have DNS adapt to your writing style
  • click Next to view the summary of how many new words were added to your vocabulary; click Finish.
See pages 16-18 of the DNS End-User Workbook for a tutorial on this topic.
Note: Be sure to save your user files after adding new words or the new words will not be saved.
Also, keep a copy of any word lists or documents that you import as you may want to repeat this process should you ever create a new user profile.

Controversy re. Unselecting Automatically add words to the vocabulary Option in Dragon NaturallySpeaking

Note: This article applies to version 10.1 of Dragon NaturallySpeaking.
Most of you know that in his Optimizing NaturallySpeaking for Accuracy and Reliability document, Alan Cantor recommends unchecking the Automatically add words to the vocabulary option. This is found in the Correction tab of the Options dialog box, accessible from the Tools menu on the DragonBar. I have been following Alan's recommendation because I know that he's a longtime trainer of Dragon NaturallySpeaking (DNS) users in his Toronto accessibility consulting practice, Cantor Access Inc. But while doing some research on the way DNS handles vocabulary, I read the DNS Help Topic on this option and have changed my mind about Alan's recommendation. Here's my explanation why.
The DNS documentation describes the Automatically add words to the vocabulary option as: "This check box controls whether a word from the backup dictionary is added to the active vocabulary. Select this box to automatically add corrected words to the active vocabulary. If you correct a word you dictated—either by typing over the word, by spelling it (selecting it and dictating "spell that," then spelling it) or by selecting it in the Correction menu—Dragon adds it to the active vocabulary when the correct word is not present in the active vocabulary but exists in the backup dictionary. After Dragon adds that word to the active vocabulary, the word appears with a green star next to it in the All Words view in the Vocabulary Editor."
Active vocabulary was new to me, so I found a definition: "The active vocabulary contains the words that Dragon is most likely to recognize on the first try, without requiring you to do anything extra such as correcting the words with the Correction menu. Active vocabulary words are stored in computer memory and thus always available. The number of words in the active vocabulary always remains the same. When new words are added, words that have not been used recently are removed from the active vocabulary, but remain on the computer's disk in the backup dictionary. Note:You can view the words present in the active vocabulary in the Vocabulary Editor dialog box, which you can open by clicking or saying "View or edit your vocabulary" from the Accuracy Center."
This lead me to seek out the definition for backup dictionary: "The backup dictionary stores all vocabulary words. Dragon moves frequently used words from the backup dictionary into the active vocabulary. The backup dictionary is stored on the computer's disk. If Dragon misrecognizes a word, the word may be in the vocabulary but stored in the backup dictionary. In this case, one way to move the word into the active vocabulary is to use the Correction menu to correct the error. You must save user files for this change to take place permanently."
Based upon the above, it seems like a good idea to leave the Automatically add words to the vocabulary option at its default, which is checked. Otherwise, the next time you dictate a word that was misrecognized because it was only in the backup dictionary, it won't be in the active dictionary, so DNS won't recognize it and you'll have to correct it again.
Further along in Optimizing NaturallySpeaking for Accuracy and Reliability, Alan says that "The best way to add words and phrases is the Vocabulary Editor." I agree that custom words and phrases that aren't found in DNS's backup dictionary should be added in this way. If you look at the list of filters in the Vocabulary Editor, you'll see that there is one for Custom words only and another for Words from Backup Dictionary. So these are two different concepts. I wondered whether Alan was getting them mixed up. I emailed him and asked. His reply was: "I agree that automatically adding words to the vocabulary would be a useful feature, but my experience is that it does not work as advertised. When this feature is enabled, nonsense words and word fragments are automatically added to the vocabulary. You can see these words in the Vocabulary Editor as Custom words. Over the years, I have deleted hundreds, if not thousands of this nonsense words. I don't think that they contribute anything toward accuracy. The feature appears to be almost repaired in version 10.1, but I am still noticing odd words in the vocabulary when I have it enabled."
So, being a longtime user of DNS, Alan rightly has some practices he's been following to work around some misfeatures in the software. After enabling this option again, I'm noticing words starting to appear in my Words from Backup Dictionary list. I've also noticed a few in the Custom words only list that I did not add manually (I'll explain how to do that in a future blog post). Why are they here? Well, the DNS documentation says "Added words are considered custom words, unless they are in the backup dictionary." So, DNS didn't recognize the word I said (couldn't find it in the active dictionary), so I selected it and said "Correct that"; in the Spell dialog box I spelled it out but made a typo (entertaintng) so now it is in the active dictionary as a custom word. Another custom word that I have is "Setup". If I search for it in Vocabulary Editor (use the All words filter to see what's in the active vocabulary), I see 3 variations: setup, Setup, SetUp. So if I had corrected the word to SetUp, there wouldn't be a custom word present (Setup). The moral of the story is: with DNS automatically adding words to the active vocabulary, the user must be careful when performing corrections: no typos and pay attention to case (i.e. capitalization).
Further in his email, Alan says: "I would use the automatically add words to the vocabulary feature if it worked better than it does. On the other hand, some of my clients enable this feature, and get decent performance. I don't think that it is a deal breaker. (I suggest that they review their custom words occasionally, and weed out the nonsense words.) My preference is to use the vocabulary editor; but I also have the perspective that there are more efficient ways to increase accuracy than playing with individual words. For example, dictating long phrases makes a huge difference, as does correcting misrecognitions in context. Neither is easy, but both are effective. Ditto for running the vocabulary and language model optimizers once in a while."
I hope that I've given you enough information to decide whether you want to enable or disable the Automatically add words to the vocabulary option. I plan to leave it enabled, and be careful about the corrections that I make. If I have doubts about the spelling of a word, I'll confirm the spelling before making the correction. Also, to deal with the case/capitalization issue, I will make my corrections in lower case and then say "Cap That" once the Spell dialog box closes. Finally, I plan to review the Custom words only list in the Vocabulary Editor (View/Edit menu item in Words menu of the DragonBar) and delete any erroneous ones.
There's one other comment that Alan makes that I want to discuss: "My sense of the situation -- I know that it is a controversial one -- is that many people add fewer words than they think. Years ago, I created a list of the words, phrases, acronyms, that I actually use, and import it every time I create a new user. This list has not grown substantially over the years. I am guessing that I add 20 words per year; but I also review the file periodically, and remove words/phrases/acronyms that I no longer need. When I am working with a client, I will often help them generate a word list like mine, and show them how to import it."
Keep in mind that Alan is an accessibility consultant and he's been in the field for over 15 years. While the field is changing, he's probably not coming across new vocabulary the way some of you might be e.g. university students on the cutting edge of their discipline and taking courses from a variety of disciplines that have specialized vocabularies. In a future blog post, I will explain how you can manually maintain DNS's active vocabulary to improve DNS's recognition ability for your dictation. But the point I want to make about the Automatically add words to the vocabulary option is that you might find it less disruptive to the flow of your work if you enable this option and add your custom words as part of the correction process versus explicitly opening the Vocabulary Editor and adding the word there.