From 6e82c5964e31f3cc937911069709af9830071338 Mon Sep 17 00:00:00 2001 From: Aleksey Lim Date: Fri, 25 Dec 2009 15:34:56 +0000 Subject: Use only one directory level for sources --- (limited to 'espeak_gst.py') diff --git a/espeak_gst.py b/espeak_gst.py new file mode 100644 index 0000000..85cfa26 --- /dev/null +++ b/espeak_gst.py @@ -0,0 +1,54 @@ +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +import logging +logger = logging.getLogger('speak') + +import gst +import espeak + +PITCH_MAX = 200 +RATE_MAX = 200 +PITCH_DEFAULT = PITCH_MAX/2 +RATE_DEFAULT = RATE_MAX/2 + +class AudioGrabGst(espeak.BaseAudioGrab): + def speak(self, status, text): + self.make_pipeline('espeak name=espeak ! wavenc') + src = self.pipeline.get_by_name('espeak') + + pitch = int(status.pitch) - 100 + rate = int(status.rate) - 100 + + logger.debug('pitch=%d rate=%d voice=%s text=%s' % (pitch, rate, + status.voice.name, text)) + + src.props.text = text + src.props.pitch = pitch + src.props.rate = rate + src.props.voice = status.voice.name + + self.restart_sound_device() + +def voices(): + out = [] + + for i in gst.element_factory_make('espeak').props.voices: + name, language, dialect = i + if name in ('en-rhotic','english_rp','english_wmids'): + # these voices don't produce sound + continue + out.append((language, name)) + + return out -- cgit v0.9.1