import os
import sys, getopt
import signal
import time
from edge_impulse_linux.audio import AudioImpulseRunner
DEFAULT_THRESHOLD = 0.60
my_threshold = DEFAULT_THRESHOLD
Noi = ('x')
x = 0
runner = None
def signal_handler(sig, frame):
print('Interrupted')
if (runner):
runner.stop()
sys.exit(0)
signal.signal(signal.SIGINT, signal_handler)
def help():
print('python classify.py <path_to_model.eim> <audio_device_ID, optional>' )
def my_function(label, score):
print('' )
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 = None
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='')
if(label == "Yes" and score > my_threshold) and (label == "Unknown" and score < my_threshold):
print("Yes", flush=True)
my_function(label,score)
if label == ("Noise") and (score > my_threshold):
print("Noise", flush=True)
if label == ("Unknown") and (score > my_threshold):
print("Unknown", flush=True)
my_function(label,score)
print('', flush=True)
print('', flush=True)
if score > my_threshold:
my_function(label,score)
print('', flush=True)
if label == "Hey Bmo":
my_function(label,score)
finally:
if (runner):
runner.stop()
if __name__ == '__main__':
main(sys.argv[1:])
main(sys.argv[1:])
With my code
if(label == "Yes" and score > my_threshold) and (label == "Unknown" and score < my_threshold):
print("Yes", flush=True)
Why doesn’t it do a double % check to see if Yes is above the threshold but Unknown is below its own threshold before sending the print command?
Disclaimer: first time touching Python edited part of code is probably ruff.