The AXELA project's goal is to design an AI home assistant that runs locally with connection to the internet being completely optional and limited to downloading system updates, extentions or connecting to third party services (such as online music players). Nothing the user or assistant says ever leaves the home device.
This repository contains the AI part of the project. The underlying backend architecture and frontend for the desktop application can be found in separate repositories:
- desktop app: https://github.com/Akip07/axela-frontend
- assistant infra: https://github.com/ceramic-vessel-developer/AXELA-device-software
The project uses three lightweight AI models, each one filling a different role in the assistant's pipeline:
The wakeword detector's task is to indefinitely listen for a specific keyword. On its detection the device is woken up from stand-by mode and goes into active listening mode. The wakeword detector is inherently a very small speech-to-text model, which only recognizes a single word.
For this functionality an OpenWakeWord model was used and trained to detect a custom wakeword 'Axela'.
After the model is woken up it gets the user's spoken command in the form of an audio file and transcribes it into text to enable the processing of the command. This functionality has been implemented with a distil-whisper model, which is a scaled-down version of OpenAI's Whisper model.
The assistants responds to user's commands with short voice response. The response templates are saved as text for each command and can include variables. The text is passed to the text-to-speech model, which processes it into an audio file that is next played to the user as confirmation.
This functionality was implemented using the Piper model.