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

Espeak TTS does not work on Linux #792

Open
tinxx opened this issue Oct 1, 2024 · 3 comments
Open

Espeak TTS does not work on Linux #792

tinxx opened this issue Oct 1, 2024 · 3 comments
Labels
bug Something isn't working

Comments

@tinxx
Copy link
Collaborator

tinxx commented Oct 1, 2024

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.

@tinxx tinxx added the bug Something isn't working label Oct 1, 2024
@tinxx tinxx changed the title Espeek does not work on Linux Espeak does not work on Linux Oct 1, 2024
@tinxx tinxx changed the title Espeak does not work on Linux Espeak TTS does not work on Linux Oct 1, 2024
@falko17
Copy link
Collaborator

falko17 commented Nov 6, 2024

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?

@tinxx
Copy link
Collaborator Author

tinxx commented Nov 18, 2024

I see, so the idea is that everyone has to install that manually on their systems in addition to SEE?

@falko17
Copy link
Collaborator

falko17 commented Nov 18, 2024

Yes, pretty much. AFAIK, on Windows, we use the pre-installed TTS system, of which there isn't an equivalent on Linux (except for espeak, which isn't necessarily pre-installed). We could try providing a more explicit error message when espeak is not installed, although I think it's hard to catch the exception that causes the error message from the issue description.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants