diff options
Diffstat (limited to 'platform/linuxbsd/tts_linux.h')
-rw-r--r-- | platform/linuxbsd/tts_linux.h | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/platform/linuxbsd/tts_linux.h b/platform/linuxbsd/tts_linux.h index 425654d975..ec68219689 100644 --- a/platform/linuxbsd/tts_linux.h +++ b/platform/linuxbsd/tts_linux.h @@ -34,14 +34,18 @@ #include "core/os/thread.h" #include "core/os/thread_safe.h" #include "core/string/ustring.h" +#include "core/templates/hash_map.h" #include "core/templates/list.h" -#include "core/templates/rb_map.h" #include "core/variant/array.h" #include "servers/display_server.h" +#ifdef SOWRAP_ENABLED #include "speechd-so_wrap.h" +#else +#include <libspeechd.h> +#endif -class TTS_Linux { +class TTS_Linux : public Object { _THREAD_SAFE_CLASS_ List<DisplayServer::TTSUtterance> queue; @@ -51,6 +55,13 @@ class TTS_Linux { int last_msg_id = -1; HashMap<int, int> ids; + struct VoiceInfo { + String language; + String variant; + }; + bool voices_loaded = false; + HashMap<String, VoiceInfo> voices; + Thread init_thread; static void speech_init_thread_func(void *p_userdata); @@ -59,6 +70,11 @@ class TTS_Linux { static TTS_Linux *singleton; +protected: + void _load_voices(); + void _speech_event(size_t p_msg_id, size_t p_client_id, int p_type); + void _speech_index_mark(size_t p_msg_id, size_t p_client_id, int p_type, const String &p_index_mark); + public: static TTS_Linux *get_singleton(); |