Help Getting Started

No, the setting is a radiobutton so you have to choose.

I knew that, I selected the Intents radio button :relaxed:

Is there a way to determine if Rhasspy is sending the intent to Home Assistant?
I don’t see anything is either the Rhasspy server log or the Home Assistant Log.
Do I still need to enable the Snips Integration?

Which hostname have you set for your Homeassistant server in the rhasspy settings?

My problem was, that the rhasspy Docker container was not able to resolve the dns name of my Homeassistant. I had to add the dns server to my compose file to get it to work.

No, you do not need the snips integration.
Can you share your log from wakeword detection to end?

I am using the IP address for my HA server.
Both Rhasspy and HA are running in docker.

So my Rhasspy Base server is at 192.158.1.105:12101
My HA Server is at 192.168.1.105:8123

The HASS URL on my Rhasspy Base is: http://192.168.1.105:8123
The access token is filled in, the API password is blank, and the ‘Send intents to Home Assistant’ radio button is selected.

I didn’t think so but I wanted to check, thank you for confirming.

Do you want the log from the satellite and the base? and just the log that is available in the GUI or from the actual log file?

Here are the logs from my Satallite and my Base. The Satallite time is currently set to GMT, the Base is EST.
There are no entries in HA for this time period.

Satellite Log:

[DEBUG:2020-11-06 03:28:23,031] rhasspyserver_hermes: <- NluIntent(input=‘whats the temperature’, intent=Intent(intent_name=‘GetTemperature’, confidence_score=1.0), site_id=‘Kitchen-Sat’, id=None, slots=[], session_id=‘Kitchen-Sat-porcupine-0682f203-85e7-45bb-8153-74b6529b9a64’, custom_data=None, asr_tokens=[[AsrToken(value=‘whats’, confidence=1.0, range_start=0, range_end=5, time=None), AsrToken(value=‘the’, confidence=1.0, range_start=6, range_end=9, time=None), AsrToken(value=‘temperature’, confidence=1.0, range_start=10, range_end=21, time=None)]], asr_confidence=None, raw_input=‘whats the temperature’, wakeword_id=‘porcupine’, lang=None)

[WARNING:2020-11-06 03:28:08,727] rhasspyserver_hermes: Dialogue management is disabled. ASR will NOT be automatically enabled.

[DEBUG:2020-11-06 03:28:08,677] rhasspyserver_hermes: <- HotwordDetected(model_id=’/usr/lib/rhasspy/rhasspy-wake-porcupine-hermes/rhasspywake_porcupine_hermes/porcupine/resources/keyword_files/raspberrypi/porcupine.ppn’, model_version=’’, model_type=‘personal’, current_sensitivity=0.5, site_id=‘Kitchen-Sat’, session_id=None, send_audio_captured=None, lang=None)

Base Log:

[DEBUG:2020-11-06 14:10:27,144] rhasspyserver_hermes: -> GetVoices(id=‘c3402fba-ff10-42b7-91de-d541db073de3’, site_id=‘Rhasspy-Base’)

[DEBUG:2020-11-06 14:10:27,242] rhasspyserver_hermes: Publishing 72 bytes(s) to rhasspy/tts/getVoices

[DEBUG:2020-11-06 14:10:28,413] rhasspyprofile.download: speech_to_text.system pocketsphinx kaldi = False

[DEBUG:2020-11-06 14:10:28,413] rhasspyprofile.download: speech_to_text.system kaldi kaldi = True

[DEBUG:2020-11-06 14:10:28,414] rhasspyprofile.download: Skipping kaldi/base_dictionary.txt (/profiles/en/kaldi/base_dictionary.txt)

[DEBUG:2020-11-06 14:10:28,414] rhasspyprofile.download: Skipping kaldi/g2p.fst (/profiles/en/kaldi/g2p.fst)

[DEBUG:2020-11-06 14:10:28,414] rhasspyprofile.download: Skipping kaldi/g2p.corpus (/profiles/en/kaldi/g2p.corpus)

[DEBUG:2020-11-06 14:10:28,538] rhasspyprofile.download: Skipping kaldi/model/conf/mfcc.conf (/profiles/en/kaldi/model/conf/mfcc.conf)

[DEBUG:2020-11-06 14:10:28,539] rhasspyprofile.download: Skipping kaldi/model/conf/mfcc_hires.conf (/profiles/en/kaldi/model/conf/mfcc_hires.conf)

[DEBUG:2020-11-06 14:10:28,539] rhasspyprofile.download: Skipping kaldi/model/conf/online_cmvn.conf (/profiles/en/kaldi/model/conf/online_cmvn.conf)

[DEBUG:2020-11-06 14:10:28,597] rhasspyprofile.download: Skipping kaldi/model/extractor/final.dubm (/profiles/en/kaldi/model/extractor/final.dubm)

[DEBUG:2020-11-06 14:10:28,597] rhasspyprofile.download: Skipping kaldi/model/extractor/final.ie (/profiles/en/kaldi/model/extractor/final.ie)

[DEBUG:2020-11-06 14:10:28,597] rhasspyprofile.download: Skipping kaldi/model/extractor/final.mat (/profiles/en/kaldi/model/extractor/final.mat)

[DEBUG:2020-11-06 14:10:28,598] rhasspyprofile.download: Skipping kaldi/model/extractor/global_cmvn.stats (/profiles/en/kaldi/model/extractor/global_cmvn.stats)

[DEBUG:2020-11-06 14:10:28,598] rhasspyprofile.download: Skipping kaldi/model/extractor/online_cmvn.conf (/profiles/en/kaldi/model/extractor/online_cmvn.conf)

[DEBUG:2020-11-06 14:10:28,598] rhasspyprofile.download: Skipping kaldi/model/extractor/splice_opts (/profiles/en/kaldi/model/extractor/splice_opts)

[DEBUG:2020-11-06 14:10:28,631] rhasspyprofile.download: Skipping kaldi/model/model/cmvn_opts (/profiles/en/kaldi/model/model/cmvn_opts)

[DEBUG:2020-11-06 14:10:28,631] rhasspyprofile.download: Skipping kaldi/model/model/den.fst (/profiles/en/kaldi/model/model/den.fst)

[DEBUG:2020-11-06 14:10:28,631] rhasspyprofile.download: Skipping kaldi/model/model/final.mdl (/profiles/en/kaldi/model/model/final.mdl)

[DEBUG:2020-11-06 14:10:28,632] rhasspyprofile.download: Skipping kaldi/model/model/normalization.fst (/profiles/en/kaldi/model/model/normalization.fst)

[DEBUG:2020-11-06 14:10:28,632] rhasspyprofile.download: Skipping kaldi/model/model/tree (/profiles/en/kaldi/model/model/tree)

[DEBUG:2020-11-06 14:10:28,681] rhasspyprofile.download: Skipping kaldi/model/phones/extra_questions.txt (/profiles/en/kaldi/model/phones/extra_questions.txt)

[DEBUG:2020-11-06 14:10:28,682] rhasspyprofile.download: Skipping kaldi/model/phones/nonsilence_phones.txt (/profiles/en/kaldi/model/phones/nonsilence_phones.txt)

[DEBUG:2020-11-06 14:10:28,682] rhasspyprofile.download: Skipping kaldi/model/phones/optional_silence.txt (/profiles/en/kaldi/model/phones/optional_silence.txt)

[DEBUG:2020-11-06 14:10:28,682] rhasspyprofile.download: Skipping kaldi/model/phones/silence_phones.txt (/profiles/en/kaldi/model/phones/silence_phones.txt)

[DEBUG:2020-11-06 14:10:28,682] rhasspyprofile.download: speech_to_text.system deepspeech kaldi = False

[DEBUG:2020-11-06 14:10:28,682] rhasspyprofile.download: speech_to_text.pocketsphinx.open_transcription True False = False

[DEBUG:2020-11-06 14:10:28,682] rhasspyprofile.download: speech_to_text.kaldi.open_transcription True False = False

[DEBUG:2020-11-06 14:10:28,683] rhasspyprofile.download: speech_to_text.deepspeech.open_transcription True False = False

[DEBUG:2020-11-06 14:10:28,683] rhasspyprofile.download: speech_to_text.pocketsphinx.mix_weight >0 0 = False

[DEBUG:2020-11-06 14:10:28,683] rhasspyprofile.download: speech_to_text.kaldi.mix_weight >0 0 = False

[DEBUG:2020-11-06 14:10:28,683] rhasspyprofile.download: speech_to_text.deepspeech.mix_weight >0 0 = False

[DEBUG:2020-11-06 14:10:34,368] rhasspytts_cli_hermes: <- GetVoices(id=‘c3402fba-ff10-42b7-91de-d541db073de3’, site_id=‘Rhasspy-Base’)

[DEBUG:2020-11-06 14:10:39,021] rhasspytts_cli_hermes: espeak --voices | tail -n +2 | awk ‘{ print $2,$4 }’


c[DEBUG:2020-11-06 14:10:44,353] rhasspytts_cli_hermes: -> Voices(voices=[Voice(voice_id=‘af’, description=‘afrikaans’), Voice(voice_id=‘an’, description=‘aragonese’), Voice(voice_id=‘bg’, description=‘bulgarian’), Voice(voice_id=‘bs’, description=‘bosnian’), Voice(voice_id=‘ca’, description=‘catalan’), Voice(voice_id=‘cs’, description=‘czech’), Voice(voice_id=‘cy’, description=‘welsh’), Voice(voice_id=‘da’, description=‘danish’), Voice(voice_id=‘de’, description=‘german’), Voice(voice_id=‘el’, description=‘greek’), Voice(voice_id=‘en’, description=‘default’), Voice(voice_id=‘en-gb’, description=‘english’), Voice(voice_id=‘en-sc’, description=‘en-scottish’), Voice(voice_id=‘en-uk-north’, description=‘english-north’), Voice(voice_id=‘en-uk-rp’, description=‘english_rp’), Voice(voice_id=‘en-uk-wmids’, description=‘english_wmids’), Voice(voice_id=‘en-us’, description=‘english-us’), Voice(voice_id=‘en-wi’, description=‘en-westindies’), Voice(voice_id=‘eo’, description=‘esperanto’), Voice(voice_id=‘es’, description=‘spanish’), Voice(voice_id=‘es-la’, description=‘spanish-latin-am’), Voice(voice_id=‘et’, description=‘estonian’), Voice(voice_id=‘fa’, description=‘persian’), Voice(voice_id=‘fa-pin’, description=‘persian-pinglish’), Voice(voice_id=‘fi’, description=‘finnish’), Voice(voice_id=‘fr-be’, description=‘french-Belgium’), Voice(voice_id=‘fr-fr’, description=‘french’), Voice(voice_id=‘ga’, description=‘irish-gaeilge’), Voice(voice_id=‘grc’, description=‘greek-ancient’), Voice(voice_id=‘hi’, description=‘hindi’), Voice(voice_id=‘hr’, description=‘croatian’), Voice(voice_id=‘hu’, description=‘hungarian’), Voice(voice_id=‘hy’, description=‘armenian’), Voice(voice_id=‘hy-west’, description=‘armenian-west’), Voice(voice_id=‘id’, description=‘indonesian’), Voice(voice_id=‘is’, description=‘icelandic’), Voice(voice_id=‘it’, description=‘italian’), Voice(voice_id=‘jbo’, description=‘lojban’), Voice(voice_id=‘ka’, description=‘georgian’), Voice(voice_id=‘kn’, description=‘kannada’), Voice(voice_id=‘ku’, description=‘kurdish’), Voice(voice_id=‘la’, description=‘latin’), Voice(voice_id=‘lfn’, description=‘lingua_franca_nova’), Voice(voice_id=‘lt’, description=‘lithuanian’), Voice(voice_id=‘lv’, description=‘latvian’), Voice(voice_id=‘mk’, description=‘macedonian’), Voice(voice_id=‘ml’, description=‘malayalam’), Voice(voice_id=‘ms’, description=‘malay’), Voice(voice_id=‘ne’, description=‘nepali’), Voice(voice_id=‘nl’, description=‘dutch’), Voice(voice_id=‘no’, description=‘norwegian’), Voice(voice_id=‘pa’, description=‘punjabi’), Voice(voice_id=‘pl’, description=‘polish’), Voice(voice_id=‘pt-br’, description=‘brazil’), Voice(voice_id=‘pt-pt’, description=‘portugal’), Voice(voice_id=‘ro’, description=‘romanian’), Voice(voice_id=‘ru’, description=‘russian’), Voice(voice_id=‘sk’, description=‘slovak’), Voice(voice_id=‘sq’, description=‘albanian’), Voice(voice_id=‘sr’, description=‘serbian’), Voice(voice_id=‘sv’, description=‘swedish’), Voice(voice_id=‘sw’, description=‘swahili-test’), Voice(voice_id=‘ta’, description=‘tamil’), Voice(voice_id=‘tr’, description=‘turkish’), Voice(voice_id=‘vi’, description=‘vietnam’), Voice(voice_id=‘vi-hue’, description=‘vietnam_hue’), Voice(voice_id=‘vi-sgn’, description=‘vietnam_sgn’), Voice(voice_id=‘zh’, description=‘Mandarin’), Voice(voice_id=‘zh-yue’, description=‘cantonese’)], id=‘c3402fba-ff10-42b7-91de-d541db073de3’, site_id=‘Rhasspy-Base’)

[DEBUG:2020-11-06 14:10:44,391] rhasspytts_cli_hermes: Publishing 3370 bytes(s) to rhasspy/tts/voices

[DEBUG:2020-11-06 14:10:45,135] rhasspyserver_hermes: Handling Voices (topic=rhasspy/tts/voices, id=7c903e5e-cd82-4dd8-8e87-d6712c3dbb75)

The satellite seems to work ok, maybe an issue with the settings on the sat. I could not find them listed yet,
Also, what is the connection of MQTT on base and sat?

MQTT is setup to connect to my external MQTT broker.
I can see the connections of the Base and the Satellite on my MQTT Broker.

Is there a way to push audio from the base out to the satellite?

What is the importance of Intent Recognition and Dialogue Management? I mean, do any additional work of just recognizing the exact words in sentences?

(I apologize for getting off topic. It just occurred to me to ask, I hope not to bother).

Yes, you can use the command line.
You can also use Node-Red for it, I have an audio test flow:

The Node-Red is the addon in Home Assistant. I just placed some wav’s in the share folder.
File id nodes are configured like this:

So, whenever I push one of the buttons, it sends the corresponding wav file to the topic of the MQTT node.
I was using this in my streamer to test various samplerates

I saw the base settings, but what about the satellite settings?
They are both connected to the same MQTT broker?

Also, it might be a very good idea to not use Rhasspy on a VM, but you the Home Assistant Addon on. In any case the base, the sat and HA should be on the same broker, which I think you have but just to be sure and double check.

The sat seems to correctly detect the hotword and intent detection.

Did you follow this guide?

I did use the tutorial but just to be safe I just double checked and all the settings are the same as what is outlined in the tutorial except for:

On the Base the Intent Handling is now set to Home Assistant with the HASS URL set to “http://192.168.1.105:8123”, the Access Token pasted in, and Send Intents to Home Assistant radio button selected.

On the Satellite I noticed that there is now a host field (along with the port field) for the UDP Audio (Output) were the docs just show a port field.
Do I need anything in the hosts field?

I don’t believe HA is picking up the intents being published by my Rhasspy base.
I can see in my Rhasspy logs “rhasspyserver_hermes: Sent 435 char(s) to websocket”

But I am not seeing anything on HA end.
I thought since that HA and Rhasspy are both containerized that the HA container IP should be used instead of the host IP.
Changing to the container IP doesn’t seem to have made a difference.
I did make sure that the HA container IP was reachable from the Rhasspy Base container.

I have found ha doesn’t support intents as of late just events. Try using events instead.

Can you give a link where you got that information?

No link, experience. Try using curl to access the intent api for HA. It should error out with 404 code. Here is an example:

curl -X GET -H "Authorization: Bearer " -H “Content-Type: application/json” :8123/api/intents
404: Not Found

FYI it did work in a previous version of ha compared to the version I’m currently using Home Assistant 0.118.5. I don’t know the previous version. As I said events work fine.

Intents are managed via intent_script in configuration.yaml.
There is no api endpoint for intents (anymore apparently), so that is why you get the 404.

Yes I saw that but thought docs were out of date. Well events are working but easy for me to try intents with the script. I redirect the received events to their intents(ones in the config files) and works fine.

1 Like