Rhasspy 2.5.8 Released

Hi everyone :wave:

With the holidays coming up, it seems like a good time to push out a new release. Unlike 2.5.7, there are quite a few new things in 2.5.8 to go over.

Thanks to everyone who contributed, and to the many community members who are helping us build a great voice assistant for everyone :rainbow: . As always, please open GitHub issues so we can squash those bugs :bug:

Larynx TTS

This release finally incorporates the Larynx text to speech system, which is a fork of MozillaTTS. The goal of this TTS system is to provide high quality voices for as many languages as possible, replacing the need for Google Wavenet.

Once it gets warmed up, Larynx runs well on x86_64 systems (NUC, etc.), and OK on a Pi 4. I wouldn’t recommend trying to use it on a Pi 3 or 2. It uses PyTorch on the CPU, so there may be room for improvement with a GPU someday in the future.

Out of the box, I have voices for Dutch, German, French, Spanish, and Russian. Many more are currently in progress, including English, Swedish, Portuguese, and Vietnamese :slight_smile:

New Kaldi STT Models

In line with the Master Plan, I’ve trained up Kaldi speech to text models for Italian, Spanish, French, and Russian. You can use these now in Rhasspy by selecting Kaldi in the appropriate profile.

More languages are coming as I locate public speech data. There are also several efforts underway to crowd-source this data from the Rhasspy community and other places. If you know of a good dataset or would like to volunteer, please let me know!

Volume Everywhere

Many users have asked for the ability to adjust Rhasspy’s output volume, so I’ve made an effort to add this in a way that (I think) makes the most sense.

In the Settings page, you can now independently set the volumes of:

  • The audio output service (aplay)
  • The text to speech service
  • The dialogue feedback sounds (beeps)

On the main web UI page, there is also a handy ā€œSet Volumeā€ button. If you leave the site ID text box next to it blank, it will change the volume on whatever system you’re using. But you can also put specific site IDs in the box and change the volumes of multiple satellites at once (this uses a new MQTT message).

Lastly, there’s a new /api/set-volume HTTP endpoint where you can programmatically set the volume. It takes a ?siteId=site1,site2,.. parameter too if you want to set multiple site ids. Oh, and /api/text-to-speech now has a ?volume=0.5 parameter if you want just one utterance to be quiet.

Complete Changelog

Added

  • Russian Kaldi profile and Larynx TTS voice
  • Spanish Kaldi profile and Larynx TTS voice
  • French Kaldi profile and Larynx TTS voice
  • Italian Kaldi profile
  • German Larynx TTS voice
  • Volume scale (0-1) for feedback sounds and TTS
  • rhasspy/asr/setVolume MQTT message and /api/setVolume HTTP endpoint
  • rhasspy/asr/recordingFinished MQTT message sent immediately after silence detection
  • Satellite site ids to intent handling settings in web UI
  • Group separator for co-located satellites (dialogue.group_separator)
  • num2words support for Swedish (thanks Bostrom!)

Fixed

  • Argument list for sound output command system (jrouly)
  • Expand environment variables in TLS ca_certs
  • spn silence phone in Swedish profile
  • Use callback API in PyAudio to avoid buffer overrun
  • HTTP API JSON should not be forced to ASCII

Changed

  • Default Kaldi language model type is now text FST instead of arpa
20 Likes

Great work! Hope to try it soon :slight_smile:

1 Like

Loaded it up on my server and satellites and no issues so far. Awesome work! Thank you.

I did however notice one of the new features to set the volume of the ā€œbeepsā€ doesn’t seem to be working.
Setting the aplay volume on the Satellite seems to affect the beeps and tts, but changing the volume of the ā€œSoundsā€ on the Satellite (even down to .1) doesn’t seem to make an audible difference.

Speaking of the beeps, is there a way to simply disable some or all? And if the Wake WAV is disabled, will the delay be shorter before it begins listening for the command?

1 Like

Hmmmm, I’ll take a look. Thanks for the feedback.

If you delete the file name in the web UI, it should stop playing that WAV file. There should be shorter delay too, since there’s no worry of the mic picking up the beeps as speech.

1 Like

Thank you very much for the new version!

I tried Larynx TTS (de-thorsten) on my Server (Synology Intel NAS) with a satellite setup, but I always get an TimeOut Error:

[ERROR:2020-11-20 20:49:28,093] rhasspyserver_hermes: 
Traceback (most recent call last):
  File "/usr/lib/rhasspy/.venv/lib/python3.7/site-packages/quart/app.py", line 1821, in full_dispatch_request
    result = await self.dispatch_request(request_context)
  File "/usr/lib/rhasspy/.venv/lib/python3.7/site-packages/quart/app.py", line 1869, in dispatch_request
    return await handler(**request_.view_args)
  File "/usr/lib/rhasspy/rhasspy-server-hermes/rhasspyserver_hermes/__main__.py", line 1282, in api_train
    result = await core.train()
  File "/usr/lib/rhasspy/rhasspy-server-hermes/rhasspyserver_hermes/__init__.py", line 461, in train
    timeout_seconds=self.training_timeout_seconds,
  File "/usr/lib/rhasspy/rhasspy-server-hermes/rhasspyserver_hermes/__init__.py", line 971, in publish_wait
    result_awaitable, timeout=timeout_seconds
  File "/usr/lib/python3.7/asyncio/tasks.py", line 449, in wait_for
    raise futures.TimeoutError()
concurrent.futures._base.TimeoutError

How can I get more information what is not working? Is there somewhere more debug info?

Thank you!

1 Like

You’re welcome! Do you need any messages from rhasspytts_larynx_hermes in the log? It can take some time for MozillaTTS to load the model; you should see a message that it successfully created a synthesizer.

Unfortunately I don’t see such a log.
Only:

[DEBUG:2020-11-20 23:00:00,771] rhasspyprofile.download: Skipping tts/larynx/de/thorsten/vocoder/config.json (/profiles/de/tts/larynx/de/thorsten/vocoder/config.json)
[DEBUG:2020-11-20 23:00:00,770] rhasspyprofile.download: Skipping tts/larynx/de/thorsten/vocoder/checkpoint_500000.pth.tar (/profiles/de/tts/larynx/de/thorsten/vocoder/checkpoint_500000.pth.tar)
[DEBUG:2020-11-20 23:00:00,768] rhasspyprofile.download: Skipping tts/larynx/de/thorsten/scale_stats.npy (/profiles/de/tts/larynx/de/thorsten/scale_stats.npy)
[DEBUG:2020-11-20 23:00:00,767] rhasspyprofile.download: Skipping tts/larynx/de/thorsten/config.json (/profiles/de/tts/larynx/de/thorsten/config.json)
[DEBUG:2020-11-20 23:00:00,766] rhasspyprofile.download: Skipping tts/larynx/de/thorsten/checkpoint_380000.pth.tar (/profiles/de/tts/larynx/de/thorsten/checkpoint_380000.pth.tar)
[DEBUG:2020-11-20 23:00:00,764] rhasspyprofile.download: text_to_speech.system larynx larynx = True

OK, do you see files in your profile under the tts/larynx directory?

Yes:

/de/tts/larynx$ ls -Ra
.:
. … cache de

./cache:
. …

./de:
. … thorsten

./de/thorsten:
. … checkpoint_380000.pth.tar config.json scale_stats.npy vocoder

./de/thorsten/vocoder:
. … checkpoint_500000.pth.tar config.json

@synesthesiam I have my Rhasspy server running as a Home Assistant Add-On.

There is currently no option to update this from 2.5.7.2 in HA.

Does it typically take a while to filter through to HA?

It is currentlt already available, but is it renamed to Rhassy Assistant, removing the 2.4 version.
You can savely install that and remove the Rhasspy 2.5, but first make a copy of the configuration

Do not worry, your profiles folder on the share will not be deleted

After uninstalling Rhasspy Assistant 2.5 and installing the new Rhasspy Assistant (pointing to 2.5.8), when you reload the addons the 2.5 will be gone :slight_smile:

2 Likes

@synesthesiam Congratulations! Thank you for your work!

Seems something broken in downloading Kaldi base_dictionary.txt
Can’t download https://raw.githubusercontent.com/rhasspy/ru_kaldi-rhasspy/raw/master/base_dictionary.txt.gz - 404: Not Found

You’re welcome :slight_smile:

Ah, I see what happened here. I’ll get a fix pushed out for this soon.

@Thargor, silly question: have you tried completely restarting Rhasspy? For some reason, the voice didn’t work for me until I did this.

But I do have this in my console log:

[DEBUG] {'de-thorsten': {'model_path': PosixPath('/home/hansenm/.config/rhasspy/profiles/de/tts/larynx/de/thorsten/checkpoint_380000.pth.tar'), 'config_path': PosixPath('/home/hansenm/.config/rhasspy/profiles/de/tts/larynx/de/thorsten/config.json'), 'vocoder_path': PosixPath('/home/hansenm/.config/rhasspy/profiles/de/tts/larynx/de/thorsten/vocoder/checkpoint_500000.pth.tar'), 'vocoder_config_path': PosixPath('/home/hansenm/.config/rhasspy/profiles/de/tts/larynx/de/thorsten/vocoder/config.json')}}
[DEBUG] Creating Larynx synthesizer (de-thorsten)...
[INFO] Created synthesizer for de-thorsten

Rhasspy runs on a Synology NAS inside Docker. You are right, the Docker log shows:

If I try to say ā€œDas ist ein Testā€ from the Satellite-Webfrontend, i get the following log:

Seems like there is a problem with an ā€œillegal instructionā€ and the process crashed …
Any Idea what could be the reason?

OK, I’m guessing that the CPU in your Synology does not support AVX instructions. I’m using the official PyTorch CPU wheel for x86_64, which is probably compiled for AVX.

I may try and compile my own non-AVX wheel. It sucks that the moment you step into PyTorch/Tensorflow land, it suddenly really matters which year your CPU was made or what tier it is.

1 Like

Yes you are right, it is an Celeron J3455 without AVX. At least, this mystery is solved.

2 Likes

Many thanks for that !!

I’ve integrated it into Jeedom plugin, works perfect !
We now have to set device volume to 100% when raspberry start :smile:
amixer -c 0 set Playback 100%

2 Likes

Hi

First post here so apologies if I’ve messed something up.
I’ve just updated the deb package from 2.5.7 to 2.5.8. When I run ā€œrhasspy -p enā€ I now get this error…

Starting up…
Using virtual environment at /usr/lib/rhasspy/.venv
python3: error while loading shared libraries: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory

On the latest Ubuntu (20.10) python is 3.8. I’ve tried sym linking the 3.8 lib to that file but then I just get more errors…
symbol lookup error: python3: undefined symbol: _Py_UnixMain

Is this something anyone else has come across or has a workaround for ?

1 Like

Hi @TotalSpaceshipguy, thanks for posting :slight_smile:

Can you try apt-get installing libpython3.7 and see if that fixes it? I tried a different method for packaging the .deb files this time around, and I may have missed a requirement.

Hi

Thanks for the quick reply :slight_smile: That didn’t work I’m afraid. I’ve tried searching in the package manager (synaptic) for that and it shows an old package called libpython3.7-minimal, but that doesn’t install and just gives this message…

Package libpython3.7-minimal has no available version, but exists in the database.
This typically means that the package was mentioned in a dependency and never uploaded, has been obsoleted or is not available with the contents of sources.list

I’ve looked on https://packages.ubuntu.com/search too, but libpython3.7 hasn’t shipped since the bionic release (18.04)

I could try and force install the old 3.7 packages but I’m not sure if this will break something else.

OK @TotalSpaceshipguy, I’ve uploaded new .deb files that include libpython3.7m.so.1.0. I’m hoping this will be enough to make it work :slight_smile:

@synesthesiam
Thanks for your time looking into this, it’s much appreaciated. I’ve just re-installed, and now when running ā€œrhasspy -p enā€ I get this output…

Starting up…
Using virtual environment at /usr/lib/rhasspy/.venv
Could not find platform independent libraries
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to [:<exec_prefix>]
Fatal Python error: initfsencoding: Unable to get the locale encoding
ModuleNotFoundError: No module named ā€˜encodings’

Current thread 0x00007f3595668740 (most recent call first):
/usr/lib/rhasspy/bin/rhasspy-voltron: line 123: 12610 Aborted (core dumped) ā€œ${this_dir}/voltron-runā€ python3 -m rhasspysupervisor --profile ā€œ${profile_name}ā€ --user-profiles ā€œ${user_profiles}ā€ --docker-compose ā€˜ā€™ ā€œ${extra_supervisor_args[@]}ā€ --debug

1 Like

I am doing a fresh install, using git and french settings.
I get this error :

Successfully installed torch-1.6.0a0
cd ā€œ/root/rhasspy/rhasspy-tts-larynx-hermes/larynx/TTSā€ &&
ā€œ/root/rhasspy/.venv/bin/pythonā€ -m pip install -r requirements.txt &&
ā€œ/root/rhasspy/.venv/bin/pythonā€ -m pip install . &&
cd ā€œ/root/rhasspy/rhasspy-tts-larynx-hermes/larynx/TTS/TTS/tts/layers/glow_tts/monotonic_alignā€ &&
ā€œ/root/rhasspy/.venv/bin/pythonā€ setup.py install &&
cd ā€œ/root/rhasspy/rhasspy-tts-larynx-hermes/larynxā€ &&
ā€œ/root/rhasspy/.venv/bin/pythonā€ -m pip install -r requirements.txt
/bin/bash: ligne 0 : cd: /root/rhasspy/rhasspy-tts-larynx-hermes/larynx/TTS: Aucun fichier ou dossier de ce type
make: *** [Makefile:168: install-rhasspy] Error 1

I’ve succeed in downloading manaully these files :

cd ā€œ/root/rhasspy/rhasspy-tts-larynx-hermes/ā€
mkdir larynx
cd larynx
wget https://github.com/rhasspy/TTS/archive/v0.2.0.tar.gz
tar xvzf v0.2.0.tar.gz
mv TTS-0.2.0 TTS

1 Like

I have the same problem. (synology CPU without AVX, rhasspy running in a docker container)
just commenting and looking forward for a fix.

2020-11-30T10:35:40.304586703Z [DEBUG:2020-11-30 11:35:40,304] rhasspyserver_hermes: -> TtsSay(text='es wird alles gut', site_id='base', lang=None, id='4664e7f3-93e7-4f0d-8d9c-541e728ad513', session_id='', volume=1.0),
2020-11-30T10:35:40.305337930Z [DEBUG:2020-11-30 11:35:40,304] rhasspyserver_hermes: Publishing 139 bytes(s) to hermes/tts/say,
2020-11-30T10:35:40.310632898Z [DEBUG] <- TtsSay(text='es wird alles gut', site_id='base', lang=None, id='4664e7f3-93e7-4f0d-8d9c-541e728ad513', session_id='', volume=1.0),
2020-11-30T10:35:40.310860571Z [DEBUG] Synthesizing 'es wird alles gut' (voice=de-thorsten),
2020-11-30T10:35:40.430902753Z [DEBUG] Number converter regex: ^-?\d+([,.]\d+)*\w+$,
2020-11-30T10:35:40.480057241Z [DEBUG] Loading lexicon from /usr/lib/rhasspy/.venv/lib/python3.7/site-packages/gruut/data/de-de/lexicon.txt.gz,
2020-11-30T10:35:46.437961739Z [DEBUG] Loaded pronunciations for 277911 word(s),
2020-11-30T10:36:10.337892268Z [ERROR:2020-11-30 11:36:10,337] rhasspyserver_hermes: ,
2020-11-30T10:36:10.338345076Z Traceback (most recent call last):,
2020-11-30T10:36:10.338405245Z   File "/usr/lib/rhasspy/.venv/lib/python3.7/site-packages/quart/app.py", line 1821, in full_dispatch_request,
2020-11-30T10:36:10.338527574Z   File "/usr/lib/rhasspy/.venv/lib/python3.7/site-packages/quart/app.py", line 1869, in dispatch_request,
2020-11-30T10:36:10.338473305Z     result = await self.dispatch_request(request_context),
2020-11-30T10:36:10.338588765Z     return await handler(**request_.view_args),
2020-11-30T10:36:10.338639978Z   File "/usr/lib/rhasspy/rhasspy-server-hermes/rhasspyserver_hermes/__main__.py", line 1661, in api_text_to_speech,
2020-11-30T10:36:10.338773246Z     results = await asyncio.gather(*aws),
2020-11-30T10:36:10.338847683Z   File "/usr/lib/rhasspy/rhasspy-server-hermes/rhasspyserver_hermes/__main__.py", line 1647, in speak,
2020-11-30T10:36:10.338960007Z   File "/usr/lib/rhasspy/rhasspy-server-hermes/rhasspyserver_hermes/__init__.py", line 599, in speak_sentence,
2020-11-30T10:36:10.338912745Z     volume=volume,,
2020-11-30T10:36:10.339014832Z     handle_finished(), messages, message_types,
2020-11-30T10:36:10.339062468Z   File "/usr/lib/rhasspy/rhasspy-server-hermes/rhasspyserver_hermes/__init__.py", line 971, in publish_wait,
2020-11-30T10:36:10.339116392Z     result_awaitable, timeout=timeout_seconds,
2020-11-30T10:36:10.339163508Z   File "/usr/lib/python3.7/asyncio/tasks.py", line 449, in wait_for,
2020-11-30T10:36:10.339268186Z concurrent.futures._base.TimeoutError,
2020-11-30T10:36:10.339214924Z     raise futures.TimeoutError(),
2020-11-30T10:36:20.410693723Z 1606732580: Socket error on client auto-86BA0B66-1B02-FDC0-8C9D-5881914B6E7E, disconnecting.,
2020-11-30T10:36:20.411697076Z /usr/lib/rhasspy/rhasspy-tts-larynx-hermes/bin/rhasspy-tts-larynx-hermes: line 15:   463 Illegal instruction     (core dumped) python3 -m rhasspytts_larynx_hermes "$@",
2020-11-30T10:29:32.858720497Z [INFO] Created synthesizer for de-thorsten,
2020-11-30T10:29:30.458951354Z [DEBUG] Creating Larynx synthesizer (de-thorsten)...,
2020-11-30T10:29:32.859498901Z [DEBUG] Using selector: EpollSelector,
2020-11-30T10:29:32.860020447Z [DEBUG] Connecting to localhost:12183,
2020-11-30T10:29:30.458745169Z [DEBUG] {'de-thorsten': {'model_path': PosixPath('/profiles/de/tts/larynx/de/thorsten/checkpoint_380000.pth.tar'), 'config_path': PosixPath('/profiles/de/tts/larynx/de/thorsten/config.json'), 'vocoder_path': PosixPath('/profiles/de/tts/larynx/de/thorsten/vocoder/checkpoint_500000.pth.tar'), 'vocoder_config_path': PosixPath('/profiles/de/tts/larynx/de/thorsten/vocoder/config.json')}},
2020-11-30T10:29:30.457880211Z [DEBUG] Namespace(cache_dir='/profiles/de/tts/larynx/cache', config=[], debug=True, default_voice='de-thorsten', host='localhost', log_format='[%(levelname)s:%(asctime)s] %(name)s: %(message)s', model=[['de-thorsten', '/profiles/de/tts/larynx/de/thorsten/checkpoint_380000.pth.tar']], password=None, play_command=None, port=12183, site_id=['base', 'pantheon2', 'kallisto', 'base'], tls=False, tls_ca_certs=None, tls_cert_reqs='CERT_REQUIRED', tls_certfile=None, tls_ciphers=None, tls_keyfile=None, tls_version=None, username=None, vocoder_config=[], vocoder_model=[['de-thorsten', '/profiles/de/tts/larynx/de/thorsten/vocoder/checkpoint_500000.pth.tar']], volume=1.0),
2020-11-30T10:36:20.411985739Z 2020-11-30 11:36:20,411 INFO exited: text_to_speech (exit status 132; not expected)
2 Likes

Has the Docker image for the Raspberry Pi Zero been updated? I just used ā€œdocker pull --platform linux/arm/v6 rhasspy/rhasspyā€ to pull for my Pi Zero and after starting the container the web interface still says 2.5.7

1 Like

Dockerhub is showing it as having been updated 5 days ago. Did you try a CTRL + R refresh of the web UI?

Thanks, @bsheepdiy

I’m going to just include Larynx as a git submodule in the Larynx TTS service. Testing it out now.

I’m curious, @TotalSpaceshipguy, how would you (and others) feel about an AppImage instead a Debian package?

I just spent like half a day wondering why it does not work on my zero …

1 Like

I’ve tried to make this clear in the docs, but it’s just terribly unintuitive. I don’t understand why Docker specifically does this just for armv6l. I believe it’s because the Pi Zero lies about it’s architecture, reporting armhf when it’s really armel.

I just check in another browser and it still shows 2.5.7.
I’ll try doing another upgrade and see what happens.

yes. it is very clear in the docs indeed - so no hard feelings :wink:
I have setup two satellite on rpi4 before and didn’t thought that it could have something todo with the wrong image. Also most of the time was actually waiting anyways…

1 Like

@synesthesiam

I personally don’t mind an appImage package, and they appear to be less hassle than ubuntu snaps!. This would also be a good way to get Rhasspy onto other non Debian distros, rather than having to build specific packages for each package manager. It’s also probably a lot easier to deploy than docker, but I have no experience of that, which is why I went down the native package route to start with.

Purists could argue that applications should always be installed and managed by the package manager, and the appImage approach is just wasting space bundling dependencies that are already on the system anyway as part of the pre-requisites.

If you can spend less time on one appImage to rule them all, instead of creating and testing individual packages for multiple distros, and that gives the devs more time to work on the actual product, then this can’t be a bad thing in my humble opinion :slight_smile:

I’m happy to do testing on the app Image if you create one.

Very weird. Is it possible the 2.5.7 container is still running, or that you have that version pinned?

I removed the 2.5.7 container with a ā€˜docker rm’ command.
I think I did something wrong when I pulled 2.5.8 and didn’t actually pull it.

So I did another pull yesterday and tried to install it. I ran into an error when I exec my docker run command.

I created a thread in the help section of the forum about the error.

1 Like

Any progress on English for Larynx @synesthesiam? I’ve been using cloud-based TTS for a while, so I’m excited to give Larynx a try!

Hi @hawkeye217

Yes, I’m still working on an English voice. I’ve prioritized some other voices from volunteers first, so it’s still got a few days of training left to go :slight_smile:

1 Like

Hi @synesthesiam
I see you have a few questions to answer but maybe you could help me too? I’m running rhasspy inside a docker container on an Ubuntu VM (KVM processor x64, proxmox) on a NUC with an Intel Core i5-8259U. And I’m having the same issue (I think). Do you have experience with proxmox or enableing AVX on a MV?

Many thanks!

@synesthesiam Successfully playing with Larynx and Russian language! Thank you!
Have few questions:

  1. Does Larynx could speech numbers?! Can’t figure out. Because in my case only words are spoken but not int(1,2,3 etc).
  2. Can we hope for a female voice of Russian Larynx? As I could see female models are available.

PS: Seems Porcupine updates to V1.9 - added some new words to RPi platform.

1 Like

Hi @nordeep, glad Larynx is working for someone :wink:

Yes, it looks like I just made a mistake with a config file for Russian. I’ve fixed it on my end, and it will be in the next update.

I should be able to do that. I have some female Russian audio from the same dataset as the male audio.

Thanks! I’ll try and get this updated soon. Here’s the Github issue: https://github.com/rhasspy/rhasspy/issues/139

2 Likes

@synesthesiam Thank you!
Will wait for updates. Not so convenient without ability to speech numbers :grinning:

@synesthesiam If it’s not difficult, could you give some recommendations - how to organize conversation between User <-> Rhasspy <-> HA?
Just simple example:

User - ā€œRhasspy, turn off the lights everywhere.ā€
Rhasspy - ā€œOk, but this intent requires confirmationā€
User - ā€œRhasspy, turn off the lights everywhere.ā€
Rhasspy - ā€œTurning off lights everywhere.ā€
HA - light.turn_off group.all_lights

At the moment I can imagine complex configuration with HA actions like, rest_commands, turn_on/off some input_boolean and so on. And I’m not completely sure if this will work. :laughing:

--------- Edit -----------
Scratch everything I said below.
I was trying to apply the settings on the Satellite, but it appears to work as stated when the volume is set or the wav is removed on the base.
The wav files and sound volume don’t apply on the individual satellite, although I had made the assumption it would since I am using a local wake word.

------ End Edit ----------

Just got a chance to try this and it’s still playing. I removed the wake and recorded lines from the web UI, saved and restarted. I also tried power cycling it and verified in the config…

"sounds": {
"aplay": {
    "device": "default:CARD=seeed2micvoicec"
},
"recorded": "",
"system": "aplay",
"wake": ""
},

I left the error wave populated, but I don’t see it anywhere in the config.
I also noticed the overall volume including the wake sounds seems to be controlled by the volume under the audio playing section. The volume under ā€œSoundā€ doesn’t seem to affect anything.

I’m making these settings on the Satellite, and the satellite is running a local wakeword / UDP.

1 Like

You could do this will a Python skill or a somewhat simple NodeRED automation. Using NodeRED as an example, I’d create an intent in Rhasspy like this (oversimplified of course):

[MaybeTurnOffLights]
turn off the lights everywhere

Don’t listen for this intent in HA. Instead, just have NodeRED listen for it.

  1. The first time NodeRED gets MaybeTurnOffLights, it sends a message to Rhasspy for TTS (maybe using /api/text-to-speech) with ā€œOk, but this intent requires confirmationā€ and then sets a variable indicating it’s ready for confirmation.
  2. When the users triggers the same MaybeTurnOffLights intent, NodeRED now either sends a message directly to HA or delivers a different intent to Rhasspy (maybe using /api/handle-intent) which HA should be listening for.

Bonus points if you add a timeout to the NodeRED flow so the confirmation variable gets reset if the user doesn’t confirm within a few minutes or something :slight_smile:

@synesthesiam Thank you for recommendations! Thinking the same way, but using pure HA :laughing:
Going deep at learning how Rhasspy interacts with HA, and have a few questions:

  1. Does MQTT has the similar to /api/listen-for-command? I know about hermes/hotword/<WAKEWORD_ID>/detected but wakeword call wake WAV Sound, /api/listen-for-command doesn’t.
  2. Is there a way to forcefully specify intent in API call? In case if I have some logic at intent handle side and want to add slots(items) to intent handle by short phrases(listing).
1 Like

No problem, hope I can help.

  1. You’re looking for hermes/asr/startListening
  2. When calling /api/listen-for-command you can add ?entity=<entity>&value=<value> to the URL to include a custom entity with a value that will be passed through to the intent.

@synesthesiam

  1. Trying to use hermes/asr/startListening but can’t understand - do I need to send hermes/asr/stopListening and do I need to control - sessionId? /api/listen-for-command - looks more simple :grinning:
  2. Can I set, as example - ?intent=VacuumControl ?!

I’m looking the way to realize next logic at Rhasspy <-> HA:
– Rhasspy, Start Vacuum cleaner (we are have intent but we need to specify it)
– (HA answer) - Please, specify the place of cleaning
– Rhasspy, (we do not need to say intent again, we just list places) kitchen, hall, etc

As I can imagine this - I could send api call /api/listen-for-command?intent=VacuumControl and Rhasspy, knowing about intent, waiting for only <place1> [and] [<place2>] [and] [<place3>] etc.

Continue to adjust Rhasspy for my tasks. For me doesn’t work Volume control WAV Sounds. Audio Playing Volume control works as expected. I’m using alsa. Am I doing something wrong?

I see /api/set-volume but how I can get current volume level?

I don’t have a message or API for this yet, and it can be more complex if it involves satellites. Unless you set it otherwise, all the volumes should start out at 1.0.

The volume should be between 0 and 1, so try something like 0.5.

A part of my profile below. Does WAV Sounds volume work only if Dialougue manager enabled on satellite?
0.05 - Sound volume
0.15 - Audio playing volume

{
    "dialogue": {
        "satellite_site_ids": "default,sat1",
        "volume": "0.05"
    },
    "sounds": {
        "aplay": {
            "device": "sysdefault:CARD=Headphones",
            "volume": "0.15"
        }
    }
}

Late to the party here. :wink: What can I say, real life has been quite demanding. Gave my Rhasspy nodes an update from 2.5.5 this morning. Piece of cake, took only a few minutes to download, extract, and setup. Thank you, @synesthesiam !!

Merry Christmas and Happy Holidays to everyone in the Rhasspy community!!

1 Like

Hello @synesthesiam,

I’m trying to upgrade to 2.5.8 as I see the deb packages are fixed (thanks :slight_smile: for maintaning it, and as true packages and not as an AppImage).

I’m facing an odd dependency requirement on libgfortran3 : it is not available in debian buster which have been the stable distro for a while now. The previous versions of rhasspy were depending on libgfortran4 I think, which is available on debian buster.

Is it possible to fix that dependency ?

Edit : hum, if I instruct dpkg to ignore dependency to libgfortran3 (and by the way to llvm-7-runtime that appeared with 2.5.8 too), it works. I would encourage to minimize the required dependencies (by modularizing at least) to control the ā€œmonolithicationā€ of rhasspy. It is something that does not provide new features but is essential to keep a project maintainable :slight_smile:

Cheers

I may be interested in that feature (if needed to deal with two satellites hearing the same command), but I’m not able to find doc about it :blush:, could you kindly provide instructions for using it ?

1 Like

Simply rename the satellites (siteIds) you wish to group with a prefix. Rhasspy will silently ignore other satellites in a group if a satellite is already active from that group. For example, your satellites could be named like so:

downstairs.kitchen
downstairs.living-room
upstairs.front-bedroom
back-bedroom

If you wake the kitchen satellite, then Rhasspy will ignore the living room whilst the kitchen session is active. The front bedroom will activate as normal. The back bedroom is not in a group, as it has no prefix. However, depending on proximity of the devices there’s always a chance your desired satellite is not the one that is activated, but it will then block your desired satellite from activating until the session is finished.

Don’t forget to amend the satellite siteIds on the master device! :slightly_smiling_face:

3 Likes

Hello,
My Rhasspy don’t detect the group.
The group is rdc.
The satellite1 is rdc.bureau and the satellite2 is rdc.salon
Here my log, with 2 sessions (in the same second) et my configuration :

[DEBUG:2020-12-31 17:23:14,398] rhasspydialogue_hermes: -> DialogueSessionStarted(session_id=ā€˜rdc.salon-snowboy-2bd12d65-7d33-4cf6-a771-e2037d9a4fd6’, site_id=ā€˜rdc.salon’, custom_data=ā€˜snowboy’, lang=None)
[DEBUG:2020-12-31 17:23:14,547] rhasspydialogue_hermes: -> DialogueSessionStarted(session_id=ā€˜rdc.bureau-snowboy-cd4563a6-3840-43b7-9c7c-5c34a4c1c067’, site_id=ā€˜rdc.bureau’, custom_data=ā€˜snowboy’, lang=None)

"dialogue": {
    "group_separator": "rdc.",
    "satellite_site_ids": "rdc.bureau,rdc.salon",
    "system": "rhasspy"
}

Could you explain my error ?
Thanks

Hi!!.. Have a great 2021!

have problems enabling spanish support. English is perfect , but in Spanish timeout errors and NewDecoder returned -1 are killing me!.

SOme ideas’?.. may be fixed in next release?

Thanks!

Hi [synesthesiam]

Thanks for this great release!..

IĀ“m trying to get working in Spanish using Pocketsphinx but looks like all files are not downloading to install , and even using kaldi also does not download. Plus other problems related apparently with ASR that caused timeout problems. Wht do you suggest_… iĀ“ve tried using traditional install through debian package and docker.

Englis works nice, but looking to work in Spanish.

Have a great 2021!

1 Like

Your group separator value is incorrect - including the group in the separator value effectively nullifies the group. It should just be a dot, as that is the separator between the group and siteId. Change your config to this:

"dialogue": {
    "group_separator": ".",
    "satellite_site_ids": "rdc.bureau,rdc.salon",
    "system": "rhasspy"
}
1 Like

Hi, @chbarrer thanks for trying Rhasspy :slight_smile:

It turns out there were errors in both the Pocketsphinx and Kaldi Spanish download links. I’m fixing them now, and will push out an update to the Docker image and Debian files soon (I’ll post here to let you know).

Hi, I just realized that for the german deepspeech the download links seem to be wrong aswell.

I am getting the following error:

DownloadFailedException: (ā€˜https://raw.githubusercontent.com/de_deepspeech-aashishag/9fe9fbd758b2f775650ad0972710256d65be1317/model/alphabet.txt’, ā€˜File size mismatch (got 14 byte(s), expected 338)’)

Ok now i just copied the files manually from https://github.com/synesthesiam/de_deepspeech-aashishag/releases/tag/v1.0
but then I am getting time_out errors. Similar to what I have with Larynx TTS

The next version of Rhasspy (2.5.9) is finally upgrading the DeepSpeech service to v0.9. I’m including updated models, and I’ve also managed to get streaming speech working too (decoding as you’re speaking).

I’m hoping this will solve a lot of the performance problems with DeepSpeech on the Raspberry Pi’s. Larynx is another issue, unfortunately; I don’t know that there’s going to be any performance improvements for it that I can make for a while.

Funny I was just looking this morning to understand how to update DeepSpeech to 0.9 XD

Do you have an ETA on Rhasspy 2.5.9? Also, since we’re on the subject: what’s the easiest way to update Rhasspy? Didn’t see anything in the docs.

I think I read you’re using Docker. If so, you can just stop and delete the container and then create a new container with the latest image (either by pulling the image first, or pulling it when you create the container).

I’m new to Docker, would that keep my settings and everything? Or would I need to set it all up again?

It’ll keep your settings as long as you followed the tutorial and did a -v <external_directory>:/profiles in your docker run command.

If you’re nervous, there’s a ā€œBackup Profileā€ button in the settings :slight_smile:

1 Like

Hoping either today or this weekend :+1:

4 Likes