Learning Foreign Languages with Screen Readers On Windows Purpose: This talk outlines how to configure NVDA or JAWS to best facilitate language learning. The intended audience is primarily those who either learned languages without computer assistance or who have never tried to learn another language. Overview: I'll give you a brief intro. I'll then cover the problems you encounter when trying to learn using a PC and how these barriers can cause a typical student to give up. Next, I'll review the problems again, showing how screen access has some solutions. We'll cover: Getting your voice to read with correct pronunciation. Getting your Braille to display with the correct table. How to switch between languages, both automatically and manually. In solving our learning challenges, we will explore how to: Install the appropriate keyboard. Install the Vocalizer Expressive, Windows one-core voices or Microsoft Speech platform or SAPI voice for your language Not mess up Windows -- which is easy to do by mistake! Use my three favorite NVDA add-ons for language learning – Instant Translate, Switch Synth and Braille extender. Show how to switch voices and language reading with JAWS on the fly. Discuss how Kurzweil 1000 handles language reading. Dive briefly in to Word and html editing to force NVDA or JAWS to read in the correct language. Background For the past twenty years, I've worked at a community college where I've watched nearly all of our blind and visually impaired students who attempted to study a foreign language fail. I studied Spanish in high school and German and Italian in college, and I lived in Germany for a year as an exchange student. I did all this before computers, in the1970s and realized the reason these young people were failing was because computerized learning is central today in language courses. So I decided to take Spanish 1. The summer before class started, I intensively researched what I'd need to do to succeed. I'm now in my 42nd week of intermediate Spanish, earning an A and appreciating the hours of research I did over last summer. This talk is the result. Modern language learning works this way. You have a textbook which you use in the classroom and an online language lab. Students no longer enter a physical lab with spinning reels of tape and those headache-inducing hard headphones. They no longer listen to and repeat foreign phrases following a script. The virtual lab is a website which often contains an electronic version of the textbook. There are tons of little interactive exercises that let you practice speaking, listening, writing and reading. You will press a play button, speak in to a microphone on your PC, read a passage onscreen, answer questions by checking boxes, typing in edit fields or making choices from drop-down lists. You will need to be extremely capable using a web browser with NVDA and you'll find some things work best in Firefox and others in Chrome. The barriers for the screen reader user are myriad. First, to type foreign characters, the sighted user simply clicks on a character they need from a little popup box on the screen. It's a pain to find that box with your screen reader. Second, you need to hear the right synthesizer in the right place. For me, I need NVDA to read English when instructions are in English and Spanish for the exercises in Spanish. And if I want to know how words are spelled and I have a Braille display I also need to insure the correct Braille table is active for the language that is currently under my cursor! I need to find ways to tell JAWS which Braille table I’m using and which synthesizer and when. Step 1: get your keyboard working. By default, your Windows is configured to use a software keyboard for your language. When for example I press the apostrophe key, I get an apostrophe. When I press the letter U I get the letter U. But what if I want the German umlauted U, or the Spanish accented letter I. Those keystrokes aren't on my United States keyboard. 1. Go to Settings from the windows icon at the bottom left of most setups. Or hold the Windows key and press the letter I simultaneously to invoke settings. 2. Select Time and Language. 3. Select Language. ** DO NOT select Spanish here or your Windows will display in Spanish! 4. You should see English (United States; select it and a button labeled "OPTIONS" will appear. 5. Select "ADD a KEYBOARD". Scroll down the list. Again do not select Spanish unless you want to only type Spanish most of the time. 6. Near the end of the list, select United States International. It will be added to your language bar which will appear in your system tray. 7. You can now switch keyboards from your system tray or use the shortcut Ctrl-Shift (hold those two keys down together) to toggle between the United States keyboard and the United States International keyboard. Of course if you have different languages you'll have to install appropriate keyboards for your country. You'll also need to look up on the web the techniques for typing your foreign language's special characters that are not part of your primary language. Typing Spanish Characters Below are the instructions for a U.S. international keyboard user for typing Spanish. Vowels á press and release apostrophe (') followed by A (upper case or lower case depending on which you need. É press and release apostrophe (') followed by E (upper case or lower case depending on which you need. Í press and release apostrophe (') followed by I (upper case or lower case depending on which you need. Ó press and release apostrophe (') followed by O (upper case or lower case depending on which you need. Ú press and release apostrophe (') followed by U (upper case or lower case depending on which you need. Ü Hold Shift and press apostrophe then release both keys to enter a quote ("), then press the letter U either upper case or lower case. Note: The apostrophe (') and the quote (") can be entered by following each with a space when the United States International keyboard is active. Other Characters ñ Hold Shift and the ` (grave accent) key, then release both to create a tilde (~). Next press the N key, either upper or lower case. ¿ Hold Alt and Control and press the slash (/) key. Shifted this is the question mark (?) but with alt and control held down but not the shift it becomes the inverted question mark. ¡ Hold down the alt and Control keys and press the number 1 on the keyboard (not the numeric pad.) Shifted this would produce the exclamation point (!). But holding alt and control produces the inverted exclamation point. Note: In Microsoft Office, because Alt-Control-1 is used to create a heading level 1 you must add the Shift key, so press alt-Shift-Control-1. Step 2: Get your Synthesizer Talking The default voice for NVDA, Espeak, does a great job with many languages, so if you like Espeak, you might not need to do anything. You may wish to set up a configuration profile with Espeak defaulting to another language, but remember Windows itself has a default language so if NVDA is set to pronounce everything in French but your interface language for Windows is English you might have some struggles. So be careful if you do set up a configuration profile for NVDA to have it speaking with a language that doesn’t match your Windows interface language! If you are not a huge fan of Espeak or just feel that it will be too hard to understand Espeak reading words in another language, you have other free voices at your disposal. My favorite are the Windows one-core voices, the same Microsoft voices that NVDA defaults to in Windows 10; the same voices also used by default with Narrator. If you upgraded your machine from a previous version of Windows, NVDA will use whatever voice you were using before. But if you install NVDA from scratch in Windows 10 it will default to the one-core voices. Note that the one-core voices are not available for earlier versions of Windows; you must have Windows 10. Your interface language for Windows already has the appropriate voice or voices installed, but you will need to add voices for the language you wish to learn. I'm giving three slightly different sets of instructions here because some people have older computers that cannot run the very latest version of Windows 10. Unfortunately if you run Windows 7 or 8 you will have to adapt these instructions somewhat; I no longer have older versions of windows to test with. And for older versions you will get SAPI, not one-core voices. One further note: the interface and display languages for Windows can now be set separately and they do not affect the language used by speech. They do affect the language your screen reader uses, but you need to be careful as I said above that you don't have the interface set to language A, while the display language is set to language B and the synthesizer is set to language C. Proceed with care especially if you are trying to install synthesizers for languages you do not yet speak! (I once got my iPhone stuck in Arabic and luckily working at a college I actually located a blind student who used voiceover whose native language was Arabic and who fixed the problem.) First, I'll start with the oldest set of instructions. To make it simple I'm assuming you are learning Spanish and English is the language your Windows is set to now. Of course you can substitute whatever language you intend to learn and whatever interface language you now are using in Windows. Go to Settings (Windows-I) Choose "Time and Language" Select language Last time we performed these steps, I warned you to not pick Spanish. Here, I do want you to pick Spanish, just be very sure you read prompts very carefully because you don't want your Windows to start displaying in Spanish! Choose Spanish, and choose add a language pack. A language pack is added. Once that's done, select it from the list of available languages by hitting space, and tab over to options. If you accept defaults here, your Windows interface and display language will be changed to Spanish. I made this mistake once, and getting it back to English was a pain! Instead there are check boxes where you can set Spanish to be your display language, interface language or the language just used by speech. You select speech and then you can select the dialects you want, for example, for Spanish you can pick Castilian and Mexican. For French you can pick France or Canada and for English you can pick U.S. U.K. or Australia. You can also select all the voices for all the available dialects. Here are some newer instructions taken from the web. I did test these out on my work machine before the last Windows 10 update and they also worked. 1.     Select the Start  button, then select Settings , choose Time & language, and then select Region & language . 2.     Select Add a language and search for the language you want to add. Choose the language you want to add from the list of search results. When you choose a language, you’ll be taken back to the Region & language settings page. 3.     Select the language you just added, and select Options. 4.     Under Download language pack, select Download. Then, under Speech, select Download. After the download is complete, the voice will appear in the list of available voices you can choose as a default. These instructions worked until the very latest update of Windows 10. Now you don't need to install an entire language pack. Instead, you can go to Settings-Time and Language and choose Speech which is the last item in the Time and language category. Under Speech you don't have to worry about accidentally setting Windows to display or change its interface to a different language. Instead, simply tab over to "Add voices which is under a group heading of "manage voices". There, you just check one or more languages and your voice is installed. It then shows up in the list of available voices and if you use Narrator, you can pick any of these as your default. Also, when you restart NVDA, you'll be able to go to preferences-speech and se the new voices. The third way to get voices is to use Microsoft Sapi or the Microsoft Speech platform. The NVDA wiki documents this along with ways to obtain yet more voices here: https://github.com/nvaccess/nvda/wiki/ExtraVoices so I won't repeat those excellent instructions. I will add however that if you own K1000 or have access to its installation CD, it contains SAPI and Microsoft speech platform voices you can install and legally use for free. These work in Windows versions from XP through the current Windows 10. A quick point about K1000: it can auto-detect languages on the paragraph level. So if you have a document in multiple languages, it will check at the start of each paragraph and if another language is detected, it will switch to that voice if installed. However, it isn’t always right, and this setting can only be toggled On or OFF, there are no other adjustments. For JAWS, you have free voices that work only with JAWS. To install them, go to your JAWS Window with Insert-J. Choose Options, then Voices, then add/remove voices. The interface for doing this with older versions of JAWS is more complex so consult the help screens on voice profiles. There are also older training materials on the Freedom Scientific training site which show you how to set up voice profiles. New versions of JAWS handle the profile setup automatically for you. A profile is simply a voice, a language and the details like rate and punctuation level set. When you choose to add or remove voices, you are taken to a dialog which lets you do just that; voices are listed and you can sample them, select the ones you want and JAWS will download them from the internet and install them for you. Spanish, for example has ten voices, while German has only two. Once the voices are installed, you can now switch profiles using the JAWS command Insert-Ctrl-S. Step 3: Get your Braille display Configured Of course, if you don't use Braille, ignore this step. But even if you only use Braille occasionally, it can be enormously helpful when you are trying to read those long passages in a foreign language on your screen. Braille allows you to slow down and examine each word in detail. If you only have an ancient Braille display, or one that doesn’t appear to have NVDA support, do not despair. Using Brltty, NVDA can support many more Braille displays, especially ancient ones you might not realize support still exists. Setting up Brltty is a topic for another talk, but if you search the NVDA mailing list, you can find some helpful tips. If you use Braille with JAWS, you know you need to pick a Braille table which JAWS considers separate from a translation. But in NVDA the concept of a table and a translation are the same thing. So when you go to Preferences-Braille in NVDA, you pick from a long list of tables that are listed in alphabetical order. My favorite for learning Spanish was Spanish Grade 1, as I don't know the Braille contractions for Spanish but did know the symbols for the accented characters. You have lots of choices here, and might prefer to select six or eight-dot computer Braille for your chosen language instead. You can create a configuration profile for notepad for example if you want the particular table to load when you use Notepad. Spanish is relatively easy. I can for example read English just fine even when my Spanish table is loaded. But if the Braille for your particular language is completely different from your primary language, you'll have to master that table as well as the language which can be a rather daunting task. Just be aware that you might need to do some research to discover whether that will be necessary. There is an additional wrinkle with JAWS. You must first select computer Braille as your default, turning off either Grade 2 or UEB. After that, Settings center will permit you to go in to a dialog labeled Braille tables and check all the ones you want. You do this by pressing space on the ones you wish to select. You then pick one table to be your primary and another to be your secondary. After that, you can return to contracted Braille if you choose, and you can still go ahead and select your primary or secondary table when you need to using either the Settings center or your quick settings. Settings remain persistent, that is they automatically save, so if you set your secondary table to Spanish in Notepad and you return to Notepad later to read some English, you’ll be doing so with the Spanish table. Step 4: Get help from Add-ons There are limitations when you are constantly switching between the primary language and the language you are trying to learn. You either have to keep going in to NVDA preferences to switch synthesizers and Braille tables or you create configuration profiles and now whenever you load your browser or Word processor you are stuck with a particular synthesizer and Braille table. So let's install some add-ons to the rescue. First, I love Tyler Spivi’s Switch Synth. https://addons.nvda-project.org/addons/switchSynth.en.html This addon lets you configure NVDA with the synthesizer you prefer in a particular situation, then save it to a numbered "slot". When you press the hotkey for that slot, that synthesizer is loaded. For example, I load NVDA and it is using Windows 10 David. I press CTRL-SHFT-NVDA-1 to switch to slot 1. Slot 1 is empty. To save my current configuration with David, I press CTRL-SHFT-NVDA-V. Next I want slot 2 to use Espeak. So I configure NVDA to use Espeak and I then press CTRL-SHFT-NVDA-2 to go to empty slot 2. Then I press CTRL-SHFT-NVDA-V to save espeak to slot 2. Now if I press CTRL-SHFT-NVDA-1 I'll return to slot 1 and it will automatically load Microsoft David. This doesn't change the language of the voice, but some voices do a better job with certain languages. I personally like the way Espeak reads German but not Spanish. I have the one-core voice for Spanish installed, so when I switch to David, and I encounter Spanish, NVDA automatically switches to the One-core Spanish voice -- but more about automatic switching in the following step. The slots are persistent; that is, you can restart the PC and whatever you saved in a particular slot is loaded once you change to that slot. My second add-on to highlight here is Braille Extender. Find its page here: https://addons.nvda-project.org/addons/brailleExtender.en.html Braille extender has a host of useful features. It suppresses the display of nonprintable characters, which makes it a whole lot easier to read unfamiliar text. It has a BRF mode, should you be lucky enough to have a hand-transcribed BRF file of your textbook. And most important it lets you switch between an unlimited number of Braille tables. (Though if you configure too many tables it does tend to crash or get confused.) Here's how to set up multiple tables: Go to NVDA Preferences-Settings-Braille extender-Braille tables. You arrow through a list of tables which default to none. On each table you can press Space to toggle to input only, press space a second time for output only and press space a third time for both input and output. You can press space a fourth time to rotor back to the none setting. Arrow through the long list of tables selecting the ones you most likely will need. I have English Grade 2, English computer Braille and Spanish grade 1 set for output only. To switch between tables, I press NVDA-SHFT-U. Braille extender has many more keystrokes. They are tied to fancy features you should investigate if you are a lover of Braille. There are no publicly available scripts for JAWS that do the same thing, but JAWS does have an additional feature that helps. In JAWS press Windows-Ctrl-L and you’ll be in the “Select a Language”dialog. This lets you select a language you’d like text to be voiced in. If your synthesizer engine is capable of that language, it will immediately switch to reading. For example Eloquence, the JAWS default can read in many languages, so all I have to do to read Spanish is select Spanish from that list. If I want a higher quality voice, I can first switch to any of my Vocalizer expressive profiles, and asuming I have a Spanish voice installed, JAWS will automatically switch to Spanish as soon as I select it from the Select a language menu. For Braille and JAWS, there is no keystroke I can issue; I have to go to Settings Center, search for computer Braille tables and make my choices there. It isn’t as efficient as using Braille extender to switch tables on the fly. A word about Input Gestures You can go in to NVDA Preferences and choose Input Gestures. Here you can add or remove keystrokes, touch gestures or button presses on your Braille display to trigger commands, including those in addons. For example my Bluetooth keyboard won't react to three keys held down simultaneously, so I added input gestures for both SwitchSynth and Braille extender to make it easier to change Braille tables and synthesizers when I was working with this keyboard. If you find it cumbersome to press CTRL-SHFT-NVDA and yet another keystroke, you can make it easier on yourself by simply adding one that's easier to press. For example, I configured a button on my Braille display to have speech announce the currently active Braille table. I configured another button to switch to Spanish. In JAWS the keyboard manager is your friend, but you can’t actually issue keystrokes to do anything that JAWS doesn’t already have a keystroke assigned to do that is related to switching languages. However, if you find a keystroke awkward, such as CTRL-Insert-S to switch voice profiles or CTRL-Windows-L to switch languages, you can always add or modify existing JAWS keystrokes, or assign them to buttons on your Braille display. There are no JAWS keystroke-enabled functions specifically tied to using Braille with multiple languages. Getting A Translation NVDA has one more add-on of interest. It is Instant Translate: https://addons.nvda-project.org/addons/instantTranslate.en.html which does just what it says. By default it is controlled with layered keystrokes – complete documentation is in the above link, but I set mine using Input Gestures so that CTRL-Windows-T translates selected text. You can have it choose to translate text you selected or text you first copied to the clipboard. It can also copy the translation to the clipboard, overwriting what’s already there. You can have it tell you the source and target languages – it has many to choose from. It has its own entry in the NVDA settings, but it’s very easy to configure. In all cases, when it translates, it immediately reads the results out loud, but does not appear to display it in Braille. For that, you’ll need to copy the clipboard to Notepad or Word so you can read it, if you’ve chosen to have it optionally save the translation to the clipboard. This translation puts nothing onscreen, handy if you are taking an exam and want to do some translating on the fly without your teacher being the wiser. Step 5: Altering a document to trigger language Switching We've already seen that add-ons can help with this process. If, your document is properly marked up, language switching will happen automatically. But if it's not, you'll have to add the markup yourself. NVDA can only switch languages when it's reading either a Word document or HTML. This does not work for text. In HTML, the document needs to have a primary language, which in the html header is coded with the lang= attribute. The same attribute is used in the body of the document, and here I won’t enclose the codes in the required angle brackets. For example: lang=en-us Good Morning. lang=es Buenos días. lang=en-us How are you? lang=es ¿Cómo está usted? lang=en-us You can read more information about how to exactly code the HTML here: https://developer.paciellogroup.com/blog/2016/06/using-the-html-lang-attribute/ You can also find a good example on the Freedom Scientific site here: https://www.freedomscientific.com/SurfsUp/Languages.htm In Word, all you have to do is pick items off the ribbon. To mark a passage as Spanish, select it then go to the review tab on the ribbon, select language, then select Set proofing language, and pick Spanish from the list. These steps haven't changed since Word 2007, but the keystrokes have. Currently they are alt-r (to call up the review tab) U to call up languages, and L to set the proofing language. You'll still have to arrow through the list of languages after you press alt-R u L, because currently Word doesn't seem to have first-letter navigation active on that particular list. Warning: don't press alt-r L by mistake because that's how you set a default language for your document. Conclusion The above steps won’t erase all your language learning challenges. You may encounter an electronic textbook that’s not properly marked up for your language. But your country’s laws might require that the educational institution do that markup for you to provide you equal access as a disabled student. Advocate for yourself when necessary. You might find the website you want or need to use is inaccessible. In that case, move on to one that is. Popular languages have podcasts and online learning platforms galore and some are even free. You may be struggling with a particular configuration, for example when my Braille display kept clogging up my view with tons of unwanted strange characters, I turned to the NVDA mailing list. There, I learned about the value of the Braille Extender add-on. When I couldn’t get Braille tables working in JAWS I wrote to their tech support and asked for step-by-step instructions. So ask for help; you’re not the only language learner out there. (Deborah Armstrong is alternate media specialist at De Anza community college in Cupertino, CA. (Draft, last Revised, Wednesday, October 28, 2020 for JAWS Version Version 2020.2008.24 and NVDA version 2020.3.)