Enthernet Code
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