Rhasspy Announcements

Hi, everyone! Rhasspy author here. I plan to make announcements about new versions/features of Rhasspy in this thread.

If we get a sub-topic, hopefully this thread can be moved there :slight_smile:

12 Likes

Version 2.4.12

  • The fsticuffs intent recognizer is now based on the rhasspy-nlu Python library.
    • You can use rhasspy-nlu to parse sentences.ini files and do intent recognition without need a complete Rhasspy installation
    • If you apt-get install libfst-tools and build opengrm, you can also use rhasspy-nlu to generate ARPA language models

New Syntax

With rhasspy-nlu, there is support for additional substitution syntax in sentences.ini:

  • Groups/Alternatives can be substituted:
    • (downstairs | play room | kids room):den – always output “den”
  • Optionals can be substituted:
    • turn the [bedroom]:upstairs light off – always output “turn the upstairs light off”

Since you can use this syntax in slots lists, you can get slot value synonyms:

{
    "slotName": ["(value 1 | value 2 | ...):output", ...] 
}
5 Likes

WOW!

This looks like a great project! My only wish, and this certainly isn’t a complaint…

A Google Home Mini or Echo Dot 3 can be had for $25 in the US and comes in a nice pretty (objectively) package with good microphones and decent speakers. Even if I offloaded the “processing” part to a dedicated server, I’d be hard pressed to find the parts required for the rest of the build for less than $25, and, at the lowest prices, it certainly won’t look as nice.

BUT… Rhasspy supports Remote Audio Streams. So… what would be ideal is some kind of hack for Echo/Google devices that will turn them into nothing but remote microphones/speakers all to be funneled into a central server (Rhasspy) to handle. This could be an app/skill/whatever that runs on the device (with some kind of watchdog on a server to ensure the app stays running) or a complete firmware replacement that disabled the OEM functionality of the device.

Do you know of any projects along these lines that are making any headway?

4 Likes

Hi @swiftlyfalling, welcome. I don’t know of any firmware projects for transforming a Mini or a Dot; seems like a good idea given the cost of the hardware. Of course, those particular pieces of hardware cost so little because of the “agreement” you enter into with Google/Amazon in order to use them :stuck_out_tongue:

Version 2.4.13

  • The snowboy wake word system now supports multiple wake words
    • The sensitivity setting is now a string, so you can pass “0.5,0.5” for jarvis.umdl
  • Numbers should now be automatically replaced in sentences.ini
    • Something like (1 | 2 | 3) will be transformed to (one:1 | two:2 | three:3)
    • See num2words to check if your language is supported
  • Full Rhasspy version number is displayed in the web interface
    • A new /api/version endpoint is now available too
  • Fixed some bugs related to slots/optionals in sentences.ini
  • Better documentation for rhasspy-nlu

pulled newest image, container is started, but can’t access GUI.

Traceback (most recent call last):,
  File "app.py", line 14, in <module>,
    from quart import (,
  File "/usr/local/lib/python3.6/dist-packages/quart/__init__.py", line 4, in <module>,
    from .app import Quart,
  File "/usr/local/lib/python3.6/dist-packages/quart/app.py", line 16, in <module>,
    from .asgi import ASGIHTTPConnection, ASGIWebsocketConnection,
  File "/usr/local/lib/python3.6/dist-packages/quart/asgi.py", line 5, in <module>,
    from .datastructures import CIMultiDict,
  File "/usr/local/lib/python3.6/dist-packages/quart/datastructures.py", line 47, in <module>,
    class CIMultiDict(_WerkzeugMultidictMixin, AIOCIMultiDict):  # type: ignore,
TypeError: type 'multidict._multidict.CIMultiDict' is not an acceptable base type

Did something change significantly enough that I need to clear my configuration folder and start from scratch? (backing up sentences.ini and custom words is probably all I really need).

Nope, create a new empty configuration directory and spun up a new container - same error.
Let me know what testing I can do for you to help figure out the problem.

Thanks,
DeadEnd

1 Like

It looks like one of Rhasspy’s dependencies (quart) has a dependency (multidict) that was updated and is now incompatible. I’m forcing the older version in my requirements.txt file for now and re-building.

1 Like

ah, that makes sense - thanks for the quick reply and fix.
I’ll pull the new image when it’s finished (Docker Hub isn’t updated yet).

DeadEnd

I should have listened to @koan and set up continuous integration :man_facepalming:

2 Likes

I am checking out the repo’s and it looks like they may have fixed the error I found already in MultiDict:

https://github.com/aio-libs/multidict/issues/416

So possibly the issue is resolved, but would need to be tested (as always).

DeadEnd

Absolutely. And, in general, even in “less serious” automators (i.e. those who are happy just using whatever a Google Home can do) I’ve heard a lot of rumbling about privacy and trust issues and people wanting to get away from that. The trouble, as always, is finding a replacement.

What you’ve got here looks like a GREAT start to a replacement for the software. Now, if we can find a hardware replacement that is straight forward enough, we’ll really be on to something.

Minis and Dots alike can be used as a Bluetooth speaker. I’ve never used this functionality, but I assume to includes microphones and speakers. I wonder if a Raspberry PI running in proximity to the Minis/Dots could use a bluetooth connection to the device to be able to use its microphones and speakers. It wouldn’t turn off the default software, but, it’d be a start.

1 Like

Community Site

Rhasspy now has its own Discourse site at https://community.rhasspy.org and a full category for Announcements.

I will continue to post announcements here as well, but I encourage Rhasspy users to try the new site and provide feedback. I’m hoping this will bring in people who want to use Rhasspy, but with something other than Home Assistant.

3 Likes

Version 2.4.14

Lots of improvements in version 2.4.14!

Split Sentences

You can now break your sentences.ini into multiple files. Any .ini files in the intents directory of your profile should be included when you train.

New Home Assistant Components

There is now a Home Assistant intent recognition system and text to speech system. These use your existing Home Assistant conversation and tts platforms. Additionally, you can use Home Assistant for speech to text like Ada does.

wakeId/siteId in intent

The wake word that triggered the current Rhasspy session and the MQTT site_id are now included in the intent JSON (wakeId and siteId). These are available in the MQTT and Websocket messages as well.

MaryTTS emulation and other TTS options

Rhasspy can pretend to be a MaryTTS server. If you use the marytts component in Home Assistant, point it at your Rhasspy server (e.g., http://localhost:12101). Rhasspy will catch any GET requests to /process and forward them to your configured TTS system.

The /api/text-to-speech endpoint now supports ?voice=<VOICE> and ?language=<LANG> query arguments that let you switch languages temporarily for one TTS call.

Documentation

The documentation now contains a tutorials and a reference section.

3 Likes

Version 2.4.15

I’ve pushed version 2.4.15 to Docker and the Hass.IO repository. This release mostly contains bugfixes, but there are a few new features to report.

  • Preliminary support for Pi Zero
    • I’ve successfully run Rhasspy on a Pi Zero (PS3 eye USB mic)!
    • Only the virtual environment option is currently supported (does anyone know of a good armv6l Docker image?)
    • Kaldi is not working yet, so only profiles with Pocketsphinx will work
  • Play an “error” sound when an intent isn’t recognized
    • See the “Intent Recognition” section in Settings to disable this
    • Customize the sound in the “Sounds” section
  • Add _text and _raw_text slots to Home Assistant events
    • Lets you access the ASR transcription in your HA automations
  • Disable wake word detection while text-to-speech is speaking
    • See “Text to Speech” section in the Settings tab to re-enable
  • Using json5 to parse profile.json because I keep forgetting dangling commas
  • Lots of small fixes
    • ngrammake errors during training
    • Pop sound with picotts
    • Try to recover from failure to initialize PyAudio
    • Don’t open/close microphone every wake/intent cycle

Most of the work since this last Rhasspy version has been on breaking it up into individual services. Once that’s complete, it will be easier to run pieces of Rhasspy across multiple devices. And, hopefully, it will be easier for developers to contribute fixes or new features :slight_smile:

3 Likes

Great work, but one blocking issue is not solved here:
401 Client Error: Unauthorized for url: http://hassio/homeassistant/api/events/rhasspy_XXX

It has to do with the HASSIO_KEY var, but I was not able to solve it yet. So right now, no events will go to Home Assistant, rendering Rhasspy useless for it. There is already a github issue for it.

The same! But if you use as a workaround - URL - http://[hass.local.ip]/homeassistant and long-live generated token - everything is working!

1 Like

Could you, please, add a changelog on Hass.io add-on detail page! Like here!

No, because I have ssl. Tried it, But did not work

I’m sorry, @Romkabouter. I didn’t realize this hadn’t been resolved. I’ll install a fresh copy of Hass.io and see if I can re-create the problem.

I thought switching over to the HASSIO_KEY variable would have fixed it, since it seemed like the usual authentication header stopped working at some point. I wonder if there’s some extra thing I have to include in the config.json now?

I should be able to do that :+1:

1 Like