Team
Name
- Yodha
Team
Members
- Tharun Medini (just me)
Goal
The main task of this project is to train a neural network on an edge device like Arduino Nano BLE Sense 33. This device has very limited memory and processing power. Hence, we need to compress the neural network to a very small footprint and then use it in conjunction with a real input signals on some specific task.
Task
I chose the Wake Word Detection task. In this task, we need the edge device (Arduino Nano BLE Sense 33) to listen to a sound and classify the spoken word into 'Yes', 'No', 'Neither' and silence. To observe the performance, we intend to light up the Green LED on the board when we speak 'Yes' and the Red LED when we speak 'No'. For any other word, the blue led should light up and nothing lights up when we are silent.
WorkFlow
The three main steps involved are 1) Training a Machine Learning model in Tensorflow 2) Quantizing the model to lower bit (8-bits in general) and converting it to C-code and 3) Building and Uploading it to the Arduino Nano BLE Sense 33 board.
Data and Model
The dataset used for training is a Speech Commands Dataset that has 65000 data points corresponding to one sec utterances of 30 words. We preprocess the data to modify the 30 classes into just 4. Two classes explicitly for 'Yes' and 'No', rest 28 words into one class called 'Unknown' and the final class for silence. The data is pre-featurized into 2D spectrograms and CNNs are used to train.
Arduino Issues
I ordered two Arduino Nano board because I was facing lot of issues with the first one. The workability was a hit and miss. I also ordered a cable with explicit data mode and power mode toggles bcz the default cable was not working.
Another major issue was that right after uploading the code from Arduino IDE, the COM port changes and the Arduino disconnects. However, using the web editor, I overcame this issue.
Video Link on Youtube
:
Comments