There are several ‘layers’ to a voice assistant;
Wake Word - that detects when you are speaking to the device. This is local to the device and we use PocketSphinx.
Speech to text - that detects what you say to determine Intents - we currently use a cloud service for this
Intent matching - this is done locally using our own open source software - Adapt and Padatious
Skills - Intents then match to Skills. Some Skills require internet connectivity.
Text to Speech - We use our own software called Mimic for this, it’s local to the device.