uni-bremen-agst / SEE

Collaborative Software Visualization with SEE (Software Engineering Experience)
https://see.uni-bremen.de
MIT License
20 stars 4 forks source link

Espeak TTS does not work on Linux #792

Open tinxx opened 1 month ago

tinxx commented 1 month ago

The new help system makes use of espeak to read the help description.

However, on Linux espeak does not work and fail with the following log:

Could not start process: System.ComponentModel.Win32Exception (0x80004005): ApplicationName='espeak', CommandLine='-v "en-US+f4" -w "/tmp/University of Bremen and Axivion GmbH/SEE/rtvoice_97ce4575-8240-441c-9659-024b6e8ea72a.wav" -z  -m "Press Key W or S to move forwards or backwards."', CurrentDirectory='', Native error= Cannot find the specified file
  at System.Diagnostics.Process.StartWithCreateProcess (System.Diagnostics.ProcessStartInfo startInfo) [0x002f9] in <8e610fe3b48543c6942b64f6cad09e30>:0 
  at System.Diagnostics.Process.Start () [0x0003a] in <8e610fe3b48543c6942b64f6cad09e30>:0 
  at (wrapper remoting-invoke-with-check) System.Diagnostics.Process.Start()
  at Crosstales.RTVoice.Provider.MainVoiceProvider.startProcess (System.Diagnostics.Process process, System.Int32 timeout, System.Boolean eventOutputData, System.Boolean eventErrorData, System.Boolean redirectOutputData, System.Boolean redirectErrorData) [0x0005a] in /home/myuser/mypath/SEE/Assets/Plugins/crosstales/RTVoice/Scripts/Provider/BaseVoiceProvider.cs:259 
UnityEngine.Debug:LogError (object)
Crosstales.RTVoice.Provider.MainVoiceProvider:startProcess (System.Diagnostics.Process,int,bool,bool,bool,bool) (at Assets/Plugins/crosstales/RTVoice/Scripts/Provider/BaseVoiceProvider.cs:282)
Crosstales.RTVoice.Provider.VoiceProviderLinux/<>c__DisplayClass37_0:<Speak>b__0 () (at Assets/Plugins/crosstales/RTVoice/Scripts/Provider/VoiceProviderLinux.cs:234)
System.Threading.ThreadHelper:ThreadStart ()

InvalidOperationException: No process is associated with this object.
System.Diagnostics.Process.EnsureState (System.Diagnostics.Process+State state) (at <8e610fe3b48543c6942b64f6cad09e30>:0)
System.Diagnostics.Process.get_HasExited () (at <8e610fe3b48543c6942b64f6cad09e30>:0)
(wrapper remoting-invoke-with-check) System.Diagnostics.Process.get_HasExited()
Crosstales.RTVoice.Provider.VoiceProviderLinux+<Speak>d__37.MoveNext () (at Assets/Plugins/crosstales/RTVoice/Scripts/Provider/VoiceProviderLinux.cs:248)
UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) (at /home/bokken/build/output/unity/unity/Runtime/Export/Scripting/Coroutines.cs:17)

Please note that /home/bokken/build/… on the second error is not a path on my machine.

falko17 commented 22 hours ago

I cannot reproduce this on my Linux machine. With espeak-ng installed (and espeak being on my path), TTS works in SEE for me. I'm not sure why this is different on your end, do you have any idea why Unity seemingly can't find the espeak executable?