-
-
Notifications
You must be signed in to change notification settings - Fork 631
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
NVDA 2019.3Beta1 crashes when setting synthesizer to eSpeak NG if path name contains accented character #10607
Comments
Hi, don’t tell me this is a side effect of text handling differences with Python 3 unless this is Espeak NG specific (one way to test is using an alpha release in August with the same setup). Thanks.
|
Ok I tried Alpha 19128 from early November and it crashed the same way. I tried the oldest alpha on the snapshots page currently 18581, from Sept 10 and it crashed. So back to there at least it crashes, and it works back in 2019.2.1 |
Hi, this suggests it might be a Python 3/path issue, given that those earlier alphas come with older Espeak NG releases. Thanks for clarifying this.
|
I think this might have to do with us using the wrong encoding for the path. |
No, no crash dump. |
I can reproduce this bug in NVDA 2019.2.1 also. |
I initially created it in a 201921é folder off downloads, and I just tried creating a portable version in c:\tést2 using NVDA 2019.2.1 both times, and I can successfully change to eSpeak NG and use that. Ok, in my log when it loads eSpeak it has: INFO - synthDrivers.espeak.SynthDriver.init (22:30:17.551): I was about to say if it's using relative paths to find eSpeak it might not notice the base directory, but then the last line is looking in C:\t\xe9st2 rather than C:\tést2 - is it eSpeak / NVDA or Windows which is converting that name - everywhere I look at it I see C:\tést2 I'm still using Windows 10 Version 1903, build 18362.388 because mine refuses to updated to 1909 (for... reasons) Not sure if that makes a difference here? |
@Qchristensen: Could you please test the following try build? Again,
unpack as portable to a directory with accented characters, and let me
know if you can switch to eSpeak?
This try build is based on 2019.3beta1, but rather than using
os.fsencode to encode the path to eSpeak, it uses path.encode('mbcs')
which I think is more in line with what NVDA did in 2019.2.1 and below.
On my system at least, these two calls seem to return different results.
Also, could you please visit Control Panel -> Region -> Administrative
tab -> Change system Locale... button:
* What is your Current System Locale combo box set to? mine is English -
United States.
* Is your Beta: Use unicode utf8 for world wide language support, ticked
or unticked? Mine is unticked.
|
For me on Polish Windows 7 x64 both NVDA 2019.2.1 and latest Alpha crashes if placed on a folder with accented characters in its name. The try build created by @michaelDCurran also crashes. What is suspicious however is the fact that @Qchristensen log states:
Whereas my log on NVDA 2019.2.1 contains":
|
On my machine NVDA 2019.1.1 is able to start with eSpeak when placed in a folder containing accented characters, whereas 2019.2 and above are not. |
@Qchristensen apologies. I forgot to actually paste the try build link! |
Ah I wondered where the link was, I thought I was having a senior moment :) Ok, setup a portable copy from your test build in c:\tést2 (I deleted the whole directory from my last test there). NVDA still crashes. The log looks similar to previous: IO - speech.speak (13:48:08.588) - MainThread (14020): My system locale is also set to English (United States) |
@Qchristensen: Can you double check that your NVDA 2019.2.1 is really
2019.2.1? As another person stated, the eSpeak version in your log is
wrong. Yours says 1.49.1dev, but 2019.2.1 has 1.49.3dev.
And if this is true, then this crash is a regression introduced in
eSpeak between 1.49.1dev and 1.49.3dev, and therefore not a regression
in NVDA after 2019.2.1.
|
Ok, so a bit embarrassing, but maybe some unintentional investigation: I was, as @michaelDCurran suspected, not running 2019.2.1, somehow it was 2018.2.1, so that's a bit embarrassing... but as noted, it was definitely crashing, so maybe a regression after all? Trying 2019.2.1 and it too crashes. Trying 2019.1.1 as a portable version in folder c:\tést201911\ - and I can switch to eSpeak and it works just fine. Sorry for the confusion! |
I am afraid it is at least partially Python 3 regression after all.
|
According to #10607 (comment) by @michaelDCurran this is likely caused by an error in espeak. Given that, and due to the imminent release of 2019.3, we only have two options:
Hopefully most users (who run from an installed copy) aren't affected by this, others who run from a portable copy should have control over the file path and unfortunately will have to avoid accented characters for now. We won't aim to fix this for 2019.3. |
Hi Reef,
Sorry, but espeak project is no more a serious project…
The last version of espeak if you want to ask me was espeak 1.48.15.
When the new team of developers started to develop espeak NG, the quality of the synthesizer started to get worse, even they don’t care about windows, and they are linux minded people.
We really don’t know, which the next bug will be?
They even started to add the languages with the incomplete language / linguistica data. The example is bashkir.
Chinese in espeak is broken, and so on.
And… reporting bugs to them make no sense.
|
Investigating further, eSpeak actually has a flag to disable the exit call: espeakINITIALIZE_DONT_EXIT=0x8000 which can be passed to the options argument of espeak_initialize. |
…rors such as the espeak path being invalid.
@zstanecic There were several issues (crashes) after introducing emoji support due to the complexity of the espeak internals and making any changes/improvements to the codebase. Those have been fixed, and a test suite has been added to detect issues like this and regressions in the voices going forward. I don't believe the latest espeak builds any more due to it being out of sync with wxWidgets, which is required by that version to build the voices. -- I put a lot of effort into making the voices build as part of the project without needing to use/run espeakedit, in addition to cleaning up the original codebase. I'm both a Windows and Linux user. I created the modern Visual Studio project and WiX-based installer for espeak-ng so it did not need to be build with Visual Studio 6! If you are referring to the lack of a SAPI voice, the espeak project included the sapi files as part of the project (which are both older and have potential licensing/distribution issues), and required the ATL sources. I implemented an experimental version, but I haven't had the time to address the issues -- audio clipping at the end, and voice selection. The language issue is a challenge, as we have requests for new languages, but don't have native speakers that are willing to work on them. |
Steps to reproduce:
Actual behavior:
At the last step, NVDA immediately stops running (visually, the icon stays in the system tray until you mouse over it, that's simply an artifact of Windows not cleaning up properly - NVDA is not running by this point).
The very last entry in my NVDA log at Debug level is:
IO - inputCore.InputManager.executeGesture (13:03:39.817) - winInputHook (17464):
Input: kb(desktop):enter
(Registering the ENTER key being pressed to activate the OK button, set the synthesizer and close the synthesizer dialog.)
Expected behavior:
Synthesizer should switch to eSpeak NG and NVDA should continue working normally.
System configuration
NVDA installed/portable/running from source:
Portable, and setup in a folder which includes an accented character such as é, ç, ş, ğ
NVDA version:
2019.3 beta 1 (which uses eSpeak NG 1.51-dev, commit ca65812ac6019926f2fbd7f12c92d7edd3701e0c).
Windows version:
Windows 10 Version:
18362.388
Name and version of other software in use when reproducing the issue:
Other information about your system:
Other questions
Does the issue still occur after restarting your PC?
Yes
Have you tried any other versions of NVDA? If so, please report their behaviors.
Yes, 2019.2.1 works fine in this situation.
Issue also filed with eSpeak NG as their issue 692: espeak-ng/espeak-ng#692
The text was updated successfully, but these errors were encountered: