Closed LeonarddeR closed 7 years ago
After some investigation, there seems to be a reference to a SAPI_OneCore.SpVoice com object in the registry. Alas:
>>> comtypes.client.CreateObject("SAPI_OneCore.SpVoice")
<POINTER(IUnknown) ptr=0x899cf80 at 534f440>
Hi,
In next.13417, I get the following traceback.
STR:
Traceback:
ERROR - scriptHandler.executeScript (22:10:43): error executing script: <bound method GlobalCommands.script_increaseSynthSetting of <globalCommands.GlobalCommands object at 0x04DDF230>> with gesture u'ctrl+NVDA+up arrow' Traceback (most recent call last): File "scriptHandler.pyc", line 186, in executeScript File "globalCommands.pyc", line 227, in script_increaseSynthSetting File "synthSettingsRing.pyc", line 118, in increase File "synthSettingsRing.pyc", line 17, in increase File "synthSettingsRing.pyc", line 53, in _set_value File "synthDriverHandler.pyc", line 29, in changeVoice File "synthDrivers\sapi5.pyc", line 193, in _set_voice File "synthDrivers\sapi5.pyc", line 174, in _initTts COMError: (-2147221164, 'Class not registered', (None, None, None, 0, None))
Setup:
It might be that future commits may have fixed this. Thanks.
Most likely the speech data for that language is not installed.
If you know its language you can go to Windows 10's language settings, choose options on that language, and download he speech pack.
We can't really do much about the error. The voice is registered, but does not contain its data. There is no real way to filter that voice out with out actually trying it.
Mick
On 11/07/2016 3:13 PM, Joseph Lee wrote:
Hi,
In next.13417, I get the following traceback.
STR:
- Select SAPI Mobile.
- Use Control+NvDA+up arrow to select different voices until you arrive at the last one.
- Press the command once more.
Traceback:
ERROR - scriptHandler.executeScript (22:10:43): error executing script: > with gesture u'ctrl+NVDA+up arrow' Traceback (most recent call last): File "scriptHandler.pyc", line 186, in executeScript File "globalCommands.pyc", line 227, in script_increaseSynthSetting File "synthSettingsRing.pyc", line 118, in increase File "synthSettingsRing.pyc", line 17, in increase File "synthSettingsRing.pyc", line 53, in _set_value File "synthDriverHandler.pyc", line 29, in changeVoice File "synthDrivers\sapi5.pyc", line 193, in _set_voice File "synthDrivers\sapi5.pyc", line 174, in _initTts COMError: (-2147221164, 'Class not registered', (None, None, None, 0, None))
Setup: 8 NVDA version: next.13417.
- OS: Windows 10 Insider build 14385
- Synthesizer: SAPI Mobile.
It might be that future commits may have fixed this. Thanks.
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/nvaccess/nvda/issues/6159#issuecomment-231643753, or mute the thread https://github.com/notifications/unsubscribe/ANf5nTbUALorKEZ1FN45v4UD7BOLoaWVks5qUdEWgaJpZM4JIR_w.
Michael Curran Executive Director, NV Access Limited Phone: +61 7 3149 3306 Website: http://www.nvaccess.org/ Twitter: @NVAccess Facebook: http://www.facebook.com/NVAccess
wouldn't it be possible to check the existence of de voice in c:\windows\system32\speech_onecore?
Hi,
Workaround confirmed.
For the record, the workaround is:
Issue at hand: I was using Korean, hence that explains why I got COM error. Thanks.
I think there is a bit of indirection between voice tokens and filenames. But I'll have a look. It may not be that simple.
On 11/07/2016 3:36 PM, Leonard de Ruijter wrote:
wouldn't it be possible to check the existence of de voice in c:\windows\system32\speech_onecore?
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/nvaccess/nvda/issues/6159#issuecomment-231646113, or mute the thread https://github.com/notifications/unsubscribe/ANf5nc1skG4pNt1ocOnXhTkYeNbfZx_Vks5qUdZrgaJpZM4JIR_w.
Michael Curran Executive Director, NV Access Limited Phone: +61 7 3149 3306 Website: http://www.nvaccess.org/ Twitter: @NVAccess Facebook: http://www.facebook.com/NVAccess
Loading this new synth fails when output device is not Microsoft sound mapper. the problem also occurs with Sapi 5 synths in this next release.
Thanks. Fixed in commit 4810483a989a8d4d3e57c1481ba63e5f8053b1b9
I think it is possible to fix the problem reported by @josephsl.
it's a mystery to me why Windows has these voices in the registry though. My Windows is English GB, so I have no English Australian stuff installed.
The speech rate isn't preserved when using synth settings ring.
On 7/11/2016 12:27 PM, Leonard de Ruijter wrote:
I think it is possible to fix the problem reported by @josephsl https://github.com/josephsl.
a. In HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens, there is an item "MSTTS_V110_enAU_CatherineM" in my case
b. This key has an attribute called VoicePath which contains the path to the voice data file. In my case: %windir%\Speech_OneCore\Engines\TTS\en-AU\M3081Catherine
c. When checking this paths existence, it doesn't exist. So in other words, when the path can not be found, ignore this voice, since it is not complete.
it's a mystery to me why Windows has these voices in the registry though. My Windows is English GB, so I have no English Australian stuff installed.
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/nvaccess/nvda/issues/6159#issuecomment-231821979, or mute the thread https://github.com/notifications/unsubscribe/AFGivZV67O8QOPYYooTEUgRDx06BPJ0Rks5qUosYgaJpZM4JIR_w.
Derek Riemer
Websites: Honors portfolio http://derekriemer.com Awesome little hand built weather app! http://django.derekriemer.com/weather/
email me at derek.riemer@colorado.edu mailto:derek.riemer@colorado.edu Phone: (303) 906-2194
Confirmed, but this issue also applies to Sapi5. I was able to reproduce this in master, so this seems a separate issue.
Technically that is not a complete path. That is the basename of one of the files .apm, .ini etc. I guess checking for the .ini would be safe enough I think.
On 12/07/2016 4:27 AM, Leonard de Ruijter wrote:
I think it is possible to fix the problem reported by @josephsl https://github.com/josephsl.
a. In HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens, there is an item "MSTTS_V110_enAU_CatherineM" in my case
b. This key has an attribute called VoicePath which contains the path to the voice data file. In my case: %windir%\Speech_OneCore\Engines\TTS\en-AU\M3081Catherine
c. When checking this paths existence, it doesn't exist. So in other words, when the path can not be found, ignore this voice, since it is not complete.
it's a mystery to me why Windows has these voices in the registry though. My Windows is English GB, so I have no English Australian stuff installed.
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/nvaccess/nvda/issues/6159#issuecomment-231821979, or mute the thread https://github.com/notifications/unsubscribe/ANf5nSvKxFhxYEDicwUVfpVgoJ-ETcQEks5qUosZgaJpZM4JIR_w.
Michael Curran Executive Director, NV Access Limited Phone: +61 7 3149 3306 Website: http://www.nvaccess.org/ Twitter: @NVAccess Facebook: http://www.facebook.com/NVAccess
Hi.
in the anniversary update of Windows 10 Microsoft introduced an Arabic mobile voice. This is the first free Arabic tts. Fixing this issue will bring NVDA to many Arab users who can't afford to buy a commercial tts and will give many others a legal voice to use. what would this take to be committed?
Likewise, would be great to use the new Dutch voice.
@michaelDCurran It looks like this is already in progress. I'm going to set this to priority 2 to finish if off.
I'm working on a completely new driver for this, as the existing approach had some limitations (such as not being able to access boosted rates fully). I'll self-assign this.
The Windows 10 Creators update has brought another wave of mobile languages and voices. Here's the full list: https://support.microsoft.com/en-gb/help/22797/windows-10-narrator-tts-voices among them there's my native one. As far as I know, this is the only free, high quality voice for it. Couldn't wait for that driver, too bad a feature specific donation doesn't exist... It seems using the SAPI mobile voice with the registry hack introduces some lag. I tried to use it from C#, the microsoft recommended way, but it still has that lag. the only app I've found not to have that latency is... Narrator. I hope NVDA will be able to do whatever Narrator's doing to obtain the same speed.
@jcsteh: It seems that the Windows speech settings in the settings app influence the speech rate range of NVDA.
Str:
You will see that, when one core is selected in NVDA, changing the speech rate in the Windows settings app allows you to set the rate much faster.
I guess that makes sense. With the OneCore speech API, we do not have a way of setting absolute base values; we can only make relative adjustments. So, the base values are taken from the Windows speech settings. Unfortunately, while Narrator has access to a private API to set absolute base rate and pitch, this API is not public, and even if we found a way to access it, this puts us in dubious legal territory. We've made these concerns very clear to Microsoft and are hoping for a resolution in a future Windows update. For now, this is the best we can do.
Also, if you do Derek, and then derek, the capital letters are not pitch adjusted.
On Fri, May 5, 2017 at 1:10 AM, James Teh notifications@github.com wrote:
I guess that makes sense. With the OneCore speech API, we do not have a way of setting absolute base values; we can only make relative adjustments. So, the base values are taken from the Windows speech settings. Unfortunately, while Narrator has access to a private API to set absolute base rate and pitch, this API is not public, and even if we found a way to access it, this puts us in dubious legal territory. We've made these concerns very clear to Microsoft and are hoping for a resolution in a future Windows update. For now, this is the best we can do.
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/nvaccess/nvda/issues/6159#issuecomment-299397549, or mute the thread https://github.com/notifications/unsubscribe-auth/AFGivSIrh6InOPUgILutzkyWFz9WkTMXks5r2stvgaJpZM4JIR_w .
--
Derek Riemer: Improving the world one byte at a time!
Personal website http://derekriemer.com
I've also noticed that at the moment, pressing the cancel button in the voice settings dialog does not revert speech settings back to what they were previously.
On 5/5/2017 3:10 AM, James Teh wrote:
I guess that makes sense. With the OneCore speech API, we do not have a way of setting absolute base values; we can only make relative adjustments. So, the base values are taken from the Windows speech settings. Unfortunately, while Narrator has access to a private API to set absolute base rate and pitch, this API is not public, and even if we found a way to access it, this puts us in dubious legal territory. We've made these concerns very clear to Microsoft and are hoping for a resolution in a future Windows update. For now, this is the best we can do.
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/nvaccess/nvda/issues/6159#issuecomment-299397549, or mute the thread https://github.com/notifications/unsubscribe-auth/APHAYP5syuJ5UG72tc_e09HFAbO47aT4ks5r2stwgaJpZM4JIR_w.
With the latest Next snapshot, I’m seeing crashes with Core voices. I’m trying to track down more details with the log.
@PratikP1 commented on 5 May 2017, 11:20 pm AEST:
With the latest Next snapshot, I’m seeing crashes with Core voices. I’m trying to track down more details with the log.
A crash dump when this occurs would be most helpful. Both a crash dump and a debug log would be even better.
@derekriemer commented on 5 May 2017, 8:00 pm AEST:
Also, if you do Derek, and then derek, the capital letters are not pitch adjusted.
I don't know exactly what you mean here. If you mean moving character by character, I definitely hear a pitch change. However, due to the limited pitch range we can access, the difference is not as clear as one might like. Try changing the capital pitch change percentage to, say, 60 and then cursor between the lower case and upper case characters for the same letter; e.g. "Aa".
@Mohamed00 commented on 5 May 2017, 10:05 pm AEST:
I've also noticed that at the moment, pressing the cancel button in the voice settings dialog does not revert speech settings back to what they were previously.
I can't reproduce this. I:
As expected, the pitch reverted to its original value.
Yeah, that helps. It's just way different than espeak, and my tiny brain exploded with the small pitch changes.
On Wed, May 10, 2017 at 12:52 AM, James Teh notifications@github.com wrote:
@derekriemer https://github.com/derekriemer commented on 5 May 2017, 8:00 pm AEST https://github.com/nvaccess/nvda/issues/6159#issuecomment-299427111:
Also, if you do Derek, and then derek, the capital letters are not pitch adjusted.
I don't know exactly what you mean here. If you mean moving character by character, I definitely hear a pitch change. However, due to the limited pitch range we can access, the difference is not as clear as one might like. Try changing the capital pitch change percentage to, say, 60 and then cursor between the lower case and upper case characters for the same letter; e.g. "Aa".
@Mohamed00 https://github.com/Mohamed00 commented on 5 May 2017, 10:05 pm AEST https://github.com/nvaccess/nvda/issues/6159#issuecomment-299447599:
I've also noticed that at the moment, pressing the cancel button in the voice settings dialog does not revert speech settings back to what they were previously.
I can't reproduce this. I:
- Set the synthesizer to OneCore.
- Opened the Voice Settings dialog.
- Set the pitch to 100%.
- Pressed escape.
As expected, the pitch reverted to its original value.
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/nvaccess/nvda/issues/6159#issuecomment-300392169, or mute the thread https://github.com/notifications/unsubscribe-auth/AFGivVE3SU8R2QcFwHJlbfRenaqXrd7gks5r4V6dgaJpZM4JIR_w .
--
Derek Riemer: Improving the world one byte at a time!
Personal website http://derekriemer.com
I'm not exactly following this thread, but when I installed the latest update, it broke OneCore support by deleting the speech components I had downloaded previously. Redownloading those components fixed the problem.
On 5/10/17, Derek Riemer notifications@github.com wrote:
Yeah, that helps. It's just way different than espeak, and my tiny brain exploded with the small pitch changes.
On Wed, May 10, 2017 at 12:52 AM, James Teh notifications@github.com wrote:
@derekriemer https://github.com/derekriemer commented on 5 May 2017, 8:00 pm AEST https://github.com/nvaccess/nvda/issues/6159#issuecomment-299427111:
Also, if you do Derek, and then derek, the capital letters are not pitch adjusted.
I don't know exactly what you mean here. If you mean moving character by character, I definitely hear a pitch change. However, due to the limited pitch range we can access, the difference is not as clear as one might like. Try changing the capital pitch change percentage to, say, 60 and then cursor between the lower case and upper case characters for the same letter; e.g. "Aa".
@Mohamed00 https://github.com/Mohamed00 commented on 5 May 2017, 10:05 pm AEST https://github.com/nvaccess/nvda/issues/6159#issuecomment-299447599:
I've also noticed that at the moment, pressing the cancel button in the voice settings dialog does not revert speech settings back to what they were previously.
I can't reproduce this. I:
- Set the synthesizer to OneCore.
- Opened the Voice Settings dialog.
- Set the pitch to 100%.
- Pressed escape.
As expected, the pitch reverted to its original value.
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/nvaccess/nvda/issues/6159#issuecomment-300392169, or mute the thread https://github.com/notifications/unsubscribe-auth/AFGivVE3SU8R2QcFwHJlbfRenaqXrd7gks5r4V6dgaJpZM4JIR_w .
--
Derek Riemer: Improving the world one byte at a time!
- University of Colorado Boulder Department of computer science, 4th year undergraduate student.
- Accessibility enthusiast.
- Proud user of the NVDA screen reader.
- Open source enthusiast.
- Skier.
Personal website http://derekriemer.com
-- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/nvaccess/nvda/issues/6159#issuecomment-300521253
-- Signed: Dakotah Rickard
“A crash dump when this occurs would be most helpful. Both a crash dump and a debug log would be even better.”
I’m happy to do this. The problem is that NVDA does not recover by itself when this happens. I’ve had several crashes with the Core mobile voices. I’m leaving my log level to debug to see if I can get something.
Here's a log of One Core voice crashing but NVDA not getting any indication. In fact, the attached log shows that the synth is performing as it should. I waited for about 5 minutes between 07:32 and 07:37 before restarting. In that time, there was no voice. This behavior has happened several times. Every time I experience the crash, this is what I see. I'll continue to keep my log to debug level and see if I can get a minidump. nvda-old.txt
Could it be related to recent Windows Insider builds?
It’s certainly possible. Early days of new prerelease builds tend to be more unstable than later ones. I didn’t start testing One Core voices until 16182. Or there abouts. We can wait and see if these problems disappear as we get new builds. In the meantime, I’ll continue to log.
Okay. I don't think this is a crash, but we're not getting a callback we expect for some reason. Here's the relevant bit of the log:
IO - speech.speak (07:28:15.364): Speaking [IndexCommand(1), LangChangeCommand (u'en_US'), u'Remove from this list!!', u'\n\n', IndexCommand(2), u'On Thu, Sep 11, 2014 at 9:15 PM, Prof. '] DEBUG - synthDrivers.oneCore.SynthDriver._processQueue (07:28:15.365): Begin processing speech IO - speech.speak (07:28:15.464): Speaking [IndexCommand(3), LangChangeCommand (u'en_US'), u'Phillip Gillon <', u'link', u'politicsandmoneyinc@gmail.com', u'out of link', u'> wrote:', u'\n\n\n\n\n', u'\n\x07', u'\n\n\n\n\n\n\n', IndexCommand(4), u'Classes:', u'\x0b\x0b', u'Starting at, 6-7 (basic) to 7-8 (advanced)!'] IO - speech.speak (07:28:15.743): Speaking [LangChangeCommand (u'en_US'), u'\x0b', IndexCommand(5), u'link', u'http://www.politicsandmoneyinc.com/store/p8/Classes_%28On_Contracts%29...', IndexCommand(6), u'html ', u'out of link', u"We're talking about, the canadian constitutions, the united states constitutions, state fraud, federal criminal and civil liabilities, etc..", IndexCommand(7), u'\x0b\x0b', u'Please, come and join us and if not offer it too someone else and if you get 2 people in, you get in for FREE!! ', IndexCommand(8), u"The archive's are $5.00, as well..", IndexCommand(9), u'\x0b\x0b', u'Prof. '] IO - speech.speak (07:28:15.821): Speaking [IndexCommand(10), LangChangeCommand (u'en_US'), u'Phil', u'\x0b\x0b', u'For more information go too ', u'link', u'www.politicsandmoneyinc.com ', u'out of link', u"and click on the Store and look at the bottom for 'Classes (On Contracts)' and hopes, to see you there!"] DEBUG - synthDrivers.oneCore.SynthDriver._callback (07:28:15.872): Done pushing audio DEBUG - synthDrivers.oneCore.SynthDriver._processQueue (07:28:15.872): Begin processing speech DEBUG - synthDrivers.oneCore.SynthDriver.cancel (07:28:24.578): Cancelling IO - inputCore.InputManager.executeGesture (07:28:24.641): Input: kb(laptop):control+end
Either OneCore didn't fire the callback for some reason or my queuing logic is breaking. The question is which... and why.
Got it. The '\x07' breaks things. After that, the callback never fires.
Thank you for the clarification. Presumably, something similar happened between 07:32 and 07:37.
@PratikP1, I think I've fixed this now with the changes I incubated in 9b3f5a9. Please test and report. Thanks.
Thank you for the quick work. I’ll continue to test over the next few days and report back if I see any other problems. I actually like One Core mobile voices over Eloquence and Espeak.
I guess that makes sense. With the OneCore speech API, we do not have a way of setting absolute base values; we can only make relative adjustments. So, the base values are taken from the Windows speech settings.
Would it be an option to document this workaround in the user guide, so people will have access to the fastest rate possible? Or may be on the wiki?
I’ve reported this issue to MS’s speech group to see if these values can be controlled programmatically.
Is there perhaps a workaround, where if you for instance have a speech rate of 30 and then set it to lower by negative 999, it will default to the lowest available value? Then you could work from there. It's not a pretty option, but may be a possibility and it would be better for MS to fix things.
I’m happy to say that, after a few days of constantly using One Core Mobile voices following the crash fixes, I haven’t experienced a single crash or delay attributable to these voices.
@jcsteh I found a case where One Core voices seem to be generating errors. steps and log below. Tested in Win 10 Pro insider 16199. NVDA version next-14051,e102a7e0
STR:
NVDA generates frequent error tones. See log for results. nvda One Core Fundbox.TXT
That website seems to have invented a new language: "us" (as opposed to "en-US"). That's an invalid language identifier and it seems OneCore barfs on those. We're going to need to filter out invalid language codes.
Technical: I think we can do this with languageHandler.localeNameToWindowsLCID. If it returns 0 or 0x1000, it's invalid.
@PratikP1 commented on May 23, 2017, 12:48 AM GMT+10:
- Open the following URL in Chrome Canary or latest Firefox. http://www.fundbox.com
- Once the page is loaded, read the contents by pressing NVDA+a.
This should now be fixed in the latest next snapshot (next-14066,9f903895).
@jcsteh commented
This should now be fixed in the latest next snapshot (next-14066,9f903895). Thank you. verified in NVDA version next-14067,067d2d17
Here are some additional issues I've noticed.
@PratikP1 commented on 11 Jun 2017, 05:54 GMT+10:
- Setting One Core voices as default and copying setting to secure desktop does not carry over One Core Voices' speed and other settings.
Did you save your settings before copying to secure desktop? Arguably, we should do this automatically, but I don't think we do right now, which means settings you changed since your last save won't apply.
- There are some pronunciation issues that I don't notice when I use the same voice with Narrator. For instance, Names starting with Mc should be pronounced as Mik xxxx. But NVDA consistently pronounces MC before the second part of the name.
NVDA has a builtin dictionary rule to break up camel case words (e.g. CamelCase), since this is reasonably common. Unfortunately, this does break examples like McFail. It's a tricky problem. On one hand, we don't want to break things like McFail. On the other hand, that rule was added precisely because camel case words were causing users problems.
@jcsteh WROTE:
Did you save your settings before copying to secure desktop? Arguably, we should do this automatically, but I don't think we do right now, which means settings you changed since your last save won't apply. <
I did save the settings. I had Core One Voices running as default on the desktop for quite a bit before I applied the settings to secure desktop. I didn't want to rely on an unstable synthesizer on secure desktop because of its critical role.
NVDA has a builtin dictionary rule to break up camel case words (e.g. CamelCase), since this is reasonably common. Unfortunately, this does break examples like McFail. It's a tricky problem. On one hand, we don't want to break things like McFail. On the other hand, that rule was added precisely because camel case words were causing users problems. <
What confuses me about this is that synthesizers such as Espeak or Codefactory eloquence don't seem to be affected by this type of issue.
@PratikP1 commented on 12 Jun 2017, 09:19 GMT+10:
I did save the settings. I had Core One Voices running as default on the desktop for quite a bit before I applied the settings to secure desktop.
What settings were lost? Did you lose the voice or just rate and pitch?
Note that rate is affected by the rate you set in system speech settings, which obviously can't be set for secure screens. There's nothing we can do about this right now, I'm afraid. Microsoft are working on exposing API to make this better.
What confuses me about this [camel case rule] is that synthesizers such as Espeak or Codefactory eloquence don't seem to be affected by this type of issue.
eSpeak seems to pronounce "Mc Fail" (with a space) so it sounds the same as "McFail" (no space). I'm guessing Eloquence does the same.
@jcsteh wrote:
What settings were lost? Did you lose the voice or just rate and pitch? Note that rate is affected by the rate you set in system speech settings, which obviously can't be set for secure screens. There's nothing we can do about this right now, I'm afraid. Microsoft are working on exposing API to make this better.
I lost the speed and pitch settings. The voice is kept. A Microsoft team member is following up with feedback I provided to them regarding the exposure of these settings via API.
I'm not sure whether this is an NVDA issue but I doubt it. Just for reference, it appears that Win 10 build 16226 in combination with NVDA version next-14129,104d2ff9 changes the voice name, changing the voice dictionary. I had a large dictionary built up with a particular One Core voice until now. With the latest update, The dictionary no longer refers to the One Core voice as mobile. "oneCore-Microsoft Zira Mobile.dic" is no longer active with the Zira voice. Rather "oneCore-Microsoft Zira.dic" is now active. Anyone testing these voices in NVDA builds will need to rename the old mobile dictionary to the newer name if they don't wish to lose dictionary changes for a particular One Core Voice.
To do this, use the following steps:
I find an official list of windows core voices. I think it would be very beneficial that those are referenced in the user manual or wiki? https://support.microsoft.com/en-gb/help/22797/windows-10-narrator-tts-voices
Windows 10 has mobile voices which can formally be accessed only from windows store apps. However, it is possible to copy the registry keys for these new voices from "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens" to "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens". You have to do this in c:\windows\syswow64\regedit.exe in order for NVDA not to throw a com error upon selection.
Of course, this is the ugly way. However, it might be possible to create a new synth driver which gets the voice tokens from the particular registry location.