text: import os
  import sys
  import getopt
  import signal
  import time
  from edge_impulse_linux.audio import AudioImpulseRunner
  
  runner = None
  dev_index = 2  # device index (found by p.get_device_info_by_index(ii))
  
  
  def signal_handler(sig, frame):
      print('Interrupted')
      if (runner):
          runner.stop()
      sys.exit(0)
  
  
  signal.signal(signal.SIGINT, signal_handler)
  
  
  def help():
      print('python3 4-run-impulse.py <path_to_model.eim> <audio_device_ID, optional>')
  
  
  def main(argv):
  
      try:
          opts, args = getopt.getopt(argv, "h", ["--help"])
      except getopt.GetoptError:
          help()
          sys.exit(2)
  
      for opt, arg in opts:
          if opt in ('-h', '--help'):
              help()
              sys.exit()
  
      if len(args) == 0:
          help()
          sys.exit(2)
  
      model = args[0]
  
      dir_path = os.path.dirname(os.path.realpath(__file__))
      modelfile = os.path.join(dir_path, model)
  
      with AudioImpulseRunner(modelfile) as runner:
          try:
              model_info = runner.init()
              labels = model_info['model_parameters']['labels']
              print('Loaded runner for "' +
                    model_info['project']['owner'] + ' / ' + model_info['project']['name'] + '"')
  
              # Let the library choose an audio interface suitable for this model, or pass device ID parameter to manually select a specific audio interface
              selected_device_id = dev_index
              # if len(args) >= 2:
              #     selected_device_id = int(args[1])
              #     print("Device ID " + str(selected_device_id) +
              #           " has been provided as an argument.")
  
              for res, audio in runner.classifier(device_id=selected_device_id):
                  print('Result (%d ms.) ' % (
                      res['timing']['dsp'] + res['timing']['classification']), end='')
                  for label in labels:
                      score = res['result']['classification'][label]
                      print('%s: %.2f\t' % (label, score), end='')
                  print('', flush=True)
  
          finally:
              if (runner):
                  runner.stop()
  
  
  if __name__ == '__main__':
      main(sys.argv[1:])
  