nvaccess / nvda

NVDA, the free and open source Screen Reader for Microsoft Windows
Other
2.08k stars 625 forks source link

Provide support for new Windows 10 One Core voices #6159

Closed LeonarddeR closed 7 years ago

LeonarddeR commented 8 years ago

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.

LeonarddeR commented 8 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>
josephsl commented 8 years ago

Hi,

In next.13417, I get the following traceback.

STR:

  1. Select SAPI Mobile.
  2. Use Control+NvDA+up arrow to select different voices until you arrive at the last one.
  3. Press the command once more.

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.

michaelDCurran commented 8 years ago

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:

  1. Select SAPI Mobile.
  2. Use Control+NvDA+up arrow to select different voices until you arrive at the last one.
  3. 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

LeonarddeR commented 8 years ago

wouldn't it be possible to check the existence of de voice in c:\windows\system32\speech_onecore?

josephsl commented 8 years ago

Hi,

Workaround confirmed.

For the record, the workaround is:

  1. Press Windows+I to open Settings.
  2. Select Time & language/Region & language.
  3. Select the language you need to download the speech pack for, then select options.
  4. Select one of the download buttons (one of them is speech pack, and you need to use object navigation to confirm).

Issue at hand: I was using Korean, hence that explains why I got COM error. Thanks.

michaelDCurran commented 8 years ago

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

MichelSuch commented 8 years ago

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.

michaelDCurran commented 8 years ago

Thanks. Fixed in commit 4810483a989a8d4d3e57c1481ba63e5f8053b1b9

LeonarddeR commented 8 years ago

I think it is possible to fix the problem reported by @josephsl.

  1. In HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens, there is an item "MSTTS_V110_enAU_CatherineM" in my case
  2. 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
  3. 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.

derekriemer commented 8 years ago

The speech rate isn't preserved when using synth settings ring.

  1. Select microsoft x voice.
  2. press nvda+ctrl+dn, or up, when on voice. Observe your speech rate setting isn't preserved.

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

LeonarddeR commented 8 years ago

Confirmed, but this issue also applies to Sapi5. I was able to reproduce this in master, so this seems a separate issue.

michaelDCurran commented 8 years ago

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

mohdshara commented 8 years ago

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?

dkager commented 7 years ago

Likewise, would be great to use the new Dutch voice.

feerrenrut commented 7 years ago

@michaelDCurran It looks like this is already in progress. I'm going to set this to priority 2 to finish if off.

jcsteh commented 7 years ago

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.

vortex1024 commented 7 years ago

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.

LeonarddeR commented 7 years ago

@jcsteh: It seems that the Windows speech settings in the settings app influence the speech rate range of NVDA.

Str:

  1. Go to Windows 10 settings > time and language > speech
  2. Change the speech rate

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.

jcsteh commented 7 years ago

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.

derekriemer commented 7 years ago

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

Mohamed00 commented 7 years ago

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.

PratikP1 commented 7 years ago

With the latest Next snapshot, I’m seeing crashes with Core voices. I’m trying to track down more details with the log.

jcsteh commented 7 years ago

@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.

jcsteh commented 7 years ago

@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:

  1. Set the synthesizer to OneCore.
  2. Opened the Voice Settings dialog.
  3. Set the pitch to 100%.
  4. Pressed escape.

As expected, the pitch reverted to its original value.

derekriemer commented 7 years ago

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:

  1. Set the synthesizer to OneCore.
  2. Opened the Voice Settings dialog.
  3. Set the pitch to 100%.
  4. 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

dsrickard commented 7 years ago

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:

  1. Set the synthesizer to OneCore.
  2. Opened the Voice Settings dialog.
  3. Set the pitch to 100%.
  4. 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

PratikP1 commented 7 years ago

“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.

PratikP1 commented 7 years ago

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

dkager commented 7 years ago

Could it be related to recent Windows Insider builds?

PratikP1 commented 7 years ago

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.

jcsteh commented 7 years ago

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
  1. An utterance gets pushed and the driver starts speaking it.
  2. More utterances get pushed and the driver queues them because it's still speaking the first utterance.
  3. The first utterance finishes ("Done pushing audio").
  4. The driver speaks the next utterance ("Begin processing speech").
  5. A key is pressed, so speech is cancelled.
  6. However, for some reason, the callback for the second utterance never fired. Even if cancelled, it should have logged "Done pushing audio" or "Cancelled, stopped pushing audio".

Either OneCore didn't fire the callback for some reason or my queuing logic is breaking. The question is which... and why.

jcsteh commented 7 years ago

Got it. The '\x07' breaks things. After that, the callback never fires.

PratikP1 commented 7 years ago

Thank you for the clarification. Presumably, something similar happened between 07:32 and 07:37.

jcsteh commented 7 years ago

@PratikP1, I think I've fixed this now with the changes I incubated in 9b3f5a9. Please test and report. Thanks.

PratikP1 commented 7 years ago

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.

LeonarddeR commented 7 years ago

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?

PratikP1 commented 7 years ago

I’ve reported this issue to MS’s speech group to see if these values can be controlled programmatically.

jage9 commented 7 years ago

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.

PratikP1 commented 7 years ago

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.

PratikP1 commented 7 years ago

@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:

  1. Open the following URL in Chrome Canary or latest Firefox. http://www.fundbox.com
  2. Once the page is loaded, read the contents by pressing NVDA+a.
  3. Follow steps 1 and 2 in Edge.

NVDA generates frequent error tones. See log for results. nvda One Core Fundbox.TXT

jcsteh commented 7 years ago

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.

jcsteh commented 7 years ago

@PratikP1 commented on May 23, 2017, 12:48 AM GMT+10:

  1. Open the following URL in Chrome Canary or latest Firefox. http://www.fundbox.com
  2. 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).

PratikP1 commented 7 years ago

@jcsteh commented

This should now be fixed in the latest next snapshot (next-14066,9f903895). Thank you. verified in NVDA version next-14067,067d2d17

PratikP1 commented 7 years ago

Here are some additional issues I've noticed.

jcsteh commented 7 years ago

@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.

PratikP1 commented 7 years ago

@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.

jcsteh commented 7 years ago

@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.

PratikP1 commented 7 years ago

@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.

PratikP1 commented 7 years ago

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:

  1. Press Windows logo/start.
  2. Explore to the NVDA program folder.
  3. Inside the folder, go to the "explore NVDA User Configuration" item and press enter.
  4. Navigate to the "speech dics" folder and press enter.
  5. Navigate to the particular OneCore Mobile Voice dictionary file.
  6. Press f2 (or choose rename from the context menu.)
  7. Remove the "mobile" portion of the file name including the preceding space character and press enter. Note that you will have to either delete or rename a new file of the same name if you've created one before renaming the mobile voice dictionary file.
mohdshara commented 7 years ago

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