From 31d8de55a7275719ff2e25f6e3af8f2f4a022aa6 Mon Sep 17 00:00:00 2001 From: Gonzalo Odiard Date: Sun, 9 Nov 2014 22:37:58 -0300 Subject: [PATCH] TTS: Cache the voices list --- src/sugar3/speech.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/sugar3/speech.py b/src/sugar3/speech.py index ab158c20..9edf0b06 100644 --- a/src/sugar3/speech.py +++ b/src/sugar3/speech.py @@ -229,6 +229,7 @@ class _GstSpeechPlayer(GObject.GObject): def __init__(self): GObject.GObject.__init__(self) self._pipeline = None + self._all_voices = None def restart_sound_device(self): if self._pipeline is None: @@ -290,14 +291,17 @@ class _GstSpeechPlayer(GObject.GObject): self.restart_sound_device() def get_all_voices(self): - all_voices = {} + if self._all_voices is not None: + return self._all_voices + self._all_voices = {} + for voice in Gst.ElementFactory.make('espeak', None).props.voices: name, language, dialect = voice if dialect != 'none': - all_voices[language + '_' + dialect] = name + self._all_voices[language + '_' + dialect] = name else: - all_voices[language] = name - return all_voices + self._all_voices[language] = name + return self._all_voices def get_default_voice(self): """Try to figure out the default voice, from the current locale ($LANG)