Enthernet Code
DIIDevHeads IoT Integration Server
•Created by Enthernet Code on 9/27/2024 in #📡-edge-networking
How do I achieve a fully functional voice-controlled system with reliable command recognition
from machine import Pin, I2S
import time
import ustruct
import array
import tensorflow as tf
led = Pin(2, Pin.OUT)
i2s = I2S(0,
sck=Pin(14),
ws=Pin(15),
sd=Pin(32),
mode=I2S.RX,
bits=16,
format=I2S.MONO,
rate=16000,
ibuf=2000)
model = tf.lite.Interpreter(model_path="model.tflite")
model.allocate_tensors()
input_details = model.get_input_details()
output_details = model.get_output_details()
def read_audio():
audio_data = array.array('h', i2s.read(1024))
audio_samples = ustruct.unpack('<1024h', audio_data)
return audio_samples
def final_process_audio():
audio_samples = read_audio()
audio_input = tf.convert_to_tensor(audio_samples, dtype=tf.float32)
audio_input = tf.expand_dims(audio_input, axis=0)
model.set_tensor(input_details[0]['index'], audio_input)
model.invoke()
output_data = model.get_tensor(output_details[0]['index'])
command_index = int(output_data.argmax())
commands = ["turn off", "turn on"]
if command_index < len(commands):
return commands[command_index]
else:
return "unknown"
while True:
command = final_process_audio()
print(f"Recognized command: {command}")
if command == "turn on":
led.on()
print("LED successfully turned on.")
elif command == "turn off":
led.off()
print("LED successfully turned off.")
else:
print("Unknown command received.")
time.sleep(1)
from machine import Pin, I2S
import time
import ustruct
import array
import tensorflow as tf
led = Pin(2, Pin.OUT)
i2s = I2S(0,
sck=Pin(14),
ws=Pin(15),
sd=Pin(32),
mode=I2S.RX,
bits=16,
format=I2S.MONO,
rate=16000,
ibuf=2000)
model = tf.lite.Interpreter(model_path="model.tflite")
model.allocate_tensors()
input_details = model.get_input_details()
output_details = model.get_output_details()
def read_audio():
audio_data = array.array('h', i2s.read(1024))
audio_samples = ustruct.unpack('<1024h', audio_data)
return audio_samples
def final_process_audio():
audio_samples = read_audio()
audio_input = tf.convert_to_tensor(audio_samples, dtype=tf.float32)
audio_input = tf.expand_dims(audio_input, axis=0)
model.set_tensor(input_details[0]['index'], audio_input)
model.invoke()
output_data = model.get_tensor(output_details[0]['index'])
command_index = int(output_data.argmax())
commands = ["turn off", "turn on"]
if command_index < len(commands):
return commands[command_index]
else:
return "unknown"
while True:
command = final_process_audio()
print(f"Recognized command: {command}")
if command == "turn on":
led.on()
print("LED successfully turned on.")
elif command == "turn off":
led.off()
print("LED successfully turned off.")
else:
print("Unknown command received.")
time.sleep(1)
2 replies