Hello,
i want to use 5-6 raspi zero w to stream all audio to my central “intelligent” rhasspy-server (currently with the docker 2.5-pre image) and let the activation word detection and speech-to-text do better performance hardware.
on each zero w i have set up only the hermes-audio-server that sends audio to the mqtt broker with its own siteID (e.g. s1, s2, s3…).
The sites can connect to my external mqtt-broker (running on same host as the rhasspy-server).
My config:
Summary
{
"dialogue": {
"system": "rhasspy"
},
"intent": {
"system": "fuzzywuzzy"
},
"microphone": {
"system": "hermes"
},
"mqtt": {
"enabled": "true",
"host": "rhasspy"
},
"speech_to_text": {
"satellite_site_ids": "s1,s2,s3,s4,s5,s6",
"system": "kaldi"
},
"wake": {
"pocketsphinx": {
"keyphrase": "alexa"
},
"porcupine": {
"keyword_path": "alexa.ppn",
"sensitivity": "0.6",
"udp_audio": ""
},
"satellite_site_ids": "s1,s2,s3,s4,s5,s6",
"snowboy": {
"model": "alexa.ppn"
},
"system": "porcupine"
}
}
After each restart the server successfully subscribe the satellite audioframe-topic:
Summary
2020-05-23 11:52:46,202 INFO supervisord started with pid 145
Shutting down core
[DEBUG:2020-05-23 11:52:46,472] rhasspyprofile.profile: Loading /usr/lib/rhasspy/lib/python3.7/site-packages/rhasspyprofile/profiles/de/profile.json
[DEBUG:2020-05-23 11:52:46,474] rhasspyprofile.profile: Loading /profiles/de/profile.json
[DEBUG:2020-05-23 11:52:46,475] rhasspyprofile.profile: Loading default profile settings from /usr/lib/rhasspy/lib/python3.7/site-packages/rhasspyprofile/profiles/defaults.json
[DEBUG:2020-05-23 11:52:46,477] rhasspyserver_hermes: Starting core
[DEBUG:2020-05-23 11:52:46,477] rhasspyserver_hermes: Connecting to rhasspy:1883 (retries: 0/10)
[DEBUG:2020-05-23 11:52:46,488] rhasspyserver_hermes: Connected to MQTT broker
[DEBUG:2020-05-23 11:52:46,489] rhasspyserver_hermes: Subscribed to hermes/hotword/+/detected
[DEBUG:2020-05-23 11:52:46,489] rhasspyserver_hermes: Subscribed to hermes/asr/textCaptured
[DEBUG:2020-05-23 11:52:46,490] rhasspyserver_hermes: Subscribed to hermes/intent/#
[DEBUG:2020-05-23 11:52:46,491] rhasspyserver_hermes: Subscribed to hermes/nlu/intentNotRecognized
[DEBUG:2020-05-23 11:52:46,492] rhasspyserver_hermes: Subscribed to rhasspy/asr/default/default/audioCaptured
[DEBUG:2020-05-23 11:52:46,493] rhasspyserver_hermes: Subscribed to hermes/audioServer/default/audioSummary
[DEBUG:2020-05-23 11:52:46,494] rhasspyserver_hermes: Subscribed to hermes/hotword/+/detected
[DEBUG:2020-05-23 11:52:46,494] rhasspyserver_hermes: Subscribed to hermes/asr/textCaptured
[DEBUG:2020-05-23 11:52:46,495] rhasspyserver_hermes: Subscribed to rhasspy/asr/default/default/audioCaptured
[DEBUG:2020-05-23 11:52:46,496] rhasspyserver_hermes: Subscribed to hermes/nlu/intentNotRecognized
[DEBUG:2020-05-23 11:52:46,496] rhasspyserver_hermes: Subscribed to hermes/audioServer/default/audioSummary
[DEBUG:2020-05-23 11:52:46,497] rhasspyserver_hermes: Subscribed to hermes/intent/#
[INFO:2020-05-23 11:52:46,498] rhasspyserver_hermes: Started
[DEBUG:2020-05-23 11:52:46,578] rhasspyprofile.download: speech_to_text.system pocketsphinx kaldi = False
[DEBUG:2020-05-23 11:52:46,578] rhasspyprofile.download: speech_to_text.system kaldi kaldi = True
[DEBUG:2020-05-23 11:52:46,579] rhasspyprofile.download: Skipping kaldi/base_dictionary.txt (/profiles/de/kaldi/base_dictionary.txt)
[DEBUG:2020-05-23 11:52:46,579] rhasspyprofile.download: Skipping kaldi/g2p.fst (/profiles/de/kaldi/g2p.fst)
[DEBUG:2020-05-23 11:52:46,580] rhasspyprofile.download: Skipping kaldi/model/model/cmvn_opts (/profiles/de/kaldi/model/model/cmvn_opts)
[DEBUG:2020-05-23 11:52:46,580] rhasspyprofile.download: Skipping kaldi/model/model/final.mdl (/profiles/de/kaldi/model/model/final.mdl)
[DEBUG:2020-05-23 11:52:46,580] rhasspyprofile.download: Skipping kaldi/model/model/tree (/profiles/de/kaldi/model/model/tree)
[DEBUG:2020-05-23 11:52:46,581] rhasspyprofile.download: Skipping kaldi/model/phones/nonsilence_phones.txt (/profiles/de/kaldi/model/phones/nonsilence_phones.txt)
[DEBUG:2020-05-23 11:52:46,581] rhasspyprofile.download: Skipping kaldi/model/phones/extra_questions.txt (/profiles/de/kaldi/model/phones/extra_questions.txt)
[DEBUG:2020-05-23 11:52:46,582] rhasspyprofile.download: Skipping kaldi/model/phones/optional_silence.txt (/profiles/de/kaldi/model/phones/optional_silence.txt)
[DEBUG:2020-05-23 11:52:46,582] rhasspyprofile.download: Skipping kaldi/model/phones/silence_phones.txt (/profiles/de/kaldi/model/phones/silence_phones.txt)
[DEBUG:2020-05-23 11:52:46,582] rhasspyprofile.download: Skipping kaldi/model/conf/online_cmvn.conf (/profiles/de/kaldi/model/conf/online_cmvn.conf)
[DEBUG:2020-05-23 11:52:46,583] rhasspyprofile.download: Skipping kaldi/model/conf/mfcc.conf (/profiles/de/kaldi/model/conf/mfcc.conf)
[DEBUG:2020-05-23 11:52:46,583] rhasspyprofile.download: Skipping kaldi/model/conf/mfcc_hires.conf (/profiles/de/kaldi/model/conf/mfcc_hires.conf)
[DEBUG:2020-05-23 11:52:46,584] rhasspyprofile.download: Skipping kaldi/model/extractor/final.mat (/profiles/de/kaldi/model/extractor/final.mat)
[DEBUG:2020-05-23 11:52:46,584] rhasspyprofile.download: Skipping kaldi/model/extractor/online_cmvn.conf (/profiles/de/kaldi/model/extractor/online_cmvn.conf)
[DEBUG:2020-05-23 11:52:46,584] rhasspyprofile.download: Skipping kaldi/model/extractor/global_cmvn.stats (/profiles/de/kaldi/model/extractor/global_cmvn.stats)
[DEBUG:2020-05-23 11:52:46,585] rhasspyprofile.download: Skipping kaldi/model/extractor/splice_opts (/profiles/de/kaldi/model/extractor/splice_opts)
[DEBUG:2020-05-23 11:52:46,585] rhasspyprofile.download: Skipping kaldi/model/extractor/final.dubm (/profiles/de/kaldi/model/extractor/final.dubm)
[DEBUG:2020-05-23 11:52:46,586] rhasspyprofile.download: Skipping kaldi/model/extractor/final.ie (/profiles/de/kaldi/model/extractor/final.ie)
[DEBUG:2020-05-23 11:52:46,586] rhasspyprofile.download: Skipping kaldi/model/ivectors_test_hires/conf/online_cmvn.conf (/profiles/de/kaldi/model/ivectors_test_hires/conf/online_cmvn.conf)
[DEBUG:2020-05-23 11:52:46,586] rhasspyprofile.download: Skipping kaldi/model/ivectors_test_hires/conf/ivector_extractor.conf (/profiles/de/kaldi/model/ivectors_test_hires/conf/ivector_extractor.conf)
[DEBUG:2020-05-23 11:52:46,587] rhasspyprofile.download: Skipping kaldi/model/ivectors_test_hires/conf/splice.conf (/profiles/de/kaldi/model/ivectors_test_hires/conf/splice.conf)
[DEBUG:2020-05-23 11:52:46,587] rhasspyprofile.download: speech_to_text.system deepspeech kaldi = False
[DEBUG:2020-05-23 11:52:46,588] rhasspyprofile.download: speech_to_text.pocketsphinx.open_transcription True False = False
[DEBUG:2020-05-23 11:52:46,588] rhasspyprofile.download: speech_to_text.kaldi.open_transcription True False = False
[DEBUG:2020-05-23 11:52:46,588] rhasspyprofile.download: speech_to_text.deepspeech.open_transcription True False = False
[DEBUG:2020-05-23 11:52:46,589] rhasspyprofile.download: speech_to_text.pocketsphinx.mix_weight >0 0 = False
[DEBUG:2020-05-23 11:52:46,589] rhasspyprofile.download: speech_to_text.kaldi.mix_weight >0 0 = False
[DEBUG:2020-05-23 11:52:46,589] rhasspyprofile.download: speech_to_text.deepspeech.mix_weight >0 0 = False
2020-05-23 11:52:47,208 INFO spawned: ‘intent_recognition’ with pid 6380
2020-05-23 11:52:47,213 INFO spawned: ‘dialogue’ with pid 6381
2020-05-23 11:52:47,220 INFO spawned: ‘speech_to_text’ with pid 6382
2020-05-23 11:52:47,225 INFO spawned: ‘wake_word’ with pid 6383
[DEBUG:2020-05-23 11:52:47,585] rhasspydialogue_hermes: Namespace(debug=True, host=‘rhasspy’, log_format=’[%(levelname)s:%(asctime)s] %(name)s: %(message)s’, password=None, port=1883, session_timeout=30.0, site_id=[‘default’], sound=None, 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, wakeword_id=None)
[DEBUG:2020-05-23 11:52:47,588] asyncio: Using selector: EpollSelector
[DEBUG:2020-05-23 11:52:47,590] rhasspydialogue_hermes: Connecting to rhasspy:1883
[DEBUG:2020-05-23 11:52:47,604] asyncio: Using selector: EpollSelector
[DEBUG:2020-05-23 11:52:47,605] rhasspydialogue_hermes: Connected to MQTT broker
[DEBUG:2020-05-23 11:52:47,607] rhasspydialogue_hermes: Subscribed to hermes/tts/sayFinished
[DEBUG:2020-05-23 11:52:47,608] rhasspydialogue_hermes: Subscribed to hermes/dialogueManager/continueSession
[DEBUG:2020-05-23 11:52:47,608] rhasspydialogue_hermes: Subscribed to hermes/audioServer/default/playFinished
[DEBUG:2020-05-23 11:52:47,608] rhasspydialogue_hermes: Subscribed to hermes/asr/textCaptured
[DEBUG:2020-05-23 11:52:47,609] rhasspydialogue_hermes: Subscribed to hermes/dialogueManager/endSession
[DEBUG:2020-05-23 11:52:47,610] rhasspydialogue_hermes: Subscribed to hermes/intent/#
[DEBUG:2020-05-23 11:52:47,610] rhasspydialogue_hermes: Subscribed to hermes/hotword/+/detected
[DEBUG:2020-05-23 11:52:47,611] rhasspydialogue_hermes: Subscribed to hermes/dialogueManager/startSession
[DEBUG:2020-05-23 11:52:47,611] rhasspydialogue_hermes: Subscribed to hermes/dialogueManager/configure
[DEBUG:2020-05-23 11:52:47,612] rhasspydialogue_hermes: Subscribed to hermes/nlu/intentNotRecognized
[DEBUG:2020-05-23 11:52:47,634] rhasspywake_porcupine_hermes: Namespace(debug=True, host=‘rhasspy’, keyword=[‘alexa.ppn’], keyword_dir=[’/profiles/de/porcupine’], library=None, log_format=’[%(levelname)s:%(asctime)s] %(name)s: %(message)s’, model=None, password=None, port=1883, sensitivity=[‘0.6’], site_id=[‘default’, ‘s1’, ‘s2’, ‘s3’, ‘s4’, ‘s5’, ‘s6’], stdin_audio=False, tls=False, tls_ca_certs=None, tls_cert_reqs=‘CERT_REQUIRED’, tls_certfile=None, tls_ciphers=None, tls_keyfile=None, tls_version=None, udp_audio=None, username=None, wakeword_id=None)
[DEBUG:2020-05-23 11:52:47,636] rhasspywake_porcupine_hermes: Loading porcupine (kw=[’/usr/lib/rhasspy/lib/python3.7/site-packages/rhasspywake_porcupine_hermes/porcupine/resources/keyword_files/linux/alexa.ppn’], kwdirs=[’/profiles/de/porcupine’, ‘/usr/lib/rhasspy/lib/python3.7/site-packages/rhasspywake_porcupine_hermes/porcupine/resources/keyword_files/linux’], sensitivity=[0.6], library=/usr/lib/rhasspy/lib/python3.7/site-packages/rhasspywake_porcupine_hermes/porcupine/lib/linux/x86_64/libpv_porcupine.so, model=/usr/lib/rhasspy/lib/python3.7/site-packages/rhasspywake_porcupine_hermes/porcupine/lib/common/porcupine_params.pv)
[DEBUG:2020-05-23 11:52:47,649] asyncio: Using selector: EpollSelector
[DEBUG:2020-05-23 11:52:47,655] rhasspywake_porcupine_hermes: Connecting to rhasspy:1883
[DEBUG:2020-05-23 11:52:47,671] rhasspywake_porcupine_hermes: Connected to MQTT broker
[DEBUG:2020-05-23 11:52:47,671] asyncio: Using selector: EpollSelector
[DEBUG:2020-05-23 11:52:47,674] rhasspywake_porcupine_hermes: Subscribed to hermes/audioServer/s3/audioFrame
[DEBUG:2020-05-23 11:52:47,678] rhasspywake_porcupine_hermes: Subscribed to hermes/audioServer/s4/audioFrame
[DEBUG:2020-05-23 11:52:47,679] rhasspywake_porcupine_hermes: Subscribed to hermes/audioServer/s2/audioFrame
[DEBUG:2020-05-23 11:52:47,680] rhasspywake_porcupine_hermes: Subscribed to hermes/audioServer/s1/audioFrame
[DEBUG:2020-05-23 11:52:47,682] rhasspywake_porcupine_hermes: Subscribed to rhasspy/hotword/getHotwords
[DEBUG:2020-05-23 11:52:47,683] rhasspywake_porcupine_hermes: Subscribed to hermes/audioServer/s5/audioFrame
[DEBUG:2020-05-23 11:52:47,684] rhasspywake_porcupine_hermes: Subscribed to hermes/hotword/toggleOn
[DEBUG:2020-05-23 11:52:47,686] rhasspywake_porcupine_hermes: Subscribed to hermes/audioServer/s6/audioFrame
[DEBUG:2020-05-23 11:52:47,687] rhasspywake_porcupine_hermes: Subscribed to hermes/hotword/toggleOff
[DEBUG:2020-05-23 11:52:47,688] rhasspywake_porcupine_hermes: Subscribed to hermes/audioServer/default/audioFrame
[DEBUG:2020-05-23 11:52:47,710] rhasspywake_porcupine_hermes: Receiving audio
[DEBUG:2020-05-23 11:52:48,364] rhasspyfuzzywuzzy_hermes: Namespace(casing=‘lower’, confidence_threshold=0.0, debug=True, examples=’/profiles/de/intent_examples.json’, host=‘rhasspy’, intent_graph=’/profiles/de/intent_graph.pickle.gz’, language=‘de_DE’, log_format=’[%(levelname)s:%(asctime)s] %(name)s: %(message)s’, password=None, port=1883, replace_numbers=True, site_id=[‘default’], 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)
2020-05-23 11:52:48,365 INFO success: intent_recognition entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2020-05-23 11:52:48,367 INFO success: dialogue entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2020-05-23 11:52:48,368 INFO success: speech_to_text entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2020-05-23 11:52:48,368 INFO success: wake_word entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
[DEBUG:2020-05-23 11:52:48,367] asyncio: Using selector: EpollSelector
[DEBUG:2020-05-23 11:52:48,371] rhasspyfuzzywuzzy_hermes: Connecting to rhasspy:1883
[DEBUG:2020-05-23 11:52:48,382] asyncio: Using selector: EpollSelector
[DEBUG:2020-05-23 11:52:48,384] rhasspyfuzzywuzzy_hermes: Connected to MQTT broker
[DEBUG:2020-05-23 11:52:48,384] rhasspyfuzzywuzzy_hermes: Subscribed to rhasspy/nlu/default/train
[DEBUG:2020-05-23 11:52:48,384] rhasspyfuzzywuzzy_hermes: Subscribed to hermes/nlu/query
[DEBUG:2020-05-23 11:52:48,532] rhasspyasr_kaldi_hermes: Namespace(base_dictionary=[’/profiles/de/kaldi/base_dictionary.txt’, ‘/profiles/de/kaldi_custom_words.txt’], base_language_model_fst=’/profiles/de/kaldi/base_language_model.fst’, base_language_model_weight=0.0, debug=True, dictionary=’/profiles/de/kaldi/dictionary.txt’, dictionary_casing=‘lower’, g2p_casing=‘ignore’, g2p_model=’/profiles/de/kaldi/g2p.fst’, graph_dir=’/profiles/de/kaldi/model/graph’, host=‘rhasspy’, language_model=’/profiles/de/kaldi/language_model.txt’, log_format=’[%(levelname)s:%(asctime)s] %(name)s: %(message)s’, mixed_language_model_fst=’/profiles/de/kaldi/mixed.fst’, model_dir=’/profiles/de/kaldi/model’, model_type=‘nnet3’, no_overwrite_train=False, password=None, port=1883, reuse_transcribers=False, site_id=[‘default’, ‘s1’, ‘s2’, ‘s3’, ‘s4’, ‘s5’, ‘s6’], tls=False, tls_ca_certs=None, tls_cert_reqs=‘CERT_REQUIRED’, tls_certfile=None, tls_ciphers=None, tls_keyfile=None, tls_version=None, unknown_words=’/profiles/de/kaldi_unknown_words.txt’, username=None, voice_before_seconds=0.5, voice_min_seconds=1.0, voice_sensitivity=1, voice_silence_seconds=0.5, voice_skip_seconds=0.0, voice_speech_seconds=0.3)
[DEBUG:2020-05-23 11:52:48,533] rhasspyasr_kaldi_hermes: Loading Kaldi model from /profiles/de/kaldi/model (graph=/profiles/de/kaldi/model/graph)
[DEBUG:2020-05-23 11:52:48,536] asyncio: Using selector: EpollSelector
[DEBUG:2020-05-23 11:52:48,539] rhasspyasr_kaldi_hermes: Connecting to rhasspy:1883
[DEBUG:2020-05-23 11:52:48,551] asyncio: Using selector: EpollSelector
[DEBUG:2020-05-23 11:52:48,551] rhasspyasr_kaldi_hermes: Connected to MQTT broker
[DEBUG:2020-05-23 11:52:48,553] rhasspyasr_kaldi_hermes: Subscribed to hermes/audioServer/s5/+/audioSessionFrame
[DEBUG:2020-05-23 11:52:48,554] rhasspyasr_kaldi_hermes: Subscribed to hermes/asr/toggleOff
[DEBUG:2020-05-23 11:52:48,554] rhasspyasr_kaldi_hermes: Subscribed to hermes/audioServer/s4/audioFrame
[DEBUG:2020-05-23 11:52:48,554] rhasspyasr_kaldi_hermes: Subscribed to hermes/audioServer/default/+/audioSessionFrame
[DEBUG:2020-05-23 11:52:48,555] rhasspyasr_kaldi_hermes: Subscribed to hermes/audioServer/s4/+/audioSessionFrame
[DEBUG:2020-05-23 11:52:48,555] rhasspyasr_kaldi_hermes: Subscribed to hermes/asr/stopListening
[DEBUG:2020-05-23 11:52:48,555] rhasspyasr_kaldi_hermes: Subscribed to rhasspy/asr/s1/train
[DEBUG:2020-05-23 11:52:48,555] rhasspyasr_kaldi_hermes: Subscribed to hermes/audioServer/s1/+/audioSessionFrame
[DEBUG:2020-05-23 11:52:48,556] rhasspyasr_kaldi_hermes: Subscribed to hermes/audioServer/s2/audioFrame
[DEBUG:2020-05-23 11:52:48,556] rhasspyasr_kaldi_hermes: Subscribed to rhasspy/asr/s5/train
[DEBUG:2020-05-23 11:52:48,557] rhasspyasr_kaldi_hermes: Subscribed to rhasspy/g2p/pronounce
[DEBUG:2020-05-23 11:52:48,557] rhasspyasr_kaldi_hermes: Subscribed to hermes/audioServer/s3/audioFrame
[DEBUG:2020-05-23 11:52:48,558] rhasspyasr_kaldi_hermes: Subscribed to hermes/audioServer/s2/+/audioSessionFrame
[DEBUG:2020-05-23 11:52:48,558] rhasspyasr_kaldi_hermes: Subscribed to hermes/audioServer/s6/audioFrame
[DEBUG:2020-05-23 11:52:48,559] rhasspyasr_kaldi_hermes: Subscribed to rhasspy/asr/s3/train
[DEBUG:2020-05-23 11:52:48,559] rhasspyasr_kaldi_hermes: Subscribed to rhasspy/asr/s2/train
[DEBUG:2020-05-23 11:52:48,559] rhasspyasr_kaldi_hermes: Subscribed to hermes/audioServer/s6/+/audioSessionFrame
[DEBUG:2020-05-23 11:52:48,560] rhasspyasr_kaldi_hermes: Subscribed to hermes/asr/startListening
[DEBUG:2020-05-23 11:52:48,560] rhasspyasr_kaldi_hermes: Subscribed to hermes/asr/toggleOn
[DEBUG:2020-05-23 11:52:48,561] rhasspyasr_kaldi_hermes: Subscribed to hermes/audioServer/default/audioFrame
[DEBUG:2020-05-23 11:52:48,561] rhasspyasr_kaldi_hermes: Subscribed to hermes/audioServer/s3/+/audioSessionFrame
[DEBUG:2020-05-23 11:52:48,561] rhasspyasr_kaldi_hermes: Subscribed to rhasspy/asr/s6/train
[DEBUG:2020-05-23 11:52:48,562] rhasspyasr_kaldi_hermes: Subscribed to rhasspy/asr/default/train
[DEBUG:2020-05-23 11:52:48,562] rhasspyasr_kaldi_hermes: Subscribed to hermes/audioServer/s5/audioFrame
[DEBUG:2020-05-23 11:52:48,562] rhasspyasr_kaldi_hermes: Subscribed to rhasspy/asr/s4/train
[DEBUG:2020-05-23 11:52:48,563] rhasspyasr_kaldi_hermes: Subscribed to hermes/audioServer/s1/audioFrame
[DEBUG:2020-05-23 11:52:48,600] rhasspyasr_kaldi_hermes: Receiving audio
But after “Receiving audio” nothing happens if i speak the wake word.
Even if i push “Wake up” it seems to run in a timeout.
If i use only one satellite (and same siteID as the server) it works…
Have i something missed? Is the support for multiple satellites not yet finished?
Is a great project, please carry on that good work!