def __init__(self, activity): Gtk.Toolbar.__init__(self) self._activity = activity self._speech = SpeechManager() self._speech.connect('play', self._play_cb) self._speech.connect('stop', self._stop_cb) self._speech.connect('pause', self._pause_cb) def make_button(icon, callback, tip): button = ToolButton(icon) button.show() button.connect('clicked', callback) self.insert(button, -1) button.set_tooltip(tip) return button self._play_button = make_button('media-playback-start', self._play_clicked_cb, _('Play')) self._pause_button = make_button('media-playback-pause', self._pause_clicked_cb, _('Pause')) self._stop_button = make_button('media-playback-stop', self._stop_clicked_cb, _('Stop')) self._stop_cb(None)
def __init__(self, activity): Gtk.Toolbar.__init__(self) self._activity = activity self._speech = SpeechManager() self._is_paused = False self.load_speech_parameters() self._voices = self._speech.get_all_voices() # a dictionary locale = os.environ.get('LANG', '') language_location = locale.split('.', 1)[0].lower() language = language_location.split('_')[0] # if the language is es but not es_es default to es_la (latin voice) if language == 'es' and language_location != 'es_es': language_location = 'es_la' self._voice = 'en_us' if language_location in self._voices: self._voice = language_location elif language in self._voices: self._voice = language voice_names = [] for language, name in self._voices.iteritems(): voice_names.append((language, name)) voice_names.sort(self._compare_voice) # Play button self._play_button = ToggleToolButton('media-playback-start') self._play_button.show() self._play_button.connect('toggled', self._play_toggled_cb) self.insert(self._play_button, -1) self._play_button.set_tooltip(_('Play / Pause')) # Stop button self._stop_button = ToolButton('media-playback-stop') self._stop_button.show() self._stop_button.connect('clicked', self._stop_clicked_cb) self._stop_button.set_sensitive(False) self.insert(self._stop_button, -1) self._stop_button.set_tooltip(_('Stop')) # Language list combo = ComboBox() which = 0 for pair in voice_names: language, name = pair combo.append_item(language, name) if language == self._voice: combo.set_active(which) which += 1 combo.connect('changed', self._voice_changed_cb) combotool = ToolComboBox(combo) self.insert(combotool, -1) combotool.show() self._speech.connect('stop', self._reset_buttons_cb)
def get_speech_manager(): global _speech_manager if _speech_manager is None: _speech_manager = SpeechManager() if not _speech_manager.enabled(): _speech_manager = None return _speech_manager
class Speaker: """Speak aloud the given text. """ def __init__(self): self._speech_manager = SpeechManager() def speak(self, text): """Speaks aloud the given text. """ text = text.replace("\"", "\\\"") if self._speech_manager.enabled(): self._speech_manager.say_text(text)
def _speak(self, payload): if len(payload) > 0: [nick, language_option, text] = data_from_string(payload) if language_option == 'None': language_option = '' if text is not None: if self._tw.running_sugar: from sugar3.speech import SpeechManager sm = SpeechManager() sm.say_text(text) else: os.system('espeak %s "%s" --stdout | aplay' % (language_option, str(text)))
class Speaker: """Speak aloud the given text. """ """espeak parameter: language pitch. """ # TRANS: The language pitch (range [0 - 99], default 50 for English) # Look at http://espeak.sourceforge.net/commands.html for details PITCH = _("50") """espeak parameter: diction speed (average words per minute). """ # TRANS: The diction speed, in average words per minute (range [80 - 390], # default 170 for English). # Look at http://espeak.sourceforge.net/commands.html for details SPEED = _("170") """espeak parameter: word gap in units of 10 ms. """ # TRANS: The pause duration between words, in units of 10 ms. # Look at http://espeak.sourceforge.net/commands.html for details WORD_GAP = _("0") """espeak parameter: the language and voice variant. """ # TRANS: The language and voice variant # Look at http://espeak.sourceforge.net/commands.html for details, and # http://espeak.sourceforge.net/languages.html to see if your language # is supported. VOICE = _("en") ESPEAK_COMMAND = "espeak -p%s -s%s -g%s -v%s \"%s\"" def __init__(self): self._speech_manager = None if _HAS_SPEECH_MANAGER: self._speech_manager = SpeechManager() def speak(self, text): """Speaks aloud the given text. """ text = text.replace("\"", "\\\"") if self._speech_manager and self._speech_manager.enabled(): self._speech_manager.say_text(text) else: child = os.popen(Speaker.ESPEAK_COMMAND % (Speaker.PITCH, Speaker.SPEED, Speaker.WORD_GAP, Speaker.VOICE, text)) child.read() child.close()
def _say(self, text, lang): speech_manager = SpeechManager() if speech_manager.get_is_playing(): speech_manager.stop() else: try: speech_manager.say_text(text=text, lang_code=_ESPEAK_TO_NEW_LANG_CODE[ dictdmodel.espeak_voices[lang]]) except KeyError: speech_manager.say_text(text=text, lang_code='en')
def _say(self, text, lang): speech_manager = SpeechManager() if speech_manager.get_is_playing(): speech_manager.stop() else: try: speech_manager.say_text( text=text, lang_code=_ESPEAK_TO_NEW_LANG_CODE[dictdmodel.espeak_voices[lang]] ) except KeyError: speech_manager.say_text(text=text, lang_code='en')
def speak(text): """ Speak text """ if type(text) == float and int(text) == text: text = int(text) safetext = '{}'.format(quote(str(text))) lang = os.environ['LANG'][0:2] if lang in VOICES: language_option = '-v ' + VOICES[lang] else: language_option = '' try: from sugar3.speech import SpeechManager sm = SpeechManager() sm.say_text(text) except ModuleNotFoundError: # for safety, if sugar's not installed / found [optional] os.system('espeak {} "{}" --stdout | aplay'.format( language_option, str(text)))
def __init__(self): self._speech_manager = None if _HAS_SPEECH_MANAGER: self._speech_manager = SpeechManager()
class SpeechToolbar(Gtk.Toolbar): def __init__(self, activity): Gtk.Toolbar.__init__(self) self._activity = activity self._speech = SpeechManager() self._speech.connect('play', self._play_cb) self._speech.connect('stop', self._stop_cb) self._speech.connect('pause', self._pause_cb) def make_button(icon, callback, tip): button = ToolButton(icon) button.show() button.connect('clicked', callback) self.insert(button, -1) button.set_tooltip(tip) return button self._play_button = make_button('media-playback-start', self._play_clicked_cb, _('Play')) self._pause_button = make_button('media-playback-pause', self._pause_clicked_cb, _('Pause')) self._stop_button = make_button('media-playback-stop', self._stop_clicked_cb, _('Stop')) self._stop_cb(None) def _play_cb(self, speech): self._play_button.set_sensitive(False) self._pause_button.set_sensitive(True) self._stop_button.set_sensitive(True) def _pause_cb(self, speech): self._play_button.set_sensitive(True) self._pause_button.set_sensitive(False) self._stop_button.set_sensitive(True) def _stop_cb(self, speech): self._play_button.set_sensitive(True) self._pause_button.set_sensitive(False) self._stop_button.set_sensitive(False) def _play_clicked_cb(self, widget): if not self._speech.get_is_paused(): abi = self._activity.abiword_canvas text = abi.get_content("text/plain", None) self._speech.say_text(text[0]) else: self._speech.restart() def _pause_clicked_cb(self, widget): self._speech.pause() def _stop_clicked_cb(self, widget): self._speech.stop()
class SpeechToolbar(Gtk.Toolbar): def __init__(self, activity): Gtk.Toolbar.__init__(self) self._activity = activity self._speech = SpeechManager() self._is_paused = False self.load_speech_parameters() self._voices = self._speech.get_all_voices() # a dictionary locale = os.environ.get('LANG', '') language_location = locale.split('.', 1)[0].lower() language = language_location.split('_')[0] # if the language is es but not es_es default to es_la (latin voice) if language == 'es' and language_location != 'es_es': language_location = 'es_la' self._voice = 'en_us' if language_location in self._voices: self._voice = language_location elif language in self._voices: self._voice = language voice_names = [] for language, name in self._voices.iteritems(): voice_names.append((language, name)) voice_names.sort(self._compare_voice) # Play button self._play_button = ToggleToolButton('media-playback-start') self._play_button.show() self._play_button.connect('toggled', self._play_toggled_cb) self.insert(self._play_button, -1) self._play_button.set_tooltip(_('Play / Pause')) # Stop button self._stop_button = ToolButton('media-playback-stop') self._stop_button.show() self._stop_button.connect('clicked', self._stop_clicked_cb) self._stop_button.set_sensitive(False) self.insert(self._stop_button, -1) self._stop_button.set_tooltip(_('Stop')) # Language list combo = ComboBox() which = 0 for pair in voice_names: language, name = pair combo.append_item(language, name) if language == self._voice: combo.set_active(which) which += 1 combo.connect('changed', self._voice_changed_cb) combotool = ToolComboBox(combo) self.insert(combotool, -1) combotool.show() self._speech.connect('stop', self._reset_buttons_cb) def _compare_voice(self, a, b): if a[1].lower() == b[1].lower(): return 0 if a[1].lower() < b[1].lower(): return -1 if a[1].lower() > b[1].lower(): return 1 def _voice_changed_cb(self, combo): self._voice = combo.props.value self._speech.say_text(self._voices[self._voice]) self.save_speech_parameters() def load_speech_parameters(self): speech_parameters = {} data_path = os.path.join(self._activity.get_activity_root(), 'data') data_file_name = os.path.join(data_path, 'speech_params.json') if os.path.exists(data_file_name): f = open(data_file_name, 'r') try: speech_parameters = json.load(f) self._voice = speech_parameters['voice'] finally: f.close() def save_speech_parameters(self): speech_parameters = {} speech_parameters['voice'] = self._voice data_path = os.path.join(self._activity.get_activity_root(), 'data') data_file_name = os.path.join(data_path, 'speech_params.json') f = open(data_file_name, 'w') try: json.dump(speech_parameters, f) finally: f.close() def _reset_buttons_cb(self, widget=None): self._play_button.set_icon_name('media-playback-start') self._stop_button.set_sensitive(False) self._is_paused = False def _play_toggled_cb(self, widget): self._stop_button.set_sensitive(True) if widget.get_active(): self._play_button.set_icon_name('media-playback-pause') if not self._is_paused: self._speech.say_text(self._activity._view.get_marked_words(), lang_code=self._voice) else: self._speech.restart() else: self._play_button.set_icon_name('media-playback-start') self._is_paused = True self._speech.pause() def _stop_clicked_cb(self, widget): self._stop_button.set_sensitive(False) self._play_button.set_icon_name('media-playback-start') self._play_button.set_active(False) self._is_paused = False self._speech.stop()
def __init__(self): self._speech_manager = SpeechManager()