Project started as most do with one plan in mind and then scope creep takes over.
I liked the idea of a voice controlled assistant like Amazon Alexa, Goggle Assistant, but never really crazy about a microphone connected to some cloud service in the ether..
So why not build my own offline voice control with integration into home automation, security..etc
This turned into a modular smart speaker completely designed in Fusion 360 with a 3d printed, compact modulare body. Adding an efficient yet powerful amplified speaker system, microphone array, raspberry pi zero w with full network and bluetooth connectivity.
Now performing a simple task like turning a light on with a simple voice command, does not require reaching out to the cloud to perform something locally on my network.
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.