A PCB business card is a great way for electrical engineers to impress employers with their design skills, but the software they run can be just as impressive as the card itself. As a programmer with an interest in embedded machine learning, [Dave McKinnon] wanted a card that showcased his skills, so he designed one that runs voice recognition.
[Dave] specifically wanted to run a neural network on his card, but needed to make it small enough to run on a microcontroller. Voice recognition looked like a good fit for this, since audio can be represented with relatively little data, a microphone is cheap and easy to add to a circuit board, and there was already an example of someone running such a voice recognition network on an Arduino. To fit the neural network into 46 kB, it only distinguishes the words “one” through “nine,” and displays its guess on an LED seven-segment display. [Dave] first prototyped the system with an Arduino, then designed the circuit board around an RP2040.
The switch from Arduino to the RP2040 brought with it a mysterious change: it would usually recognize the word “eight,” but none of the other numbers. After much investigation, it turned out that the new circuit was presenting samples at a much higher rate than the older one had, which was throwing the network off. [Dave] increased the sampling period and had the user speak the numbers slowly, which solved the issue.
The microcontroller was well chosen; the RP2040 is good enough for machine learning that there are dev boards explicitly designed for it, and even comparatively less powerful Arduino boards can do surprisingly good voice recognition. On the hardware side, [Dave] cited some of the Linux business cards we’ve seen as inspiration.

Great project, very cool. I wonder if the fab complained about that massive area they had to remove the copper for.
Anyway, I’m wondering if there are any use cases where the training of these networks must also be done in the micro and not on pre recorded data sets on the PC?