Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/espeak_gst.py
diff options
context:
space:
mode:
Diffstat (limited to 'espeak_gst.py')
-rw-r--r--espeak_gst.py17
1 files changed, 9 insertions, 8 deletions
diff --git a/espeak_gst.py b/espeak_gst.py
index 4da4f9d..9f159c5 100644
--- a/espeak_gst.py
+++ b/espeak_gst.py
@@ -17,7 +17,9 @@
import logging
logger = logging.getLogger('speak')
-import gst
+import gi
+gi.require_version('Gst', '1.0')
+from gi.repository import Gst
import espeak
PITCH_MAX = 200
@@ -26,32 +28,31 @@ RATE_MAX = 200
class AudioGrabGst(espeak.BaseAudioGrab):
def speak(self, status, text):
- # XXX workaround for http://bugs.sugarlabs.org/ticket/1801
if not [i for i in unicode(text, 'utf-8', errors='ignore') \
if i.isalnum()]:
return
-
+
self.make_pipeline('espeak name=espeak ! wavenc')
src = self.pipeline.get_by_name('espeak')
-
+
pitch = int(status.pitch) - 120
rate = int(status.rate) - 120
-
+
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:
+ 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