https://bugs.winehq.org/show_bug.cgi?id=56275
Bug ID: 56275 Summary: MS Speech API not working after 8.21 Product: Wine Version: 8.21 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: kdcadet@gmail.com Distribution: ---
Created attachment 75994 --> https://bugs.winehq.org/attachment.cgi?id=75994 text-to-speech script and tracebacks
I use wine to run windows speech api through balcon, balabolka commandline interface.
This worked until wine-staging-8.21
Once upgraded to >= 8.21 this is broken. It is broken on both Gentoo and Fedora for me.
It still works for both wine-staging 8.0 and wine-vanilla 8.0.
My script and traceback are attached.
The script takes stdin and pipes it to balcon via wine. I typically test it with `date | tts`
The wine prefix I use: https://drive.google.com/file/d/19bfCvcOkWITjf5fw9PTXrnogtm3HpvLA/view?usp=s... Components: balcon: balabolka command line
Available from the microsoft download center: Microsoft speech platform MS Speech Zira pro voice
https://bugs.winehq.org/show_bug.cgi?id=56275
Eric Pouech eric.pouech@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |eric.pouech@gmail.com
--- Comment #1 from Eric Pouech eric.pouech@gmail.com --- just a quick question: does replacing the -i option of balcon.exe with a -t "$text" work?
https://bugs.winehq.org/show_bug.cgi?id=56275
--- Comment #2 from kdcadet@gmail.com --- No, changing the last line of the script to: wine 'C:\balcon\balcon.exe' -t "${text}" -n 'Microsoft Server Speech Text to Speech Voice (en-US, ZiraPro)' -s $tts_speed #&> /dev/null
results in the following error, I believe the same one as before. Error: OLE error 80040154
~ ➜ 0130:fixme:ole:CoRegisterSurrogate 0060FE74 stub 0130:err:ole:apartment_getclassobject DllGetClassObject returned error 0x80040111 for dll L"C:\Program Files\Common Files\Microsoft Shared\Speech\TTS\v11.0\msttsengine.dll" 0130:err:ole:com_get_class_object no class object {a12bdfa1-c3a1-48ea-8e3f-27945e16cf7e} could be created for context 0x1 0130:err:dllhost:wWinMain Can't create instance of {a12bdfa1-c3a1-48ea-8e3f-27945e16cf7e} 0140:fixme:ole:CoRegisterSurrogate 0060FE74 stub 0140:err:ole:apartment_getclassobject DllGetClassObject returned error 0x80040111 for dll L"C:\Program Files\Common Files\Microsoft Shared\Speech\TTS\v11.0\msttsengine.dll" 0140:err:ole:com_get_class_object no class object {a12bdfa1-c3a1-48ea-8e3f-27945e16cf7e} could be created for context 0x1 0140:err:dllhost:wWinMain Can't create instance of {a12bdfa1-c3a1-48ea-8e3f-27945e16cf7e}
Also, I'm not sure, but using the -t $text version could cause a nightmare with having to make sure characters are properly escaped, which is why I have it set to read from stdin with -i.
https://bugs.winehq.org/show_bug.cgi?id=56275
Dave Akers dave@dazoe.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |dave@dazoe.net
https://bugs.winehq.org/show_bug.cgi?id=56275
--- Comment #3 from Dave Akers dave@dazoe.net --- I have also run into this problem on Archlinux Working version: 8.19 First non-working: 8.20
https://bugs.winehq.org/show_bug.cgi?id=56275
--- Comment #4 from kdcadet@gmail.com --- I did a git bisect to track down the first bad commit. The output was:
``` ad8f354f623a25a941550df04f3fd4fb040ba0c9 is the first bad commit commit ad8f354f623a25a941550df04f3fd4fb040ba0c9 Author: Shaun Ren sren@codeweavers.com Date: Tue Oct 31 22:47:10 2023 -0400
msttsengine: Add stub dll.
configure | 2 + configure.ac | 1 + dlls/msttsengine/Makefile.in | 7 ++ dlls/msttsengine/main.c | 123 ++++++++++++++++++++++++++++++++++++ dlls/msttsengine/msttsengine.spec | 4 ++ dlls/msttsengine/tts.c | 31 +++++++++ dlls/msttsengine/ttseng_classes.idl | 32 ++++++++++ dlls/msttsengine/ttseng_private.h | 31 +++++++++ loader/wine.inf.in | 2 + 9 files changed, 233 insertions(+) create mode 100644 dlls/msttsengine/Makefile.in create mode 100644 dlls/msttsengine/main.c create mode 100644 dlls/msttsengine/msttsengine.spec create mode 100644 dlls/msttsengine/tts.c create mode 100644 dlls/msttsengine/ttseng_classes.idl create mode 100644 dlls/msttsengine/ttseng_private.h
```
https://bugs.winehq.org/show_bug.cgi?id=56275
--- Comment #5 from kdcadet@gmail.com --- I did a git revert of that commit from tags/wine-9.4 and my TTS test passed. When reverting the commit, the only non-automatic revert was the deletion of dlls/msttsengine/tts.c, which I solved by simply doing git add dlls/msttsengine/tts.c then git revert --continue.
https://bugs.winehq.org/show_bug.cgi?id=56275
Louis Lenders xerox.xerox2000x@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |xerox.xerox2000x@gmail.com
--- Comment #6 from Louis Lenders xerox.xerox2000x@gmail.com --- (In reply to kdcadet from comment #5)
I did a git revert of that commit from tags/wine-9.4 and my TTS test passed. When reverting the commit, the only non-automatic revert was the deletion of dlls/msttsengine/tts.c, which I solved by simply doing git add dlls/msttsengine/tts.c then git revert --continue.
I'm not 100% sure but I think you could "fix" this by setting msttengine.dll to native in winecfg library tab. AFAIK MS Speech platform + MS Speech Zira comes with it's own msttsengine.dll so it worked before wine-8.21. After adding a the wine msttsegine.dll this one is likely be used and is not mature enough.
Could you check if the above is correct? ('WINEDEBUG=+loaddll wine balabolka,exe' will give you info whether native or builtin is used)
https://bugs.winehq.org/show_bug.cgi?id=56275
--- Comment #7 from kdcadet@gmail.com --- I tried your fix using winecfg with no success.
https://bugs.winehq.org/show_bug.cgi?id=56275
--- Comment #8 from Dave Akers dave@dazoe.net --- I had success with setting msttsengine.dll to native using winecfg