def process_input_file(conn, options, out_queue, background=True): """Given socket/pipe process audio input and push to out_queue""" log.info("Starting recognition on %s", conn) model = Model(options.model,) if options.beam_width: model.setBeamWidth(options.beam_width) desired_sample_rate = model.sampleRate() if desired_sample_rate != defaults.SAMPLE_RATE: log.error("Model expects rate of %s", desired_sample_rate) # if options.scorer: # model.enableExternalScorer(options.scorer) # else: log.info("Disabling the built-in scorer") model.disableExternalScorer() out_queue.put({'partial': False, 'final': False, 'message': ['Connected']}) if background: thread = threading.Thread(target=run_recognition, args=(model, conn, out_queue)) thread.setDaemon(background) thread.start() else: run_recognition(model, conn, out_queue)
def process_input_file(conn, options, out_queue, background=True): # TODO: allow socket connections from *clients* to choose # the model rather than setting it in the daemon... # to be clear, *output* clients, not audio sinks log.info("Starting recognition on %s", conn) model = Model(options.model,) if options.beam_width: model.setBeamWidth(options.beam_width) desired_sample_rate = model.sampleRate() if desired_sample_rate != defaults.SAMPLE_RATE: log.error("Model expects rate of %s", desired_sample_rate) if options.scorer: model.enableExternalScorer(options.scorer) else: log.info("Disabling the scorer") model.disableExternalScorer() if background: t = threading.Thread(target=run_recognition, args=(model, conn, out_queue)) t.setDaemon(background) t.start() else: run_recognition(model, conn, out_queue)