Eric Niquette UI, UX, Accessibility

Configuring the NVDA screen reader for multilingual testing

Published

The NVDA screen reader is a powerful tool to audit a website's accessibility but understanding how synthesizers and profiles intertwine with multiple languages can be a little daunting at first glance.

Introduction

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.

About NVDA

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.

Voice synthesizers

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.

Illustration of screen readers interpreting content to text and vocalizing the result

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.

  1. NVDA menu
  2. Preferences
  3. Speech

Available synthesizers

eSpeak NG

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.

Commercial synthesizers

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.

  1. Settings
  2. Time and Language
  3. Language and Region
Screenshot of the Windows language panel with multiple French language packs installed

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.

Screenshot of the NVDA voice settings panel with the Caroline voice highlighted

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.

Configuring NVDA

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.

  1. NVDA menu
  2. Preferences
  3. Settings
  4. Keyboard

Application language

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 Heading level 1.

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.

  1. NVDA menu
  2. Preferences
  3. Settings
  4. General
  5. 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.

  1. NVDA menu
  2. Preferences
  3. Settings
  4. Speech

Speech viewer

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.

Screenshot of the speech viewer panel

The speech viewer can be enabled in NVDA's Tools menu and configured to automatically open on startup.

  1. NVDA menu
  2. Tools
  3. Speech viewer

Mouse tracking

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.

  1. NVDA menu
  2. Preferences
  3. Settings
  4. Mouse
  5. 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.

  1. NVDA menu
  2. Configuration profiles

Shortcuts

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.

Type Shortcut Description
Reading Shift Pause/resume speech
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.

Other resources

NVDA command key quick reference

NVAccess

Using NVDA to Evaluate Web Accessibility

WebAIM