Rhasspy 2.5 Pre-Release

Rhasspy 2.5 is finally ready to be tested! :partying_face: Hope everyone is safe and healthy.

This has been a massive effort, and I’d like to thank everyone for their input and testing (especially @KiboOst!) Thanks also to @koan for helping to standardize projects and their tests, and to @maxbachmann for his Github/Docker skills and the super fast rapidfuzz library which is now what’s used for “fuzzywuzzy” :slight_smile:

The documentation is still hosted on Github for now, but I encourage you to use the “Documentation” link instead in Rhasspy’s web interface, which opens a local copy with the navigation sidebar.

Because this is a pre-release, expect bugs and unsupported services or edge cases. I’ve tried to get as much in as possible, but things will surely break as folks bang on it. For now, please report bugs to the voltron repository. I’d like to keep 2.4 and 2.5 separate until the official [1] release.

See the Getting Started Guide to, well, get started. I’d highly recommend backing up your 2.4 profile before using it with 2.5! With that, give it a go:

docker run -d -p 12101:12101 \
    --restart unless-stopped \
    -v "$HOME/.config/rhasspy/profiles:/profiles" \
    --device /dev/snd:/dev/snd \
    rhasspy/rhasspy:2.5.0-pre \
    --user-profiles /profiles \
    --profile en

Folks doing a master/satellite setup may be interested in the rhasspy-satellite project (e.g., for Pi Zeros).

Enjoy!

[1] I’m just a dude in his pajamas, so “official” is whatever we make it.

14 Likes

great news!
I was waiting for 2.5 release to get my hands on, but I’m using HA core and I’m wondering if you’re planning to release an add-on?

1 Like

@synesthesiam
I’ve just installed this new release on a Raspi4 within docker with English-Profile.
Installation without problems, but when I tried to activate an external MQTT-broker with the non standard port 1891, there is no more reaction to wakeword (snowboy.umdl).
Also when I press the Wake-Up-Button, nothing happens (no beeps).

Here is a log, where I’ve just pressed the Wake-Up-Button.
I am not familar with interpreting this log, but for me, it seems, that after a timeout rhasspy runs in error.

[ERROR:2020-03-21 14:39:07,370] rhasspyserver_hermes: 
Traceback (most recent call last):
  File "/usr/lib/rhasspy-voltron/.venv/lib/python3.6/site-packages/quart/app.py", line 1471, in full_dispatch_request
    result = await self.dispatch_request(request_context)
  File "/usr/lib/rhasspy-voltron/.venv/lib/python3.6/site-packages/quart/app.py", line 1519, in dispatch_request
    return await handler(**request_.view_args)
  File "/usr/lib/rhasspy-voltron/rhasspy-server-hermes/rhasspyserver_hermes/__main__.py", line 750, in api_listen_for_command
    handle_captured(), messages, message_types
  File "/usr/lib/rhasspy-voltron/rhasspy-server-hermes/rhasspyserver_hermes/__init__.py", line 832, in publish_wait
    _, result = await asyncio.wait_for(result_awaitable, timeout_seconds)
  File "/usr/lib/python3.6/asyncio/tasks.py", line 362, in wait_for
    raise futures.TimeoutError()
concurrent.futures._base.TimeoutError
[DEBUG:2020-03-21 14:38:44,783] rhasspyserver_hermes: Publishing 21 bytes(s) to hermes/asr/toggleOn
[DEBUG:2020-03-21 14:38:44,779] rhasspyserver_hermes: -> AsrToggleOn(siteId='default')
[DEBUG:2020-03-21 14:38:44,777] rhasspyserver_hermes: Publishing 21 bytes(s) to hermes/hotword/toggleOn
[DEBUG:2020-03-21 14:38:44,773] rhasspyserver_hermes: -> HotwordToggleOn(siteId='default')
[DEBUG:2020-03-21 14:38:37,362] rhasspyserver_hermes: Publishing 142 bytes(s) to hermes/asr/startListening
[DEBUG:2020-03-21 14:38:37,358] rhasspyserver_hermes: -> AsrStartListening(siteId='default', sessionId='c6e96d32-95cd-4925-bfca-9176a94ad39d', stopOnSilence=True, sendAudioCaptured=True, wakewordId='')
[DEBUG:2020-03-21 14:38:37,356] rhasspyserver_hermes: Subscribed to hermes/error/asr
[DEBUG:2020-03-21 14:38:37,355] rhasspyserver_hermes: Subscribed to hermes/asr/textCaptured
[DEBUG:2020-03-21 14:38:37,354] rhasspyserver_hermes: Waiting for transcription (sessionId=c6e96d32-95cd-4925-bfca-9176a94ad39d)

When I switch back to the internal MQTT-broker, everything works fine.

It’s still the same problem, which I described here:
Documentation-preview-for-2-5

FYI:
I have no problems with external MQTT-broker and Port 1891 on another Raspi4, on which Rhasspy Version 2.4.19 is installed.

Fantastic, thank you very much for the early Easter present. :hatching_chick:

I can’t wait - as soon as I get the chance later or in the next few days I will try version 2.5 and report any bugs I find. I’ve already seen in Github that Precise is included. I am excited!

1 Like

Is there a way to install this in a virtual environment instead of Docker?

Great work! I’m new to Rhasspy and so I’m jumping in with this prerelease. I had started with 2.4 and messed around for about 30 minutes until I found this thread. :slight_smile:

I have a few Pi Zeros around with PS Eye mics connected - should I install the same rhasspy/rhasspy:2.5.0-pre docker image on each of them that I installed on the master/server or does the rhasspy-sattelite project have a different image?

Hi together, I hope I can help a little bit.
@jrb5665
you should take a look at the voltron repository (the link is in the topic of synestesiam). I didn’t try it but I guess it wll work.
@hawkeye217
I already installed the rhasspy-satellite venv (the link is in the topic of synestesiam) on two Pi’s (Zero and 3B+) and they work nearly perfect.

greetings Martin

Thanks @Martin_Maier I already tried cloning the repository but it doesn’t have the same scripts as the 2.4 versions and running a make just threw fatal errors. At the moment I am running the docker version in a VM but I have been running the 2.4 versions under an lxc container in ProxMox and would prefer something I can configure without docker.

I have been running the rhasspy-satellite for a few days and have much of it working but on the pi zero with a respeaker 2-mic I can get wake word working with snowboy but I haven’t managed to get it to do STT. The rest appears to work pretty well typed sentences on the test page are correctly converted to intents. I suspect my issue relates to noise through the respeaker but haven’t worked out how to configure it properly.

btw. Are you running the rhasspy-satellite installation from the command-line or as a service? I have managed the former but trying to run as a service have seen a few strange errors

Congrats! I haven’t installed 2.5 yet. But what I can see from the docs it really looks great and seems t be an enormous step forward. Excellent work!

Before I start installing, I have some few and simple questions. Currently I am running a master/satellite system based on 2.4.19 that works fine.

I have followed your hint and read the setup instructions for the satellite system:

Folks doing a master/satellite setup may be interested in the rhasspy-satellite project

I saw, that the installation is based on a python virtual environment. Since currently my installations (both master and satellite) in 2.4.19 are based on docker I would prefer docker for the 2.5 satellite as well. Is this still possible, or is the python venv mandatory? To ask my question more open: Are there any advantages to do the satellite installation with python and not with docker or is it up to the user’s preference?

My second question: I heard that in 2.5 Kaldi is not supported in the German profile. Is this true (at least at the time being)?

Thank you in advance.

Best
Thomas

Wondering the exact same thing, @tobetobe. I’d prefer Docker on my satellites as well. @synesthesiam, what do you think? Thanks for your hard work!

@jrb5665
my satellites are a PiZero with respealer-2 and Pi3B+ with respeaker-4. Both running with a rhasspy-satellite as service without any major problem. Here is the content of my rhasspy.service

[Unit]
Description=Rhasspy
After=syslog.target network.target
[Service]
Type=simple
User=pi
Group=pi
WorkingDirectory=/home/pi/rhasspy-satellite
ExecStart=/bin/bash -lc ‘/home/pi/rhasspy-satellite/bin/rhasspy-satellite --profile de’
RestartSec=1
Restart=on-failure
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rhasspy
[Install]
WantedBy=multi-user.target

To get the STT working it is important that you define the satellites within the master profile … here is mine

{
“dialogue”: {
“satellite_site_ids”: “192.168.178.33,192.168.178.36”,
“system”: “rhasspy”
},
“intent”: {
“satellite_site_ids”: “192.168.178.33,192.168.178.36”,
“system”: “fsticuffs”
},
“microphone”: {
“system”: “pyaudio”
},
“mqtt”: {
“enabled”: “true”,
“host”: “192.168.178.200”
},
“sounds”: {
“system”: “aplay”
},
“speech_to_text”: {
“satellite_site_ids”: “192.168.178.33,192.168.178.36”,
“system”: “kaldi”
},
“text_to_speech”: {
“satellite_site_ids”: “192.168.178.33,192.168.178.36”,
“system”: “espeak”
},
“rhasspy”: {
“listen_on_start”: false
}
}

The rhasspy voltron venv installation should work if you ignore the ‘make venv’ in the first part of the installation description.

Martin

Hi @tobetobe, I have installed the 2.5.0-pre (latest) and use Kaldi as STT an it works excellent with profile de.

1 Like

How do you connect your satellite to the server? When I use an external MQTT broker (used for everything else I do with Home Assistant) I see in the server debug log

rhasspy-asr-kaldi-hermes: error: unrecognized arguments: --username rhasspy-server --username my_password

My MQTT password is thus shown after the second argument --username, the first argument rhasspy-server is the username of the external MQTT broker.

Hi @geoffrey, my main (master) server is an Ubuntu server 18.04.4. There I’ve installed mosquitto with default port without username and password, the new Rhasspy 2.5.0-pre and Openhab. Maybe this is the reason why it works for me.

Martin

Thanks for pointing this out. I forgot to add those arguments! Fixing it now…

Thanks @Martin_Maier , That’s pretty much how mine is set up.
Is the respeaker-2 the 2 mic or the v2?

If it is the 2 mic, did you have to do anything in particular to get it working or tune it?
I have got wakeword working with a 2-mic but I think it may be picking up noise or something.
It looks like the wakeword triggers audio to be passed to the server for STT but it doesn’t detect when I have finished talking and just runs until it times out and then doesn;t return anything.

@jrb5665
I use the 2 mic version. I’ve used the hermesLedControl_v2.0.6 to install the drivers and the led control and checked the installation using arecord and aplay. Maybe you can take a look at your log. Here is a log of mine working:

[DEBUG:2020-03-23 09:38:23,211] rhasspyserver_hermes: Publishing 28 bytes(s) to hermes/asr/toggleOn
[DEBUG:2020-03-23 09:38:23,203] rhasspyserver_hermes: -> AsrToggleOn(siteId=‘192.168.178.36’)
[DEBUG:2020-03-23 09:38:23,185] rhasspyserver_hermes: Publishing 28 bytes(s) to hermes/hotword/toggleOn
[DEBUG:2020-03-23 09:38:23,177] rhasspyserver_hermes: -> HotwordToggleOn(siteId=‘192.168.178.36’)
[DEBUG:2020-03-23 09:38:23,147] rhasspyserver_hermes: Handling AudioPlayFinished (topic=hermes/audioServer/192.168.178.36/playFinished, id=0c3ea7ee-ec1e-4b36-bff9-6a1f8e94a7cc)
[DEBUG:2020-03-23 09:38:23,141] rhasspyserver_hermes: Handling AudioPlayFinished (topic=hermes/audioServer/192.168.178.36/playFinished, id=fd7454b7-88b7-47df-af15-8128a118a616)
[DEBUG:2020-03-23 09:38:23,137] rhasspyserver_hermes: Handling AudioPlayFinished (topic=hermes/audioServer/192.168.178.36/playFinished, id=e3a1e4e7-7866-4ddd-be3a-74c90d9b080a)
[DEBUG:2020-03-23 09:38:23,131] rhasspyserver_hermes: <- AudioPlayFinished(id=‘fb08bc67-dc29-4d22-bad5-6ea9769b76de’, sessionId=’’)
[DEBUG:2020-03-23 09:38:23,120] rhasspyserver_hermes: <- AudioPlayFinished(id=‘fb08bc67-dc29-4d22-bad5-6ea9769b76de’, sessionId=’’)
[DEBUG:2020-03-23 09:38:22,032] rhasspyserver_hermes: Sent 599 char(s) to websocket
[DEBUG:2020-03-23 09:38:21,999] rhasspyserver_hermes: <- NluIntent(input=‘schalte schreibtischlicht ein’, intent=Intent(intentName=‘SchalterIntent’, confidenceScore=1.0), slots=[Slot(entity=‘device’, slotName=‘device’, confidence=1, raw_value=‘schreibtischlicht’, value=‘schreibtischlicht’, range=SlotRange(start=8, end=25, raw_start=8, raw_end=25)), Slot(entity=‘state’, slotName=‘state’, confidence=1, raw_value=‘ein’, value=‘ein’, range=SlotRange(start=26, end=29, raw_start=26, raw_end=29))], id=’’, siteId=‘192.168.178.36’, sessionId=‘192.168.178.36-default-e76736fa-83ba-464e-af7e-099c8e4a6f28’, customData=’’, asrTokens=[‘schalte’, ‘schreibtischlicht’, ‘ein’], asrConfidence=1.0, wakewordId=‘default’, rawAsrTokens=[‘schalte’, ‘schreibtischlicht’, ‘ein’])
[DEBUG:2020-03-23 09:38:21,966] rhasspyserver_hermes: <- NluIntent(input=‘schalte schreibtischlicht ein’, intent=Intent(intentName=‘SchalterIntent’, confidenceScore=1.0), slots=[Slot(entity=‘device’, slotName=‘device’, confidence=1, raw_value=‘schreibtischlicht’, value=‘schreibtischlicht’, range=SlotRange(start=8, end=25, raw_start=8, raw_end=25)), Slot(entity=‘state’, slotName=‘state’, confidence=1, raw_value=‘ein’, value=‘ein’, range=SlotRange(start=26, end=29, raw_start=26, raw_end=29))], id=’’, siteId=‘192.168.178.36’, sessionId=‘192.168.178.36-default-e76736fa-83ba-464e-af7e-099c8e4a6f28’, customData=’’, asrTokens=[‘schalte’, ‘schreibtischlicht’, ‘ein’], asrConfidence=1.0, wakewordId=‘default’, rawAsrTokens=[‘schalte’, ‘schreibtischlicht’, ‘ein’])
[DEBUG:2020-03-23 09:38:21,892] rhasspyserver_hermes: -> AudioPlayBytes(95312 byte(s))
[DEBUG:2020-03-23 09:38:21,884] rhasspyserver_hermes: Subscribed to hermes/audioServer/192.168.178.36/playFinished
[DEBUG:2020-03-23 09:38:21,873] rhasspyserver_hermes: Publishing 28 bytes(s) to hermes/asr/toggleOff
[DEBUG:2020-03-23 09:38:21,866] rhasspyserver_hermes: -> AsrToggleOff(siteId=‘192.168.178.36’)
[DEBUG:2020-03-23 09:38:21,853] rhasspyserver_hermes: Publishing 28 bytes(s) to hermes/hotword/toggleOff
[DEBUG:2020-03-23 09:38:21,839] rhasspyserver_hermes: -> HotwordToggleOff(siteId=‘192.168.178.36’)
[DEBUG:2020-03-23 09:38:21,830] rhasspyserver_hermes: Playing WAV /home/pi/rhasspy-satellite/etc/wav/beep_lo.wav
[DEBUG:2020-03-23 09:38:21,798] rhasspyserver_hermes: <- AsrTextCaptured(text=‘schalte schreibtischlicht ein’, likelihood=1, seconds=4.663509100999988, siteId=‘192.168.178.36’, sessionId=‘192.168.178.36-default-e76736fa-83ba-464e-af7e-099c8e4a6f28’, wakewordId=’’)
[DEBUG:2020-03-23 09:38:21,778] rhasspyserver_hermes: <- AsrTextCaptured(text=‘schalte schreibtischlicht ein’, likelihood=1, seconds=4.663509100999988, siteId=‘192.168.178.36’, sessionId=‘192.168.178.36-default-e76736fa-83ba-464e-af7e-099c8e4a6f28’, wakewordId=’’)
… here I am speaking …
[DEBUG:2020-03-23 09:38:17,278] rhasspyserver_hermes: Publishing 28 bytes(s) to hermes/asr/toggleOn
[DEBUG:2020-03-23 09:38:17,270] rhasspyserver_hermes: -> AsrToggleOn(siteId=‘192.168.178.36’)
[DEBUG:2020-03-23 09:38:17,259] rhasspyserver_hermes: Publishing 28 bytes(s) to hermes/hotword/toggleOn
[DEBUG:2020-03-23 09:38:17,253] rhasspyserver_hermes: -> HotwordToggleOn(siteId=‘192.168.178.36’)
[DEBUG:2020-03-23 09:38:17,220] rhasspyserver_hermes: Handling AudioPlayFinished (topic=hermes/audioServer/192.168.178.36/playFinished, id=3df65b13-9cad-4f99-9b60-c53b955ea535)
[DEBUG:2020-03-23 09:38:17,212] rhasspyserver_hermes: Handling AudioPlayFinished (topic=hermes/audioServer/192.168.178.36/playFinished, id=fd7454b7-88b7-47df-af15-8128a118a616)
[DEBUG:2020-03-23 09:38:17,202] rhasspyserver_hermes: Handling AudioPlayFinished (topic=hermes/audioServer/192.168.178.36/playFinished, id=e3a1e4e7-7866-4ddd-be3a-74c90d9b080a)
[DEBUG:2020-03-23 09:38:17,196] rhasspyserver_hermes: <- AudioPlayFinished(id=‘ce2ddbb1-641c-42d5-8d96-11c7330f505b’, sessionId=’’)
[DEBUG:2020-03-23 09:38:17,178] rhasspyserver_hermes: <- AudioPlayFinished(id=‘ce2ddbb1-641c-42d5-8d96-11c7330f505b’, sessionId=’’)
[DEBUG:2020-03-23 09:38:16,587] rhasspyserver_hermes: -> AudioPlayBytes(42088 byte(s))
[DEBUG:2020-03-23 09:38:16,579] rhasspyserver_hermes: Subscribed to hermes/audioServer/192.168.178.36/playFinished
[DEBUG:2020-03-23 09:38:16,561] rhasspyserver_hermes: Publishing 28 bytes(s) to hermes/asr/toggleOff
[DEBUG:2020-03-23 09:38:16,552] rhasspyserver_hermes: -> AsrToggleOff(siteId=‘192.168.178.36’)
[DEBUG:2020-03-23 09:38:16,531] rhasspyserver_hermes: Publishing 28 bytes(s) to hermes/hotword/toggleOff
[DEBUG:2020-03-23 09:38:16,525] rhasspyserver_hermes: -> HotwordToggleOff(siteId=‘192.168.178.36’)
[DEBUG:2020-03-23 09:38:16,517] rhasspyserver_hermes: Playing WAV /home/pi/rhasspy-satellite/etc/wav/beep_hi.wav
[WARNING:2020-03-23 09:38:16,508] rhasspyserver_hermes: Dialogue management is disabled. ASR will NOT be automatically enabled.
[DEBUG:2020-03-23 09:38:16,502] rhasspyserver_hermes: <- HotwordDetected(modelId=‘hey_snips’, modelVersion=‘workflow-hey_snips_subww_feedback_10seeds-2018_12_04T12_13_05_evaluated_model_0002’, modelType=‘universal’, currentSensitivity=0.5, siteId=‘192.168.178.36’, sessionId=’’, sendAudioCaptured=None)
[DEBUG:2020-03-23 09:38:16,486] rhasspyserver_hermes: <- HotwordDetected(modelId=‘hey_snips’, modelVersion=‘workflow-hey_snips_subww_feedback_10seeds-2018_12_04T12_13_05_evaluated_model_0002’, modelType=‘universal’, currentSensitivity=0.5, siteId=‘192.168.178.36’, sessionId=’’, sendAudioCaptured=None)

greetings Martin

Hi everyone!

Thanks for all the great work already achieved !

My setup is as follow:

  • Rhasspy Master in docker on a laptop
  • 1 rhasspy Pi Zero satellite with respeaker 2 mic (rhaspy satellite venv)
    -1 rhasspy PiA+ satellite with jabra 510 (docker install)

My problem comes from the A+ satellite, where I can record sound but can’t have sound output/. On 2.4 everything worked fine, configuration is similar.

Profile.json

"microphone": {
    "arecord": {
        "device": "sysdefault:CARD=USB",
        "udp_audio_port": "12202"
    },
    "system": "arecord"
},
"sounds": {
    "aplay": {
        "device": "sysdefault:CARD=USB",
    },
    "system": "aplay"
}

asound.conf

pcm.!default {
type asym
playback.pcm {
type plug
slave.pcm “hw:1,0”
}
capture.pcm {
type plug
slave.pcm “hw:1,0”
}
}
ctl.!default {
type hw
card 1
}

Sounds work though cause I can hear sound in the terminal with aplay -D sysdefault:CARD=USB 1.wav

Looking at docker logs on the A+, I have this when trying to play a sound via TTS for instance
[DEBUG:2020-03-23 09:27:54,220] rhasspyserver_hermes: <- AudioPlayBytes(27954 byte(s))
[DEBUG:2020-03-23 09:27:54,220] rhasspyspeakers_cli_hermes: [‘aplay’, ‘-q’, ‘-t’, ‘wav’]
[DEBUG:2020-03-23 09:27:54,225] rhasspyserver_hermes: <- AudioPlayBytes(27954 byte(s))
[DEBUG:2020-03-23 09:27:54,228] rhasspyserver_hermes: Handling AudioPlayBytes (topic=hermes/audioServer/satellite-A/playBytes/f3d9598e-d149-4bd3-b2a9-3a7d769ecb8e, id=dd46c6b4-d783-4a63-9802-f8bcf36e4ecf)
[DEBUG:2020-03-23 09:27:55,078] rhasspyspeakers_cli_hermes: -> AudioPlayFinished(id=‘f3d9598e-d149-4bd3-b2a9-3a7d769ecb8e’, sessionId=’’)
[DEBUG:2020-03-23 09:27:55,081] rhasspyspeakers_cli_hermes: Publishing 63 bytes(s) to hermes/audioServer/satellite-A/playFinished
[ERROR:2020-03-23 09:28:24,155] rhasspyserver_hermes:
Traceback (most recent call last):
File “/usr/lib/rhasspy-voltron/.venv/lib/python3.6/site-packages/quart/app.py”, line 1471, in full_dispatch_request
result = await self.dispatch_request(request_context)
File “/usr/lib/rhasspy-voltron/.venv/lib/python3.6/site-packages/quart/app.py”, line 1519, in dispatch_request
return await handler(**request_.view_args)
File “/usr/lib/rhasspy-voltron/rhasspy-server-hermes/rhasspyserver_hermes/main.py”, line 1414, in api_text_to_speech
sentence, language=(language or voice), capture_audio=True, siteId=siteId
File “/usr/lib/rhasspy-voltron/rhasspy-server-hermes/rhasspyserver_hermes/init.py”, line 479, in speak_sentence
handle_finished(), messages, message_types
File “/usr/lib/rhasspy-voltron/rhasspy-server-hermes/rhasspyserver_hermes/init.py”, line 832, in publish_wait
_, result = await asyncio.wait_for(result_awaitable, timeout_seconds)
File “/usr/lib/python3.6/asyncio/tasks.py”, line 362, in wait_for
raise futures.TimeoutError()
concurrent.futures._base.TimeoutError

Any clue ?

Thaks a lot

Hello,

I followed the instruction on the github page: https://github.com/rhasspy/rhasspy-voltron, but when I ran the last command to start rhasspy-voltron I got the following error:

vandaag@speech:~/rhasspy-voltron$ bin/rhasspy-voltron -p nl
Starting up…
/home/vandaag/rhasspy-voltron/.venv/bin/python3: No module named rhasspysupervisor
vandaag@speech:~/rhasspy-voltron$

Any suggestions?

Thanks