> I did the same thing, but I went the easy way and used OpenAI's API.
This is a cool project, but it's not really the same thing. The #1 requirement that OP had was to not talk to any cloud services ("no exceptions"), and that's the primary reason why I clicked on this thread. I'd love to replace my Google Home, but not if OpenAI just gets to hoover up the data instead.
using a cloud service is much easier and cheaper, but I was not comfortable with that trade-off.
The cam is positioned higher than most things in the room to reduce triggering it unnecessarily.
When it triggers (currently using just simple cvv facial landmark detection) it emits a beep and then listens for a verbal command.
HomeAssistant seems to natively support wake words, but I haven't looked into it yet. I simply use my smartwatch (Wear OS supports replacing Google Assistant with HomeAssistant's Assist functionality) to interact with the LLM
https://github.com/skorokithakis/ez-openai
Then my assistant is just a bunch of Python functions and a prompt. Very very simple.
I used an ESP32-Box with the excellent Willow project for the local speech recognition and generation:
https://github.com/toverainc/willow