Unlock all Windows 10 TTS voices system-wide to get more of them
Microsoft's Windows 10 operating system comes with a set of voices for each language installed on the device. Only some of the installed voices become available system-wide so that third-party software and services may make use of them as well. The majority of voices are restricted to internal use, e.g. for Cortana or other areas.
If you open Settings > Ease of Access > Narrator and select the "choose a voice" menu there, you get a list of voices that are available.
When you open a third-party program that uses voices on the Windows PC, only some of these are provided.
The screenshot above shows how many voices are available when you select the voice picker in Narrator.
The third-party program Balabolka displays only three voices that you may select even though you know that more are available on the device: frustrating.
There is a way, however, to unlock all Windows 10 text-to-speech voices so that they become available to any program or app that uses the voices that Windows provides.
Note: The method requires Registry editing. I suggest you create a backup of the Registry or even your system before you make any modifications to the Windows Registry so that you can restore the initial state if things don't go as planned.
Here is how that is done:
Step 1: Open the Windows Registry Editor
- Activate the Start menu of the operating system.
- Type regedit.exe to launch the Registry Editor.
- Confirm the UAC security prompt that is displayed.
Step 2: Open the list of available voices
- Go to the Registry key Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens
It lists all the voices that are available (except for Cortana voices, more about that later).
Step 3: Export the voices
You need to export the voice information in the Registry in the first step.
- Right-click on a key in the Registry Editor, e.g. MSTTS_V110_enUS_MarkM and select Export.
- Type a name for the new Registry file, e.g. markm, and select save from the dialog.
4. Modify the exported Registry file
Open the saved Registry file. It needs to be modified so that its values are added to two other locations in the Registry.
- Copy all information except for the first line (Windows Registry Editor Version 5.00) and paste the information below the content of the file.
- Replace the location in the first data set with HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens
- Replace the location in the second data set with HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\SPEECH\Voices\Tokens
Note: Each set includes two paths that you need to replace. Take a look at the following modified Registry file to better understand the process (for the U.S. voice Mark):
Original File:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens\MSTTS_V110_enUS_MarkM]
@="Microsoft Mark - English (United States)"
"409"="Microsoft Mark - English (United States)"
"CLSID"="{179F3D56-1B0B-42B2-A962-59B7EF59FE1B}"
"LangDataPath"=hex(2):25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,5c,00,53,\
00,70,00,65,00,65,00,63,00,68,00,5f,00,4f,00,6e,00,65,00,43,00,6f,00,72,00,\
65,00,5c,00,45,00,6e,00,67,00,69,00,6e,00,65,00,73,00,5c,00,54,00,54,00,53,\
00,5c,00,65,00,6e,00,2d,00,55,00,53,00,5c,00,4d,00,53,00,54,00,54,00,53,00,\
4c,00,6f,00,63,00,65,00,6e,00,55,00,53,00,2e,00,64,00,61,00,74,00,00,00
"VoicePath"=hex(2):25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,5c,00,53,00,\
70,00,65,00,65,00,63,00,68,00,5f,00,4f,00,6e,00,65,00,43,00,6f,00,72,00,65,\
00,5c,00,45,00,6e,00,67,00,69,00,6e,00,65,00,73,00,5c,00,54,00,54,00,53,00,\
5c,00,65,00,6e,00,2d,00,55,00,53,00,5c,00,4d,00,31,00,30,00,33,00,33,00,4d,\
00,61,00,72,00,6b,00,00,00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens\MSTTS_V110_enUS_MarkM\Attributes]
"Age"="Adult"
"DataVersion"="11.0.2013.1022"
"Gender"="Male"
"Language"="409"
"Name"="Microsoft Mark"
"SharedPronunciation"=""
"Vendor"="Microsoft"
"Version"="11.0"
Modified File:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\MSTTS_V110_enUS_MarkM]
@="Microsoft Mark - English (United States)"
"409"="Microsoft Mark - English (United States)"
"CLSID"="{179F3D56-1B0B-42B2-A962-59B7EF59FE1B}"
"LangDataPath"=hex(2):25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,5c,00,53,\
00,70,00,65,00,65,00,63,00,68,00,5f,00,4f,00,6e,00,65,00,43,00,6f,00,72,00,\
65,00,5c,00,45,00,6e,00,67,00,69,00,6e,00,65,00,73,00,5c,00,54,00,54,00,53,\
00,5c,00,65,00,6e,00,2d,00,55,00,53,00,5c,00,4d,00,53,00,54,00,54,00,53,00,\
4c,00,6f,00,63,00,65,00,6e,00,55,00,53,00,2e,00,64,00,61,00,74,00,00,00
"VoicePath"=hex(2):25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,5c,00,53,00,\
70,00,65,00,65,00,63,00,68,00,5f,00,4f,00,6e,00,65,00,43,00,6f,00,72,00,65,\
00,5c,00,45,00,6e,00,67,00,69,00,6e,00,65,00,73,00,5c,00,54,00,54,00,53,00,\
5c,00,65,00,6e,00,2d,00,55,00,53,00,5c,00,4d,00,31,00,30,00,33,00,33,00,4d,\
00,61,00,72,00,6b,00,00,00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\MSTTS_V110_enUS_MarkM\Attributes]
"Age"="Adult"
"DataVersion"="11.0.2013.1022"
"Gender"="Male"
"Language"="409"
"Name"="Microsoft Mark"
"SharedPronunciation"=""
"Vendor"="Microsoft"
"Version"="11.0"
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\SPEECH\Voices\Tokens\MSTTS_V110_enUS_MarkM]
@="Microsoft Mark - English (United States)"
"409"="Microsoft Mark - English (United States)"
"CLSID"="{179F3D56-1B0B-42B2-A962-59B7EF59FE1B}"
"LangDataPath"=hex(2):25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,5c,00,53,\
00,70,00,65,00,65,00,63,00,68,00,5f,00,4f,00,6e,00,65,00,43,00,6f,00,72,00,\
65,00,5c,00,45,00,6e,00,67,00,69,00,6e,00,65,00,73,00,5c,00,54,00,54,00,53,\
00,5c,00,65,00,6e,00,2d,00,55,00,53,00,5c,00,4d,00,53,00,54,00,54,00,53,00,\
4c,00,6f,00,63,00,65,00,6e,00,55,00,53,00,2e,00,64,00,61,00,74,00,00,00
"VoicePath"=hex(2):25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,5c,00,53,00,\
70,00,65,00,65,00,63,00,68,00,5f,00,4f,00,6e,00,65,00,43,00,6f,00,72,00,65,\
00,5c,00,45,00,6e,00,67,00,69,00,6e,00,65,00,73,00,5c,00,54,00,54,00,53,00,\
5c,00,65,00,6e,00,2d,00,55,00,53,00,5c,00,4d,00,31,00,30,00,33,00,33,00,4d,\
00,61,00,72,00,6b,00,00,00
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\SPEECH\Voices\Tokens\MSTTS_V110_enUS_MarkM\Attributes]
"Age"="Adult"
"DataVersion"="11.0.2013.1022"
"Gender"="Male"
"Language"="409"
"Name"="Microsoft Mark"
"SharedPronunciation"=""
"Vendor"="Microsoft"
"Version"="11.0"
Step 5: Import the new data
Importing is straightforward. Just double-click on the Registry file that you have modified and accept the warning prompt.
Note that you need to switch users, sign off and on again, or restart the PC before you may see the new voice in other programs.
Also, you need administrative rights to add data to the Registry using .reg files.
Bonus Step: Cortana
Cortana's exclusive voices are referenced in another location in the Registry.
- Go to HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\microsoft.windows.cortana_cw5n1h2txyewy\SOFTWARE\Microsoft\Speech_OneCore\Isolated in the Registry Editor.
- You find a number of random character values there. Follow one of them to \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens
- On my test system, I went to HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\microsoft.windows.cortana_cw5n1h2txyewy\SOFTWARE\Microsoft\Speech_OneCore\Isolated\ohDO1Sgy3MzgdEgEb4WYfDS4eikKwN2EBJ1Cyr7HTF0\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens
- Note that the actual voices need to have LangUpdateDataDirectory listed when you select the folder.
- Export the data just like you have before.
- Copy the data of the Registry file so that it exists three times (not two) in the exported Registry file.
- Replace the first set up to Tokens with HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens
- Replace the second set up to Tokens with HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens
- Replace the third set up to Tokens with HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\SPEECH\Voices\Tokens
Here is an example using the U.S. Cortana voice Eva.
Original File:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\microsoft.windows.cortana_cw5n1h2txyewy\SOFTWARE\Microsoft\Speech_OneCore\Isolated\ohDO1Sgy3MzgdEgEb4WYfDS4eikKwN2EBJ1Cyr7HTF0\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens\MSTTS_V110_enUS_EvaM]
@="Microsoft Eva Mobile - English (United States)"
"LangDataPath"="%windir%\\Speech_OneCore\\Engines\\TTS\\en-US\\MSTTSLocenUS.dat"
"LangUpdateDataDirectory"="%SystemDrive%\\Data\\SharedData\\Speech_OneCore\\Engines\\TTS\\en-US"
"VoicePath"="%windir%\\Speech_OneCore\\Engines\\TTS\\en-US\\M1033Eva"
"VoiceUpdateDataDirectory"="%SystemDrive%\\Data\\SharedData\\Speech_OneCore\\Engines\\TTS\\en-US"
"409"="Microsoft Eva Mobile - English (United States)"
"CLSID"="{179F3D56-1B0B-42B2-A962-59B7EF59FE1B}"
[HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\microsoft.windows.cortana_cw5n1h2txyewy\SOFTWARE\Microsoft\Speech_OneCore\Isolated\ohDO1Sgy3MzgdEgEb4WYfDS4eikKwN2EBJ1Cyr7HTF0\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens\MSTTS_V110_enUS_EvaM\Attributes]
"Version"="11.0"
"Language"="409"
"Gender"="Female"
"Age"="Adult"
"DataVersion"="11.0.2013.1022"
"SharedPronunciation"=""
"Name"="Microsoft Eva Mobile"
"Vendor"="Microsoft"
"PersonalAssistant"="1"
Edited File:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens\MSTTS_V110_enUS_EvaM]
@="Microsoft Eva Mobile - English (United States)"
"LangDataPath"="%windir%\\Speech_OneCore\\Engines\\TTS\\en-US\\MSTTSLocenUS.dat"
"LangUpdateDataDirectory"="%SystemDrive%\\Data\\SharedData\\Speech_OneCore\\Engines\\TTS\\en-US"
"VoicePath"="%windir%\\Speech_OneCore\\Engines\\TTS\\en-US\\M1033Eva"
"VoiceUpdateDataDirectory"="%SystemDrive%\\Data\\SharedData\\Speech_OneCore\\Engines\\TTS\\en-US"
"409"="Microsoft Eva Mobile - English (United States)"
"CLSID"="{179F3D56-1B0B-42B2-A962-59B7EF59FE1B}"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens\MSTTS_V110_enUS_EvaM\Attributes]
"Version"="11.0"
"Language"="409"
"Gender"="Female"
"Age"="Adult"
"DataVersion"="11.0.2013.1022"
"SharedPronunciation"=""
"Name"="Microsoft Eva Mobile"
"Vendor"="Microsoft"
"PersonalAssistant"="1"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\MSTTS_V110_enUS_EvaM]
@="Microsoft Eva Mobile - English (United States)"
"LangDataPath"="%windir%\\Speech_OneCore\\Engines\\TTS\\en-US\\MSTTSLocenUS.dat"
"LangUpdateDataDirectory"="%SystemDrive%\\Data\\SharedData\\Speech_OneCore\\Engines\\TTS\\en-US"
"VoicePath"="%windir%\\Speech_OneCore\\Engines\\TTS\\en-US\\M1033Eva"
"VoiceUpdateDataDirectory"="%SystemDrive%\\Data\\SharedData\\Speech_OneCore\\Engines\\TTS\\en-US"
"409"="Microsoft Eva Mobile - English (United States)"
"CLSID"="{179F3D56-1B0B-42B2-A962-59B7EF59FE1B}"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\MSTTS_V110_enUS_EvaM\Attributes]
"Version"="11.0"
"Language"="409"
"Gender"="Female"
"Age"="Adult"
"DataVersion"="11.0.2013.1022"
"SharedPronunciation"=""
"Name"="Microsoft Eva Mobile"
"Vendor"="Microsoft"
"PersonalAssistant"="1"
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\SPEECH\Voices\Tokens\MSTTS_V110_enUS_EvaM]
@="Microsoft Eva Mobile - English (United States)"
"LangDataPath"="%windir%\\Speech_OneCore\\Engines\\TTS\\en-US\\MSTTSLocenUS.dat"
"LangUpdateDataDirectory"="%SystemDrive%\\Data\\SharedData\\Speech_OneCore\\Engines\\TTS\\en-US"
"VoicePath"="%windir%\\Speech_OneCore\\Engines\\TTS\\en-US\\M1033Eva"
"VoiceUpdateDataDirectory"="%SystemDrive%\\Data\\SharedData\\Speech_OneCore\\Engines\\TTS\\en-US"
"409"="Microsoft Eva Mobile - English (United States)"
"CLSID"="{179F3D56-1B0B-42B2-A962-59B7EF59FE1B}"
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\SPEECH\Voices\Tokens\MSTTS_V110_enUS_EvaM\Attributes]
"Version"="11.0"
"Language"="409"
"Gender"="Female"
"Age"="Adult"
"DataVersion"="11.0.2013.1022"
"SharedPronunciation"=""
"Name"="Microsoft Eva Mobile"
"Vendor"="Microsoft"
"PersonalAssistant"="1"
You can download the Registry files to add the Cortana voice Eva and the voice Mark system-wide: (Download Removed)
Repeat the steps for any language that you may have installed, the process is always the same. (via Reddit)
Any steps on how to add Arabic speech to Windows 10 ?
any update on the new voices for win11 windows 11 22h2 voices of guy, aria, and jenny natural voices in narrator?
I just tried adding the ‘Guy’ voice for Win11. The Speech Properties “Voice selection” window now contains Microsoft James voice. However, when I select it, I receive a popup which says: “This voice cannot be played. Please try selecting another voice or selecting a different audio output device.”
Any assistance would be greatly helpful! I’m trying to get access to these voices to use on Logos Bible software.
May 2022, on windows 11 it worked like a charme , thank you
Hello,
I developed a small tool which allows to patch the installed voices to make them available for the .NET text-to-speech engine.
The tool copies selected items from the “HKLM\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens” key to “HKLM\SOFTWARE\Microsoft\Speech\Voices\Tokens”.
If you’re interested : https://www.dipisoft.com/file/TTSVoicePatcher.zip (it’s freeware, FR/EN)
Due to the manipulation of keys in HKLM, the tool requires administrator rights to be launched.
Regards.
Indeed, this solution is much easier to implement! Thank you very much for sharing this tool!
It would have been perfect if you had additionally opened the source code.
Peter.
Perfect solution! Everything else I tried did not work.
Thanks very much Martin! It took me some time to find your information on the internet. But now all of my installed system languages are also available from the ‘read aloud’ configurations pop-up in Calibre.
Thank you Martin. It worked exactly as described.
This was an incredible help to me, so thanks so much for posting such a thorough explanation.
Nevermind… In my copy paste action, I somehow missed a few brackets…
It’s working now!
I just followed all steps (several times now). But nothing seems to get added to my registry.
In the registry editor I browsed to both locations, but there’s only just the default voices: Hazel, David and Zira..
I did exactly as described, but I cant get voice Mark to be added…
Yes I did restart after each try.
Also, each time I tried to merge I got the registry editor prompt:
The keys and values contained in blablabla….markm.reg have been successfully added to the registry
However Mark isn’t visible in the registry editor :-(
Followed all steps, read and tried multiple times, but somehow the edited .reg files are not added to the registry.
I tried adding MarkM voice (just like in the example) and restarted my pc
But when I check the paths:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\MSTTS_V110_enUS_MarkM]
&
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\SPEECH\Voices\Tokens\MSTTS_V110_enUS_MarkM]
in the reg editor, nothing has been added :-(
I only see Hazel, David and Zira..
Looks like the angle brackets apparently caused the command I was referencing to be stripped out of my reply. Removing them leaves this:
voice required=”Name=Microsoft Zira Desktop”
Have gotten the following installed in Balabolka and they are working:
Microsoft David Desktop
Microsoft Zira Desktop
Microsoft Server Speech Text to Speech Voice (en-G8, Hazel)
Microsoft Server Speech Text to Speech Voice (en-US Helen)
Microsoft Server Speech Text to Speech Voice (en-US ZiraPro)
Howeverm I can’t figure out appropriate names for the MS Server Speech ones to use in Balabolka’s voice setting parameter:
Anyone succeeded with this?
Thank you very much ,this post solve my question.Thumb up!
downloaded them and tested them in the default voice selector. Seem to be fine
I suggest showing the files in a two column table with the items that need to be changed highlighted. This would make editing the files easier.
Working 100%. You are genius.
Sir this procedure doesn’t work for hindi tts.
their is a software which i developed that registers all the voices and any voices you want if you have the language packs installed
To ydntk- I’m interested to know more about your software, especially if it can be used without having to take lots of aspirins! Lol.
One shouldn’t need to go through so much trouble… there’s definitely something wrong here.
It doesn’t work
Confirmed on 3/4/2020
Great, it works with https://balabolka.en.softonic.com/. I got Cortana to say words like “fuck” without her censoring it. However, the inflection and timing doesn’t seem to be as good as when Cortana speaks after saying “Hey Cortana”; maybe inflection and timing is only polished for premade things that she says.
I get “Can not synthesize the speech: Class is not registered.” When trying to use the MarkM voice.
thank you so much.
Thank you so much!!!!!!!!!!
Appliying these procedure, you didn´t unlock anything. The voices are seen but are not able to be used.
Hatte auch den Fehler!
Man muss für jeden Eintrag 2x den Pfad ändern.
Liebe Grüße
Johannes
I Think the only problem is, when it comes an update. I think you will loose all these changes.
Try Blockadblock.
Thank You!!!!!!!!!!!!!!!!
You can use Powershell to do the same thing.
https://gist.github.com/hiepxanh/8b6ad80f6d620cd3eaaaa5c1d2c660b2
how to use that?
you are a genius man
Doesn’t currently work. Shows Eva Mobile in narrowater list, but nothing lists in ‘speech settings’
Are there any differences between the versions found in both randomly named keys??
Dont work with “MSTTS_V110_heIL_Asaf” Hebrew. :(
What about earlier Windows versions ?
it do not work in windows 7 professional and windows 7 expert.
Are you blind? This article is for Windows 10.
Nice tip, thanks Martin.
Very interesting, thank you !
brilliant Martin