### Godot version

3.6-beta2, 4.0.2

### System information

Debian, espeak

### Issue description

I apparently (without any special effort on my part) have about 15,000 TTS voices, of which 816 are English.

Unfortunately, `spd_list_synthesis_voices` is slow -- it takes about 1.5s (I confirmed this outside of Godot).  This is not Godot's fault, but it is a problem, because we call it for [every call to `tts_speak`](https://github.com/godotengine/godot/blob/2e273f0e35800f2bcc7c05db54100caa97928f69/platform/linuxbsd/tts_linux.cpp#L126).  

I have submitted a PR (https://github.com/brailcom/speechd/pull/832) and a bug report (https://github.com/brailcom/speechd/issues/833) to speechd to improve this, but I do not expect new versions to be widely distributed for quite some time even if my issues are addressed (and I'm still at ~350ms, although it's possible that 833 could actually get me down to below 200ms).

We could work around this in a few ways:
1. When we call `spd_list_synthesis_voices`, we should cache the result.
    1. That cache should include the language information, so that we don't have to look it up again.
2. We should consider allowing the `voice` parameter of tts_speak to be `null`.  This would have two advantages: 
    1. It would use the default voice that the user has configured
    2. It would mean we wouldn't even have to call `spd_list_synthesis_voices` once.  (We would, however, need to get the language from somewhere in order to compute the word breaks -- maybe config, or maybe an extra parameter to tts_speak).  In this case, we might need to set the language using spd_set_language, so that the correct default voice can be chosen. 


### Steps to reproduce

```
var voices = DisplayServer.tts_get_voices_for_language("en")
var tts_lang_id = voices[0]
DisplayServer.tts_speak("wait for it", tts_lang_id)
```

### Minimal reproduction project

```#include <speech-dispatcher/libspeechd.h>

int main(int argc, char **argv)
{
   SPDConnection *conn;

   /* Open Speech Dispatcher connection in THREADED mode. */
   conn = spd_open("say", "main", NULL, SPD_MODE_THREADED);
   SPDVoice **voices = spd_list_synthesis_voices(conn);
   free_spd_voices(voices);

   return 0;
}
```

This shows that speechd is the root cause (you could also just run `time spd-say -L |wc -l` ).

[spd-slow.zip](https://github.com/godotengine/godot/files/11631036/spd-slow.zip)  This is a godot project; it doesn't report the timing, but for me, the delay is long enough to measure with a stopwatch.

#ifndef TTS_LINUX_H
#define TTS_LINUX_H
#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/variant/array.h"
#include "servers/display_server.h"
#ifdef SOWRAP_ENABLED
#include "speechd-so_wrap.h"
#else
#include <libspeechd.h>
#endif
class TTS_Linux : public Object {