diff options
-rw-r--r-- | espeak.py | 28 | ||||
-rw-r--r-- | espeak_gst.py | 6 |
2 files changed, 21 insertions, 13 deletions
@@ -14,7 +14,10 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -import gst +import gi +gi.require_version('Gst', '1.0') + +from gi.repository import Gst from gi.repository import GObject import subprocess @@ -24,27 +27,27 @@ logger = logging.getLogger('speak') supported = True -class BaseAudioGrab(GObject.GObject): +class BaseAudioGrab(GObject.Object): __gsignals__ = { 'new-buffer': (GObject.SIGNAL_RUN_FIRST, None, [GObject.TYPE_PYOBJECT]) } def __init__(self): - GObject.GObject.__init__(self) + GObject.Object.__init__(self) self.pipeline = None self.quiet = True def restart_sound_device(self): self.quiet = False - self.pipeline.set_state(gst.STATE_NULL) - self.pipeline.set_state(gst.STATE_PLAYING) + self.pipeline.set_state(Gst.State.NULL) + self.pipeline.set_state(Gst.State.PLAYING) def stop_sound_device(self): if self.pipeline is None: return - self.pipeline.set_state(gst.STATE_NULL) + self.pipeline.set_state(Gst.State.NULL) # Shut theirs mouths down self._new_buffer('') @@ -58,7 +61,8 @@ class BaseAudioGrab(GObject.GObject): # build a pipeline that reads the given file # and sends it to both the real audio output # and a fake one that we use to draw from - self.pipeline = gst.parse_launch( + + self.pipeline = Gst.parse_launch( cmd + ' ' \ '! decodebin ' \ '! tee name=tee ' \ @@ -79,7 +83,7 @@ class BaseAudioGrab(GObject.GObject): def gstmessage_cb(bus, message): self._was_message = True - if message.type == gst.MESSAGE_WARNING: + if message.type == Gst.MessageType.WARNING: def check_after_warnings(): if not self._was_message: self.stop_sound_device() @@ -89,7 +93,7 @@ class BaseAudioGrab(GObject.GObject): self._was_message = False GObject.timeout_add(500, self._new_buffer, str(buffer)) - elif message.type in (gst.MESSAGE_EOS, gst.MESSAGE_ERROR): + elif message.type in (Gst.MessageType.EOS, Gst.MessageType.ERROR): logger.debug(message.type) self.stop_sound_device() @@ -106,8 +110,10 @@ class BaseAudioGrab(GObject.GObject): # load proper espeak plugin try: - import gst - gst.element_factory_make('espeak') + import gi + gi.require_version('Gst', '1.0') + from gi.repository import Gst + Gst.element_factory_make('espeak', 'espeak') from espeak_gst import AudioGrabGst as AudioGrab from espeak_gst import * logger.info('use gst-plugins-espeak') diff --git a/espeak_gst.py b/espeak_gst.py index 4da4f9d..f5c90b8 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 @@ -51,7 +53,7 @@ class AudioGrabGst(espeak.BaseAudioGrab): 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 |