Skip to content
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

Unable to load SAPI5 in version 2012.2.1 #2629

Closed
nvaccessAuto opened this issue Aug 30, 2012 · 7 comments
Closed

Unable to load SAPI5 in version 2012.2.1 #2629

nvaccessAuto opened this issue Aug 30, 2012 · 7 comments

Comments

@nvaccessAuto
Copy link

Reported by bartperemans on 2012-08-30 10:21
Hi,

I have a problem when accessing my sapi5 windows voices with the new version 2012.2 of NVDA. When changing the eSpeak synthesizer to Microsoft Speech API version 5, the voices don’t work anymore. I get an errormessage: “The synthesizer sapi5 could not be loaded.”

In my previous version it did work without any problems. Please find attached the log files from version 2012.2.1 were it doesn’t work and version 2011.3 where it works.

Could you give me a workaround?

Regards,

@nvaccessAuto
Copy link
Author

Attachment 2011_3.txt added by bartperemans on 2012-08-30 10:22
Description:

@nvaccessAuto
Copy link
Author

Attachment 2012_2.txt added by bartperemans on 2012-08-30 10:22
Description:

@nvaccessAuto
Copy link
Author

Comment 1 by briang1 on 2012-08-30 17:08
I wonder could you perhaps set the logging level to debug and then upload the file for the failing sapi 5? Its a bit lacking in details at the moment.

One idea for you is to test a portable version which will have its own .ini file in case some corruption has caused the issue in the old .ini file.

@nvaccessAuto
Copy link
Author

Comment 2 by jteh on 2012-08-30 23:46
This is bizarre. There was a small change to the sapi5 driver, but it shouldn't have caused this (and doesn't on any other system I've seen).

The first step is to try the old sapi5 driver. I'm not sure how comfortable you are with copying files around, etc., but you need to copy this file into %appdata%\nvda\synthDrivers. Then restart NVDA 2012.2 and see if that works.

@nvaccessAuto
Copy link
Author

Comment 3 by bartperemans on 2012-08-31 09:01
I copied the file you mentioned, and now it works fine. I also downloaded some other files form the export site.

Revision main,4597: OK, works.
Revision main,4803: Not OK, doesn't work.
Revision main,5029: Not OK, doesn't work.

@nvaccessAuto
Copy link
Author

Comment 4 by jteh on 2013-03-15 02:34
This issue is also covered in this thread on nvda-dev.

We've finally managed to figure out what's going on here. These problematic engines use a token enumerator, so they generate their own ISpeechObjectToken objects. IEnumVARIANT (which is what is used when we iterate) returns IDispatch pointers, but !GetBestInterface doesn't work on the objects returned by these problematic enumerators, so we just get IDispatch, which doesn't work either. However, the Item method on the collection explicitly returns ISpeechObjectToken, which is why fetching by index works correctly. I'll commit a fix shortly with comments so we don't break this again.

@nvaccessAuto
Copy link
Author

Comment 5 by jteh on 2013-03-15 07:28
This should now be fixed in 4e389eb.
Changes:
Milestone changed from None to 2013.1
State: closed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant