A modular smart speaker designed with localized speech recognition, customization and security in mind.
Diagram of functionality
JPEG Image - 48.74 kB - 04/19/2018 at 08:04
Created a quick video to demonstrate the voice control functionality.
I know, I know why a web interface, well just like any network connected "appliance", I think it will prove to be useful for setup, configuration and control of things that are not voice control friendly..
I also figured it might be good for diagnosis of issues, and to check status.
For a web interface I decided to go with a nice and compact minimal web server.
I figured I try my hand at flask, a simple python based web server that offers pretty nice features and makes it pretty easy to setup a basic web app in no time.
There is still alot of work but in no time I managed to get a basic login page setup:
And managed to whip up a basic bootstrap template and a few pages:
Worked through a number of issues over the past week or so, mostly trying to increase the consistency of the voice recognition service. By adding SoX filters and options we are able to drastically clean up the audio and improve consistency in the service.
A simple mqtt client was built in python, this should allow for home automation integration with Home Assistant server. I managed to test it a number of times and it seems to be fairly consistent from cli runs. Voice command functionality could still use more fine tuning, but it appears to be working overall.
After talking with a few people I have had the opportunity to get alot of great feedback and ideas which I think should be pretty simple to implement over time.
Finally finished the assembly and managed to cram everything into the case.
I had to do a few additional mods to try to mitigate some of the noise I was getting from the amplifier.
After looking up the PAM 8403 ic I found out that there is a mute pin (active low), so after cutting the trace, soldering a wire and connecting it to a gpio pin, I have mute control on the pi.
I also threw together a quick stereo ground loop isolator with a couple small 1:1 transformers, some protoboard, and some audio jacks from an old sound card.
This helps quite a bit with noise, but the amplifier still seems to pick up some emi interference from the Pi, (you can hear when your ssh'd in and sending keystrokes)..
I also picked up a dedicated microphone amplifier, its much smaller then the original one I built and much more sensitive, so now you can pic up peoples voices from the other room.
Other then that everything seems to be running good.