The future of a simple open standard Linux implementation of a voice system is more important to me because it can be accomplished by reusing two tiny simple applications at each stage of a Linux system.
incredible lightweight the simplicity is akin to RISC as reusing simpler modules means the system can be simple or complex and scale by choice by purely adding duplicate blocks to the system.
There is a natural serial queue to voice processing:-
1… Mic/kws input
2… Mic/kws & speech enhancement server
3… ASR
4… NLP Skill router
5… TTS
6… Audio server
7… Skill Server(s)
2 – 5 can work in a really simplistic manner where either audio & metadata or text & metadata or queued until the process in front is clear and then sent.
Thats it in a nutshell how simple a native Linux voice can be as its just a series of queues and keeping it simple with Native Linux methods than embedded programming means its scalable to the complex.
Each Mic/KWS is allocated to a zone (room) and channel which should remain /etc/conf linux file system that likely mirrors the zone & channel of the audio system outputs
As distributed mic/kws can connect to a Mic/kws & speech enhancement server and on KW hit the best stream of that zone of the KWS argmax is selected.
The Mic/kws & speech enhancement server receives both audio and metadata transcribes to audio but merely passes on the metadata to a skill router.
A Skill router connects to skill servers to collect simple entity data by basic NLP matching of predicate and subject to route to a skill server again purely forwarding metadata
The Skill router will also accept text from skill servers that return metadata so the TTS will forward audio to the correct zone & channel also on completion the calling skill server is added to the metadata and forwarded back to the Mic/kws speech enhancement server to initiate a non kws mic broadcast.
Again the chain starts again and because the initiate skill server metadata is included the skill server knows that transcription dialog destination.
Thats it and you can add multiple routes at any stage to multiple instances so that it scales.
All that is needed is 2 tiny bits of code a low latency communication server and client, I can even demonstrate how simple that code is as wenet have both Websockets & gRPC examples.
They are just very simple standard linux conf queues as a voice systems is a serial near exclusively a serial chain and the only decision is to route to a specific skill server and near non of what we have is actually needed.
You purely forward metadata with audio or text if the destination is free or queue scalability is just muliple destinations.
Skill server need to know a very simple entity exchange with the skill router and from then neither system needs to each other.
The Skill router just needs the entity listing to decide on what to route to and it doesn’t matter that much as non matches are bounced back anyway.
Front of house are standard zonal audio systems Airplay, LMS or Snapcast its totally open to any because there is zero need to embed code.
Same with KWS Mics multiple plugins allow multiple KWS systems just to plugin to the KWS/Speech enhancement server that provides the initial zonal information of metadata for the voice to begin the serial chain of processing and the metadata pics up process stage data for process decision.
A simple client/server adoption would mean we can pick & mix opensource voice modules as there is a plethora available and they are being released at breakneck speeds and like Home Assistant it would be stupid to try and also be the Tasmota or ESPhome and be everything to everyone as that is a huge dev cul-de-sac as it has to do everything.
The future of Rhasspy os really strange as it doesn’t provide what we are missing and seems to provide a whole lot of what we don’t need.
A simple client/server queue router and a quick rethink on the basic building blocks and requirements of Lnux voice systems is all we need and when you do, you should quickly realise its actually a very simple serial chain.
That leaves vendors of all types to create a whole range of skill servers as a voice system has zero need to know as a system it purely has a list of its entities routes to the server and after that doesn’t care.
This has been a huge flaw as a system grows a voice system can not broadcast across many skill servers on nodes as it links all those systems and as security flaws goes it makes the above KWS discovery pale into insignificance but the answer is so simple as skill server to skill router is 1to1 and you do not do control you do voice inference and forward to skill servers.