Hello @milevase93, we're using one issue report per unofficially supported game title, so I've gone ahead and transferred this issue report to https://github.com/ValveSoftware/Proton/issues/8760#issuecomment-6478101023.
proton 11.0x1 2026-10PROTON_VOICE_FILESx1 2026-10WINE_DEFAULT_DEBUG_CHANNELx1 2026-10WINE_UNIX_CALLx1 2026-10protontts.dllx1 2026-100xc31adbaex1 2026-10
Upstream reporting context
Originally reported at https://github.com/CachyOS/proton-cachyos/issues/333. A CachyOS maintainer recommended reporting upstream: https://github.com/CachyOS/proton-cachyos/issues/333#issuecomment-6476908103.
Testing scope: Runtime reproduction and playback validation were performed on Proton-CachyOS, not on a stock Valve Proton release. Upstream involvement is inferred from the same missing
SPVA_Bookmarkhandling in ValveSoftware/wine'sproton_11.0source. A stock-Proton runtime reproduction remains unverified. This report concerns the engine's bookmark handling and includes a standalone SAPI reproduction, rather than only a WoW compatibility report.Problem
The Proton TTS engine speaks SAPI bookmark names as ordinary words. In World of Warcraft Retail, every TTS announcement is consequently surrounded by spoken "start" and "end".
This is reproducible outside WoW with a short SAPI script. It appears to be an upstream protontts issue rather than a WoW addon or audio configuration problem.
Environment
Native SAPI is relevant: Wine's builtin SAPI previously failed at ISpVoice::SetInterest, before synthesis. The issue reported here is the separate bookmark-synthesis problem after working SAPI is configured.
Minimal reproduction
Run the following .vbs with the 64-bit cscript.exe inside the configured prefix:
Flags 16 and 8 are SPF_IS_NOT_XML and SPF_IS_XML, respectively.
Expected: both calls speak only the sentence. Bookmarks produce SAPI events, not spoken audio.
Actual: the second call also speaks "start" and "end".
Cause
In dlls/protontts/tts.c, ttsengine_Speak walks SPVTEXTFRAG and sends pTextStart/ulTextLen to Piper without inspecting State.eAction. SPVA_Bookmark fragments therefore enter synthesis.
Microsoft's contract specifies that SPVA_Bookmark represents bookmark contents, which should produce SPEI_TTS_BOOKMARK:
https://learn.microsoft.com/en-us/previous-versions/windows/desktop/ms717279(v=vs.85)
Source:
https://github.com/ValveSoftware/wine/blob/proton_11.0/dlls/protontts/tts.c
Locally tested candidate fix
A separate runner was created with only its 64-bit protontts.dll rebuilt. The existing Unix TTS backend was retained. The fix:
The rebuilt engine used proton_11.0 source commit e60892cc2398b0a83c332a2078c7b85e47bdb42b. This is the source used for the candidate rebuild, not a claim that the original runner was built from that exact commit.
Compilation and source checks passed. The affected user confirmed that the standalone plain/bookmarked speech test and WoW TTS work with the patched runner, without the spoken markers. This is local playback validation; broader regression testing and detailed event-consumer testing are still needed.
An AI coding assistant prepared the candidate patch and this report; the affected user performed the desktop playback tests.
Candidate patch