@tobetobe
Hi,
ich habe mich nach Deinen Erläuterungen auch mal an Rasspy gewagt.
Habe es auch soweit hinbekommen, daß ich die Installation auf einem Rasp3B unter Raspbian Buster light im Docker mit deutschem Profil hinbekommen habe.
Ich habe dazu diese Anleitung verwendet: Rhasspy-Installation (Docker)., allerdings das Rhasspy-Docker-Image auf de geändert ( -- profile de ) :
docker run -d -p 12101:12101 \
--restart unless-stopped \
-v "$HOME/.config/rhasspy/profiles:/profiles" \
--device /dev/snd:/dev/snd \
synesthesiam/rhasspy-server:latest \
--user-profiles /profiles \
--profile de
Ich muß gestehen, daß ich mich noch nie mit Docker beschäftigt habe und auch jetzt nicht so recht weiß, wozu ich das brauche?
Als Micro verwende ich das ReSpeaker 4-Mic Array:

War etwas kompliziert, die Treiber dafür zu installieren, aber jetzt läuft es, allerdings ohne die farbigen LEDs (damit kann ich aber leben).
Nach Aufruf der entspr. <IP>:12101 im Browser war dann auch die Benutzeroberfläche von Rhasspy zu sehen.
Dann habe ich einige Wörter im Reiter Words angelegt:
wohnzimmerlampe V OOH N TS IH M EX L AH M P AX
wandspots V AH N CH P AO TS
an Q AH N
aus Q AW S
esstischlampe Q EH S TS IH SH L AH M P EHH
palme P AH L M AX
hydro HH YYH D RR OOH
regal RR EEH G AAH L
regallicht RR EEH G AAH L L IH CC T
fernsehbeleuchtung F EH EX N Z EEH B AX L OO OH CC T UU NG
couchbalkon K AH UH CH B AH L K OOH N
ledwürfel L EH D V YY RR F AX L
Habe auch versucht, die Aussprache (Pronounciation)zu testen, aber das hört sich m.E. doch recht "hölzern" an.
Die Aussprache hört sich allerdings nur halbwegs verständlich an, wenn die Ausgabe ich "Phonemes" stelle, und nicht wie von Dir vorgeschlagen auf "Words"?
Dann habe ich im Reiter "Sentences" unter [ChangeLightState] diese Wörter entspr. eingtragen, weil ich damit einige Lampen, bzw. 433 MHZ Steckdosen steuern will:
[ChangeLightState]
light_name = (fernsehbeleuchtung | esstischlampe | wandspots | regallicht | palme | hydro | ledwürfel ) {name}
light_state = (ein | aus) {state}
schalte (die | das) <light_name> <light_state>
Im Reiter "Slots" habe ich gar nichts eingtragen.
In den "Settings" habe ich MQTT mit enstpr. IP-Adresse des ioBroker enabled.
Im ioBroker-Datenpunkt mqtt.0.rhasspy.intent.ChangeLightState kommt dann auch der entspr. JSON-String an, wie z.B: {"name": "fernsehbeleuchtung", "state": "aus"}
Diesen Datenpunkt werte ich dann mit einem JavaScript aus:
//#####################################################################
// Rhasspy empfangen und entspr.Datenpunkte setzen
//#####################################################################
const empfangen = 'mqtt.0.rhasspy.intent.ChangeLightState' // Infrarot empfangen
on({id: empfangen, change: "any"},function(obj) {
let empf_code = getState(empfangen).val ;
//log ("EMPF-CODE: " + empf_code);
let empf_json = JSON.parse(empf_code);
//log ("EMPF_JSON: " + empf_json);
let name = empf_json.name;
let state = empf_json.state;
log ("name: " + name + " state: " + state);
if (name == "wandspots" && state == "ein") { setState ('hm-rpc.2.CUX4000001.7.PRESS_LONG', true); log ("wandspots ein"); }
else if(name == "wandspots" && state == "aus") { setState ('hm-rpc.2.CUX4000001.7.PRESS_SHORT', true); log ("wandspots aus"); }
else if(name == "regal" && state == "ein") { setState ('hm-rpc.2.CUX4000001.1.PRESS_LONG', true); log ("regallicht ein"); }
else if(name == "regal" && state == "aus") { setState ('hm-rpc.2.CUX4000001.1.PRESS_SHORT', true); log ("regallicht aus"); }
else if(name == "palme" && state == "ein") { setState ('hm-rpc.2.CUX4000001.3.PRESS_LONG', true); log ("palme ein"); }
else if(name == "palme" && state == "aus") { setState ('hm-rpc.2.CUX4000001.3.PRESS_SHORT', true); log ("palme aus"); }
else if(name == "hydro" && state == "ein") { setState ('hm-rpc.2.CUX4000001.8.PRESS_LONG', true); log ("hydro ein"); }
else if(name == "hydro" && state == "aus") { setState ('hm-rpc.2.CUX4000001.8.PRESS_SHORT', true); log ("hydro aus"); }
else if(name == "ledquub" && state == "ein") { setState ('hm-rpc.2.CUX4000001.5.PRESS_LONG', true); log ("ledcube ein"); }
else if(name == "ledquub" && state == "aus") { setState ('hm-rpc.2.CUX4000001.5.PRESS_SHORT', true); log ("ledcube aus"); }
else if(name == "fernsehbeleuchtung" && state == "ein") { setState ('hm-rega.0.10074', true); log ("fernsehlicht ein"); }
else if(name == "fernsehbeleuchtung" && state == "aus") { setState ('hm-rega.0.10074', false); log ("fernsehlicht aus"); }
}); // Ende on(id)
Das funktioniert auch soweit und die entspr. Steckdosen werden geschaltet, allerdings nur wenn ich vor dem Absetzen des Sprachbefehls den gelben "WAKE-Button" drücke.
Soweit, so gut - evtl. kannst Du mir noch ein paar Tipps zu folgenden Fragen geben?:
1.) Ich bin mir nicht sicher, ob ich wirklich das deutsche Profil verwende.
In der Oberfläche von Rhasspy wird zwar "de" angezeigt, die Aussprache hört sich m.E. trotzdem recht Englsch an.
(Ich habe auch im Reiter "Advanced" alle Begriffe des Profils von "en" auf "de" geändert.)
2.) Wozu ist der "Train-Button" (trainieren)?
Wenn ich den Anklicke und ein paar mal ein Wort, oder Satz spreche, kommt nur eine Meldung, wie z.B.: Training completed in 4.32 second(s)
Was und wozu soll da trainiert werden? ( ein Wort, ein Satz ? ), bzw. wo wirkt sich das aus?
3.) Ich bekomme es um's Verrecken nicht hin, das Rhasspy auf ein Wake-Word reagiert.
Ich habe in den Settings bei "Wake Word": Use Pocketsphinx on this device angehakt, aber wenn ich dann "okay rhasspy" sage, tut sich nichts.
Ich habe es auch mit Snowboy und Porcupine versucht, aber da sind dann wohl Zusatzinstallationen notwendig?
Bei Porcupine steht als Hinweis: "Put keyword files in the porcupine directory in your profile", aber ich weiß leider nicht, wo mein profile-Verzeichnis liegt
Wahrscheinlich liegt das irgendwo in den Tiefen des Docker-Containers, aber wie schon erwähnt, kenne ich mich mit Docker nicht aus.
Es wäre nett, wenn Du mir bei meinen Fragen helfen könntest, wobei mir primär das Problem mit dem Wake-Word am wichtigsten ist, denn wenn ich jedes Mal erst den Wake-Button drücken muss, ist Rhasspy ja eigentlich nutzlos.
Gruß und Danke im Voraus
Jörg