This post serves as the submission of my project. Thank you very much for your attention and consideration.
- Project name
The name of this project is vocal_numeric
- Team member names, roles
Stephen Bailey, project lead.
I would like to thank Carlos @Chaplin5 for his feedback on this project and Chris Purcell for his moral support, and for sharing his experience with embedded development.
- Project summary
a model and circuit which replicate the functionality of a 10-digit keypad via keyword spotting.
- Longer project description
The purpose of the vocal_numeric project was to develop a simple and direct use for a keyword based model using commonly available parts and techniques. The model recognizes the digits 0-9 and writes them to a 7-segment led display. There is also a response for unknown words.
In my study of TinyML, I have seen many amazing projects which hold a great deal of promise and potential. However, I did not see as many projects which took the ideas and concepts of TinyML and applied them directly to current, practical applications. Taking numeric input and displaying it is a technique used everywhere with well proven methodology. Adding TinyML to the chain provides a new layer of functionality on top of a rock-solid base.
My goal for this project was to create a practical device which could be dropped in to any project using a 10-digit keypad or other number input device and have it perform, adding voice recognition functionality for a minimal addition of money, time or energy usage. While this may not stretch the technological limits of what is possible with TinyML, I believe that effectively addressing simple needs using TinyML will help drive adoption of the techniques and devices for the general public.
- References (including other code or data), sources of inspiration
The sources of information I used are below. Full citations can be found in the GitHub repository.
The circuit was taken from a project by akarsh98 on the create.arduino.cc project hub which can be found here -
https://create.arduino.cc/projecthub/akarsh98/controlling-7-segment-display-using-arduino-and-74hc595-52f09c
The akarsh98 project was modified by me as it did not work with my hardware.
My data was taken from Pete Warden’s speech_commands dataset, the Mozilla Common Voice single word dataset, the Microsoft Noisy Speech dataset and my own personal recordings.
My inspirations for this project are the TinyML edX courses, the tutorials and resources provided by Edge Impulse and the enthusiasm of the worldwide TinyML community to bring these devices and techniques to the public.
- A link to the corresponding GitHub repository, under an open sources license
This repository is formatted as an Arduino library so it can be downloaded as a zip file and directly imported into the Arduino IDE. Two sample sketches are included, one which writes to the serial monitor and one which works with the circuit described in the repository.
- A YouTube video showcasing your application
I am afraid that video is not my strength, but hopefully these will be of some interest
A video walk through of the code and a look at the circuit in action can be found here:
A video of some potential use case ideas can be found here:
An additional thought about multiple devices: