We probably just need version 3 of this assembly forwarded to version 4. But whether that actually helps will depend on the status of speech synthesis in Proton generally, and I'm not sure about that.
Committed a fix to Wine Mono for the library loading error: https://gitlab.winehq.org/mono/mono/-/commit/95d865b7bef9e90b315efb37488c3c87362dd94e
But it's not enough. Now we run into sapi.dll stubs.
I also recently attempted this on Proton Experiemental - bleeding edge, but it didn't occur to me that it was even remotely possible for the voice recognition to ever be in a working state.
Thank you for reporting, and thanks for the work on this!
With the new Proton Experimental speech synthesis patch I was thinking that maybe the voice output here would start working, but even after installing the new "Proton Voice Files" nothing changed unfortunately :(
I'm talking about the Proton Experimental change mentioned here: https://github.com/ValveSoftware/Proton/wiki/Changelog
With the new update to Proton Experimental (2025-03-20) it looks like there is a different error message now. It seems to happen for "Test recog" and "Test speech" the same.
1055.327:0360:0364:trace:mscoree:wine_mono_assembly_preload_hook_v2_fn "System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
1055.330:0360:0364:trace:loaddll:build_module Loaded L"Z:\\home\\joni\\.local\\share\\Steam\\steamapps\\common\\Proton - Experimental\\files\\share\\wine\\mono\\wine-mono-9.3.1\\lib\\mono\\gac\\System\\4.0.0.0__b77a5c561934e089\\System.dll" at 03E10000: native
1055.330:0360:0364:trace:mscoree:_CorDllMain (03E10000, 1, 00000000)
1055.330:0360:0364:trace:mscoree:wine_mono_assembly_preload_hook_v2_fn found in Mono GAC
1055.341:0360:0364:trace:loaddll:build_module Loaded L"C:\\windows\\system32\\Speech\\Common\\sapi.dll" at 7A120000: builtin
1055.353:0360:0364:trace:mscoree:wine_mono_assembly_preload_hook_v2_fn "System.Speech.resources, Version=4.0.0.0, Culture=en-US, PublicKeyToken=31bf3856ad364e35"
1055.355:0360:0364:trace:seh:NtGetContextThread 0xfffffffe: eax=000000e3 ebx=00000001 ecx=00000000 edx=00000000 esi=00000001 edi=0070f140
1055.355:0360:0364:trace:seh:NtGetContextThread 0xfffffffe: ebp=0070f250 esp=0070f110 eip=7bddc97c cs=0023 ss=002b flags=00000246
1055.355:0360:0364:trace:seh:NtGetContextThread 0xfffffffe: ds=002b es=002b fs=0063 gs=006b
[00000364:] EXCEPTION handling: System.IO.FileNotFoundException: Could not load file or assembly 'Z:\home\joni\.local\share\Steam\steamapps\common\Proton - Experimental\files\share\wine\mono\wine-mono-9.3.1\lib\mono\gac\System.Speech\4.0.0.0__31bf3856ad364e35\en-US\System.Speech.resources.dll' or one of its dependencies.
1055.355:0360:0364:trace:mscoree:wine_mono_assembly_preload_hook_v2_fn "System.Speech.resources, Version=4.0.0.0, Culture=en, PublicKeyToken=31bf3856ad364e35"
[00000364:] EXCEPTION handling: System.IO.FileNotFoundException: Could not load file or assembly 'Z:\home\joni\.local\share\Steam\steamapps\common\Proton - Experimental\files\share\wine\mono\wine-mono-9.3.1\lib\mono\gac\System.Speech\4.0.0.0__31bf3856ad364e35\en\System.Speech.resources.dll' or one of its dependencies.
[00000364:] EXCEPTION handling: System.PlatformNotSupportedException: No voice installed on the system or none available with the current security setting.
Unhandled Exception:
System.PlatformNotSupportedException: No voice installed on the system or none available with the current security setting.^M
at System.Speech.Internal.Synthesis.VoiceSynthesis..ctor (System.WeakReference speechSynthesizer) [0x001a8] in <6c49a19e934743a9a0f41f069b8823d4>:0 ^M
at System.Speech.Synthesis.SpeechSynthesizer.get_VoiceSynthesizer () [0x00037] in <6c49a19e934743a9a0f41f069b8823d4>:0 ^M
at System.Speech.Synthesis.SpeechSynthesizer.GetInstalledVoices () [0x00001] in <6c49a19e934743a9a0f41f069b8823d4>:0 ^M
at towerspeakbridge.Speak.DumpVoices () [0x00014] in <ec70647af75f413c94da787937dbc86e>:0 ^M
at towerspeakbridge.Speak..ctor () [0x00006] in <ec70647af75f413c94da787937dbc86e>:0 ^M
at towerspeakbridge.Program.Main (System.String[] args) [0x000dc] in <ec70647af75f413c94da787937dbc86e>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.PlatformNotSupportedException: No voice installed on the system or none available with the current security setting.^M
at System.Speech.Internal.Synthesis.VoiceSynthesis..ctor (System.WeakReference speechSynthesizer) [0x001a8] in <6c49a19e934743a9a0f41f069b8823d4>:0 ^M
at System.Speech.Synthesis.SpeechSynthesizer.get_VoiceSynthesizer () [0x00037] in <6c49a19e934743a9a0f41f069b8823d4>:0 ^M
at System.Speech.Synthesis.SpeechSynthesizer.GetInstalledVoices () [0x00001] in <6c49a19e934743a9a0f41f069b8823d4>:0 ^M
at towerspeakbridge.Speak.DumpVoices () [0x00014] in <ec70647af75f413c94da787937dbc86e>:0 ^M
at towerspeakbridge.Speak..ctor () [0x00006] in <ec70647af75f413c94da787937dbc86e>:0 ^M
1055.365:0360:0364:trace:mscoree:CorExitProcess (1)
1055.365:0360:0364:trace:mscoree:CLRMetaHost_ExitProcess 1
1055.367:0360:0364:trace:mscoree:_CorDllMain (03E10000, 0, 00000001)
1055.367:0360:0364:trace:mscoree:_CorDllMain (03DD0000, 0, 00000001)
1055.367:0360:0364:trace:mscoree:_CorDllMain (03DA0000, 0, 00000001)
1055.367:0360:0364:trace:mscoree:_CorDllMain (10000000, 0, 00000001)
1055.367:0360:0364:trace:mscoree:_CorDllMain (03540000, 0, 00000001)
1055.367:0360:0364:trace:mscoree:DllMain (7BA40000, 0, 00000001)
New log attached:
steam-588190.log
Do I need to install a "voice pack" or something? I already have "Proton Voice Files" installed.
proton experimentalx2 2025-03proton 9.0-3x1 2024-09sapi.dllx2 2025-03resources.dllx1 2025-03system.dllx1 2025-03
Compatibility Report
System Information
I confirm:
Proton Log:
steam-588190.log
An important error with the speech recognition seems to be:
Symptoms
Speech Recognition does not work.
In this game you can use your voice to give commands to airplanes, similar to real life.
Unfortunately this does not work on Linux as it seems to use some windows components.
Also the pilots in the planes should talk back to you in synthesized/artificial voices, but this also does not work and seems to have the same root cause as the first issue.
The rest of the game works without issue.
Reproduction
To test the voice commands I would recommend to start a round and try inputting voice commands by pressing the "shift" key - After the "ding" sound you should be able to say any command into a connected microphone and it should be recognized and shown up in the top.
Similar issue in the sequel: #8115