tts: gracefully handle the lack of a speechd module

We already gracefully handle the lack of speechd having the
`speech-dispatcher` command utility available, and respond by disabling
that backend. Go one step further, and disable it if the module is
missing too.

It's not even the default engine. It seems fair for piper users to not
require having this installed. The build tests will assert its presence
either way so it's not like it will go unnoticed.
This commit is contained in:
Eli Schwartz 2024-09-13 01:09:08 -04:00
parent ae3277b17f
commit eacd4a72a5
No known key found for this signature in database
GPG Key ID: CEB167EFB5722BD6

View File

@ -221,7 +221,11 @@ def available_engines() -> dict[str, EngineMetadata]:
'for natural sounding voices. The neural network is run locally on your computer, it is fairly resource intensive to run.'
), TrackingCapability.Sentence, can_change_pitch=False, voices_have_quality_metadata=True, has_managed_voices=True)
if islinux:
try:
from speechd.paths import SPD_SPAWN_CMD
except ImportError:
pass
else:
cmd = os.getenv("SPEECHD_CMD", SPD_SPAWN_CMD)
if cmd and os.access(cmd, os.X_OK) and os.path.isfile(cmd):
ans['speechd'] = EngineMetadata('speechd', _('The Speech Dispatcher Engine'), _(