#!/usr/bin/env python2 import sys import os # set to location of libgstkaldionline2.so os.environ['GST_PLUGIN_PATH'] = './asr/' os.environ['GTK_THEME'] = 'light' # import gtk stuff from threading import Thread import gi gi.require_version('Gst', '1.0') from gi.repository import GObject, Gst, Gtk, Gdk GObject.threads_init() Gdk.threads_init() Gst.init(None) # make sure ctrl-c works import signal signal.signal(signal.SIGINT, signal.SIG_DFL) # import local stuff import confirm, asr, action, section, xmlview_widgets import levenstein class ScriptedASR(Gtk.Window): def __init__(self, xml_filename): super(ScriptedASR, self).__init__() self.connect("destroy", self.quit) self.set_default_size(800,600) self.set_border_width(10) self.set_title('ScriptedASR [%s]' % xml_filename) vbox = Gtk.VBox() self.sections = section.SectionManager() vbox.pack_start(self.sections, False, True, 5) self.xmlview = xmlview_widgets.XmlView(xml_filename) vbox.pack_start(self.xmlview, True, True, 5) self.confirmer = confirm.ConfirmationBox() vbox.pack_start(self.confirmer, False, True, 5) self.actions = action.ActionView() vbox.pack_start(self.actions, False, True, 5) self.sections.set_confirmer(self.confirmer) self.actions.set_confirmer(self.confirmer) # transcript view self.asr = asr.ASR(self.hyp_changed) vbox.pack_start(self.asr, False, True, 5) self.add(vbox) self.show_all() self.confirmer.hide() # load css style style_provider = Gtk.CssProvider() style_provider.load_from_data(open('data/style.css', 'rb').read()) Gtk.StyleContext.add_provider_for_screen( Gdk.Screen.get_default(), style_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION) def hyp_changed(self, hyp): hyp = ' '.join(hyp).replace('[noise]', ' ').split() print 'ASR:', hyp def quit(self, window): Gtk.main_quit() if __name__ == '__main__': xml_filename = 'data/homeostasis_sept2014.xml' if len(sys.argv) > 1: xml_filename = sys.argv[1] app = ScriptedASR(xml_filename) Gtk.main()