I know it's been quite a while since I've posted, but I've started working on a new project. Using the lessons I've learned from my previous try, I've started to make a more efficient, intuitive and extensible voice assistant; also known as the Naive Online Voice Assistant, or NOVA for short.
Here's the GitHub link:
As you can see from the repo name, Nova's currently being run on a Raspberry Pi; a step up from the MacOS development environment I had before. I'm using the same Pi as I used in the AlexaPi project.
Wakeword detection is still based on Snowboy, and speech transcription is still based on the Google Cloud API; but now, instead of using if trees, Nova uses the Wit.ai API to search for intent and then invoke the appropriate functions. The integration's ongoing in the 'wit-ai-refactor' branch.
Another change from Athena is that it's a lot more modular. I have created an extension framework to allow for functionality to be very easily added. All extensions are classes with a particular format, outlined in extensions/extension_framework.py.
I've also made a folder for shared functions, called modules. This is to serve as a folder containing libraries: functions that are likely to be called by different extensions. For example, I have utils.py, which contains a bunch of oddball but useful functions, such as ones that return a datetime object for tomorrow, and another one that uses Google Speech to Text to have Nova reply to commands.
I'm planning to add a web interface to it with Django for more advanced functions; like the logo becoming animated when it's listening, or a live voice activity transcription like what Google Assistant does. It would allow me to play and search for videos as well. For that, I'd have to dive into some socket-wizardry.
Good stuff is up ahead, so bear with me!
Oh Daddy this is juicy. Please fill me with your orange juice.... <3