Changing Windows Narrator's Voice

The Windows 2000 version of Windows Narrator, the built-in basic screenreader for Microsoft Windows, let you pick any SAPI4 voice on your system. The Windows Vista and Windows 7 Narrators let you pick any installed SAPI5 voices. Windows XP, however, limited Narrator to only let you use Microsoft Sam. This is bad if you're having to use Narrator for situations where your screenreader will not work (e.g. safe mode) or you are not an English speaker and need to do some testing.

However, it is possible to hack your XP machine to use a different SAPI5 voice. Here's a step-by-step guide, tested on some RealSpeak SAPI5 voices and eSpeak voices: note that it involves editing your registry, so you have to be logged in as an Adminstrator, and if you get it all wrong you might break Microsoft Sam - or even your own voices! Don't skip the step where you make a copy of the Microsoft Sam registry entries just-in-case.

  1. Install the SAPI5 voice you're going to use for Narrator and check Narrator still works. If you skip this you'll panic later on when your registry changes "break Narrator" when in fact it's the new voice.
  2. Open the Registry Editor (Start > Run > "regedit")
  3. Navigate to "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech"
  4. Select the "Speech" key and right-click (shift and F10) to bring up a pop-up menu. Select Export from the menu and save the key as "Speech" to your desktop. If you break Narrator, delete the Speech key entirely from the registry, then run this file and Windows will ask you if you want to add its contents to the registry: select yes, and your original Speech settings will be restored.
  5. Navigate to "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens"
  6. You should see a bunch of registry keys: each corresponds to a SAPI5 voice. The Microsoft Sam voice is "MSSam".
  7. Select the "MSSam" key and right-click (shift and F10) to bring up a pop-up menu. Select Export from the menu and save the key as "Microsoft Sam" to your desktop. If you break Microsoft Sam, delete the MSSam key entirely from the registry, then run this file and Windows will ask you if you want to add its contents to the registry: select yes, and your original Microsoft Sam settings will be applied.
  8. Open the registry key for the voice you want Narrator to use. For RealSpeak voices I've found that you need six values:
    • CLSID (should be a long string of characters, like "{CAC6785B-655E-4ae1-A656-BDEFD18DC46C}")
    • LangCode (should be a three-character code, e.g. "ENG" for British English)
    • Language (a descriptive name for the voice language, e.g. "British English")
    • VoiceName (e.g. "Daniel")
    • Frequency (e.g. "22")
    • VoiceData (the path to the data file for the voice, e.g. "C:\Program Files\ScanSoft\RealSpeak Solo V4\speech\components\data\Daniel.dat")
    For eSpeak voices you need two values:
    • CLSID (should be a long string of characters, like "{BE985C8D-BE32-4A22-AA93-55C16A6D1D91}")
    • VoiceName (e.g. "en-sc")
    Ian Sharpe reports it's even easier for AT&T voices:
    • CLSID (should be a long string of characters, like "{CAC6785B-655E-4ae1-A656-BDEFD18DC46C}".)
    Charl Barnard reports that for Cepstral voices I strongly suspect that different SAPI5 voices will require different keys. If you find out any, do let me know.
  9. Open the MSSam registry key. You'll see that some of the values are there (e.g. CLSID) and some are not (e.g. VoiceName).
  10. Apply the values from your chosen voice to the MSSam registry key. This will mean editing existing values and adding some new ones. Do not change the (Default) or 409 values, or any of the subkeys.
  11. Here is a working hacked MSSam registry entry changed to use RealSpeak Solo Daniel:
    Changed CLSID, VoiceData: Added Frequence, LangCode, Language and VoiceName.
  12. Open Control Panel and the system Speech applet. Check that Microsoft Sam is still in the list of voices, still works, but now sounds like your target voice. If it doesn't then go back to the previous steps and check the registry entries.
  13. Start Narrator, and it should now use your chosen voice!

Fixing Sam or Narrator if you break them

Put in the wrong registry entry? Sam stopped working? Narrator stopped working? Try the following:

  1. Open regedit.
  2. Open the Registry Editor (Start > Run > "regedit")
  3. Navigate to "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\MSSam".
  4. Delete this key entirely.
  5. Double-click or import your backup .reg file for MSSam. You did make a backup, right? You'll get a message saying the registry key has been successfully added to the registry.
  6. Check to see if Sam and/or Narrator now work.
  7. If you still have problems then delete the entire "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\" key. Note that this will kill all SAPI5 speech on your system, any installed voices, and quite possibly any programs that use speech.
  8. Double-click of import your backup .reg file for Speech. You did make a backup, right? You'll get a message saying the registry key as been successfully added to the registry. That should have put back every change you made during this process, so it should have fixed your system. If not, it's Windows XP reinstall time!

Didn't save the Microsoft Sam or Speech registry keys like the instructions told you to? Here are the Microsoft Sam and Speech registry files from a clean new Windows XP installation. If you have Windows installed to a drive other than drive C: you'll have to edit the registry files in Notepad. MSSam.reg Speech.reg

More Narrator information

You can find lots more information on Windows Narrator from the excellent site written by Veli-Pekka Tätilä.