In Canada, public-facing websites are typically offered in both English and French. Performing an accessibility audit with the NVDA screen reader in a multilingual environment requires an initial configuration and a bit of insight on how voice synthesizers work.
For the sake of this article, I'm going to assume you have an English installation of NVDA and are trying to assess French a document, but the same guidelines apply for any other languages you may need to support.
Non-Visual Desktop Access (NVDA) is a free and open-source screen reader for the Windows desktop environment boasting support for popular browsers such as Mozilla Firefox, Google Chrome, as well as email clients, internet chat software, music players, and office programs such as Microsoft Word and Excel.
According to a 2021 survey by WebAIM, NVDA is used in some capacity by roughly 50% of respondents, 30% identifying it as their primary reader of choice.
NVDA can be run locally as a portable application, which does not require any administrative right, or installed as a service allowing it to run on the login screen and interact with elevated prompts.
Also referred to as speech synthesizers or text-to-speech (TTS) engines, voice synthesizers are the component of screen readers that convert text into spoken audio.
In a nutshell, screen readers work by interpreting on-screen content and providing specific details on elements like images, headings, and overall structure. This interpreted information is then, using the speech synthesizer, relayed to the user as spoken audio.
NVDA is compatible with many popular voice synthesizers like eSpeak NG, the Microsoft Speech API platform, and Windows OneCore voices. While it also supports commercial synthesizers like Eloquence and Vocalizer, they are not part of the standard installation and require a separate purchase.
Selecting a synthesizer
Synthesizers like eSpeak NG prioritize flexibility and broad language support. Others, like Vocalizer and Micorosoft OneCore Voices, prioritize natural-sounding voices. Selecting which synthesizer to use is a personal preference that can vary based on the user's needs. The primary focus of this article will be on the Microsoft OneCore Voices as its typically the most comfortable synthesizer to use for new users.
In NVDA, selecting a speech synthesizer is done in the Speech preferences panel.
- NVDA menu
Bundled with NVDA, eSpeak NG (eSpeak Next Generation) is a lightweight, open-source voice synthesizer based on formant synthesis rather than voice recordings. This has the result of producing a voice that can be a little robotic but one that can be easily understood at higher rates of speech. eSpeak NG additonally boasts broad built-in support for many languages and dialects.
eSPeak NG is the most straightforward synthesizer to use as it requires no configuration, and no external dependencies; it's all self-contained.
Microsoft Speech API version 5
Effectively replaced by OneCore Voices in Windows 10, the Microsoft Speech API is a legacy synthesizer based on voice recordings and produces a fairly smooth, natural-sounding voices.
I could only find limited data on the subject but it's likely that the API remains available for compatibility with older Windows systems that do not support OneCore Voices.
Microsoft OneCore Voices
The most modern implementation of the Microsoft speech platform, OneCore Voices was introduced in Windows 10 and is based on human voice recordings to produce a smooth, natural sound.
Microsoft OneCore Voices is NVDA's default synthesizer and offers good language compatibility but requires the installation of Windows voice packs.
Other commercial voice synthesizers can be purchased to suit user needs like the NVAccess Eloquence and Vocalizer bundle but are not included in the default installation.
Configuring OneCore Voices
How OneCore Voices handles language
Unlike other synthesizers, Microsoft OneCore Voices relies on the system's installed language packs to process text. In other words, unless you've previously installed them, you will not have French voices available by default.
Adding language packs
To add text to speech packs for individual languages, navigate to the Windows Language and Region settings panel and manually install the desired languages and dialects.
- Time and Language
- Language and Region
When installing language packs, you should also install the dialects you expect to encounter. For French, you should install both the default French pack for the voice and the French (Canada) pack for compatibility. This is because documents may be encoded with the generic French "fr" attribute or "fr-CA" for the Canadian French variant.
After restarting NVDA, new French voices such as Caroline and Claude can be found in NVDA's Speech settings panel, which confirms that the packs were installed correctly.
You do not need to change the voice after installation. It will automatically swap to the appropriate voice when French content is read. Once the new voices are installed, automatic language switching is enabled, and the content is correctly marked up, NVDA should start reading French text correctly.
NVDA modifier key
The NVDA modifier key is used for shortcuts and is mapped to Insert by default. If you're using a laptop or a condensed keyboard where Insert isn't available or otherwise hard to reach, the NVDA key can be mapped to Caps Lock in the Keyboard settings.
- NVDA menu
When NVDA provides information on an element it uses the language its configured to, not the language of the content it's reading out. An English NVDA installation will announce a French heading as
Bienvenue sur notre site web .
By default, NVDA adopts Windows' language setting. However, if you prefer a more immersive testing experience, you can modify this in the General Settings section.
- NVDA menu
- NVDA Language
Automatic language switching
Automatic language switching, as its name suggests, will dynamically shift between languages as long as the voice synthesizer supports it and the content is correctly labeled. The option can be turned on or off in NVDA's Speech settings panel.
- NVDA menu
The speech viewer displays a text version of what the screen reader vocalizes. The tool is particularly useful when troubleshooting complex interactions or to provide feedback to developers.
The speech viewer can be enabled in NVDA's Tools menu and configured to automatically open on startup.
- NVDA menu
- Speech viewer
You may have noticed NVDA reading everything the mouse cursor touches. In my experience, this can quickly get overwhelming and better left disabled, limiting feedback to keyboard input.
Mouse tracking can be toggled by pressing NVDA + M or in NVDA's Mouse settings panel.
- NVDA menu
- Enable mouse tracking
Working with profiles
The fastest way I've found to manually switch between languages for testing is by using profiles; one for French, one for English. Unfortunately, profiles do not capture the NVDA application language so that will need to be toggled as needed.
To add or manage profiles, first apply the desired language and speech settings, and save the profile. Repeat the process for the other languages. Profiles can then be toggled on and off in the Configuration Profiles menu which can also be opened with the shortcut NVDA + Ctrl + P.
- NVDA menu
- Configuration profiles
The following is a list of selected shortcuts that I typically use when testing. While it should cover the basics, a complete set of shortcuts is also available from NV Access.
|NVDA + ↓||Read continuously from current position|
|NVDA + ↑||Read current line|
|Navigation||↑ / ↓||Previous/next item|
|Tab / Shift + Tab||Next/previous interactive element|
|D / Shift + D||Next/previous landmark|
|H / Shift + H||Next/previous heading|
|Interaction||Enter||Activate an element or press a button|
|Space||Activate menus or press a button|
|Escape||Close menus, pop-ups, and leave input mode|
|Speech||NVDA + S||Toggle speech mode|
|NVDA + Ctrl + Up||Increase speech rate|
|NVDA + Ctrl + Down||Decrease speech rate|
Frequently asked questions
Is there a way to quickly toggle between profiles?
Not that I've found. There was some discussion on this a few years ago on NVDA's GitHub page but as far as I'm aware it's never been implemented.
Is the JAWS voice synthesizer configured like NVDA?
By default, JAWS uses the Eloquence voice synthesizer which supports a number of languages and dialects, including French and Canadian French. It does not require any particular configuration.
Is there an easier alternative to OneCore Voices?
eSpeak NG can be used without any external dependencies and, by default, supports a number of languages including English, French, Spanish, and more.
NVDA command key quick reference
Using NVDA to Evaluate Web Accessibility