quick question. Anyone can give me a short tl;dr on how these two projects differ?
anyone who has used both can say which you like better and why?
I’m trying to decide which one to use. I’m more interested in the speech recognition and building apps on top than home automation. Thanks.
quick question. Anyone can give me a short tl;dr on how these two projects differ?
Hey there @fluidvoice
The Main Difference between Project Alice and Rhasspy is that they serve 2 different purposes.
Project Alice is a “self hosted” voice assistant much like Amazon Alexa or Siri which has Skills you can use to fullfill specific tasks. You can write these Skills, much like for Alexa, yourself aswell, so its a good way to learn and play around with the whole Voice Assistant Pipeline.
Rhasspy is a platform which offers all the services in the voice assistant pipeline. → Project Alice could be build using Rhasspy
Rhasspy has a standard Protocoll (Hermes) which it uses for standardized communication between the different Services and offers a variety of them for every single job. (NLU: FuzzyWuzzy, SnipsNLU, RasaNLU etc…)
Thats why i don’t think you can really compare them and there isn’t one better than the other.
For your usecase you could use either.
- For Rhasspy take a look at: GitHub - rhasspy/rhasspy-hermes-app: Helper library to create voice apps for Rhasspy in Python using the Hermes protocol
- For Project Alice: Introduction to Skill Development | ProjectAlice
Hope i could help at least a bit.
Thanks for the reply. But it’s still not very clear to me what the differences are. Is a major difference that Alice is sorta higher level in that you develop “Skills” versus lower level coding? Both of them you seem to be saying offer access to a whole “voce assistant pipeline”, right? I think Alice also uses Hermes, (or maybe that was Mosquitto, I don’t know). Again, I’m not looking for what is “better”, just what is different between the two. Can they both use different speech recognition backends?
Can I use both of them running on a PC or x86 VM for development and testing or do I have to run Rhasspy on a Raspberry Pi like I do with Alice?
That is indeed the case. Also, Alice is based on Snips (at least is was).
That is why Alice uses Hermes protocol. Rhasspy has some initiatives for skills, but they are scattered and there is no skills store or something.
Rhasspy first did not (well, a bit), but later a full protocol support because Snips was bought by Sonos.
No, Alice uses Snips and as far as I know no other system is used.
I don’t know about Alice, but Rhasspy has multple installation methods. One being Docker so available on a wide variety of systems.
what does this mean that Rhasspy has “full protocol” support? thx
Also is the Rhasspy ASR as good as Snips was and Alice is?
And TTS is basically the same quality too?
Also it looks like Rasspy has more languages support than Alice anyway, to start English is fine for now.
Nothing really as its not a standard just an implementation of Hermes that Snips invented that honestly has me unimpressed.
It took a whole load of effort to implement and Rhasspy does little more or benefits little more than before it was implemented and all that time could of maybe provide a core selection of skills.
I think both use Hermes audio IMO that totally horrid method of broadcasting raw wav everywhere through MQTT.
I think ASR its a choice GoogleAsr, DeepSpeechAsr, SnipsAsr, PocketSphinxAsr. Dunno what SnipsAsr is like think its a kaldi base like Rhasspys.
TTS is also similar choice but Rhasspy has the superior Larynx.
The discussions on the Alice forum are practically dead and think you get mention here in desperation to drum up support.
Snips had a protocol they named the Hermes protocol.
It is actually a system of topic which interact with eachother.
Basically a good system, you can read some more here:
Here is a nice pictue of how it interacts with the different services
In Rhasspy you can choose various ASR and TTS, so there is no straight answer to it.
You can choose and ASR or TTS which is better, but there are also methods available which are not as good
In general, I think Rhasspy is better.
Indeed Rhasspy support a huge amount of languages, while Alice maybe a couple
Thanks. Well at least that gives me enough confidence to install Rhasspy and try it out.
Alice can use different speech recognition backends as well. I did not really look into Project Alice much, since I stopped developing Project Alice about 1.5 years ago. However back then it supported multiple backends for ASR and TTS (I think it only supported the Snip NLU, but things might have changed).
Rhasspy uses Hermes for communications and has each part of the voice assistant in a separate service. When using a different backend for one of the parts it is simply using a different service. This makes it very straightforward to swap these services out, without having any understanding of the rest of the components. Skills in Rhasspy simply listen the corresponding MQTT topic to react. Each of the skills can simply run as a service as well. Skill authors are generally free to use any programming language which gives them access to these MQTT topics. However it makes it very hard to have something like a central skill store, since skills can be deployed and written in so many different ways. The purpose of the web interface in Rhasspy is only for the configuration of the Rhasspy services.
Project Alice uses a single application for all the parts of the voice assistant. This makes it hard to use any backend which is not supported, since it would generally require a fork of the whole application. Skills in Project Alice are directly imported into this application. So they have to be written in Python and use the API of Project Alice. Generally Project Alice will go through all skills in an alphabetical order and ask them through a callback, whether they want to respond to this intent.
This has the following advantages:
- when no skill responds it can simply use a fallback skill
- skills can directly access the internal state of the Assistant
- all skills follow a similar design, so it is trivial to build a skill store for them
And these disadvantages:
- When skill a responds to an intent, skill b will not know this intent got triggered
- Skills can directly access a ton of information about internal state and as far as I remember the whole assistant is run with admin permission. So this is a security nightmare for untrusted skills, which is not trivial to fix. Project Alice solves this somewhat by having the Skills of the skill store maintained in their own organisation. However this does not scale very well and you generally want to run things with as few permissions as possible.
- skills can only be written in Python, so integrations with external systems like Home Assistant are much more bothersome. It would need e.g. a skill which converts these internal messages to mqtt messages and forwards them to an external system. Back when I worked on Project Alice I worked on an integration with node red, so skills can be directly written in node red through the web interface as well. I do not know whether this made it into Project Alice by now.
The web interface of Project Alice is not only used for settings, but provides e.g. access to the skill store and allows skills to show widgets.
My general opinion is that Rhasspy is better suited for anyone who wants to play around with many of the settings, since it makes it much more simple to replace or change parts. This was generally the reason I started to use it instead of Project Alice. Project Alice on the other hand tries to make it simple for people to get started. It tries to provide a complete voice assistant eco system with things like the skill store. However it even provides some kind of home automation integration e.g. for sensors over ZigBee (I personally did not like this, because for these things existing tools like Home Assistant are much better suited).
Note that I did not really look into Project Alice in the last 1.5 years, so some of the things might have changed/improved.
Wow thanks much for this reply. Very helpful.
Ah ok, l did not dive very deep into the project . Mainly because it does not support Dutch.
As developer of Jaco I would like to mention a third option. Jaco is somewhat between Alice and Rhasspy. Similar to Alice it’s more focused on extension with skills. Similar to Rhasspy the backend is very modular and allows switching services, even though is a bit more complicated than with Rhasspy, since only one service per module is officially supported (means less work for the developers:) and doesn’t has Rhasspys cool webinterface. Installation should be as easy/complicated as the others and should take about 1-2h depending on your hardware and internet speed.
One important key part of Jaco is the skill architecture. It allows building skills with arbitrary third-party tools and almost no restrictions for developers. For improved security, each skill is encapsulated in its own container. The skills can be developed for multiple languages and be shared through and official store. In difference to Alice the complete “intelligence” of the assistants comes from the installed skills, which makes Jaco more lightweight.