FHEM > Sprachsteuerung

Modulentwicklung für Rhasspy Sprachassistent

(1/229) > >>

drhirn:
Dieser Thread ist die Fortsetzung von https://forum.fhem.de/index.php/topic,118926.msg1133694.html#msg1133694

drhirn:

--- Zitat von: Beta-User am 11 März 2021, 15:42:13 ---Glaube, die Ursache gefunden zu haben:
Da wurden teils Hashes mit leerem Inhalt erzeugt, '' ist halt nicht undef...
--- Ende Zitat ---

Jetzt hat das Hand und Fuß :)

Aber, damit's nicht langweilig wird:
"radio um 10 prozent lauter"


--- Code: ---Msg: hermes/intent/de.fhem_SetNumeric => {"input": "radio 10 percent volUp", "intent": {"intentName": "de.fhem:SetNumeric", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [{"entity": "de.fhem.Device", "value": {"kind": "Unknown", "value": "radio"}, "slotName": "Device", "rawValue": "radio", "confidence": 1.0, "range": {"start": 0, "end": 5, "rawStart": 0, "rawEnd": 5}}, {"entity": "rhasspy/number", "value": {"kind": "Number", "value": 10}, "slotName": "Value", "rawValue": "zehn", "confidence": 1.0, "range": {"start": 6, "end": 8, "rawStart": 6, "rawEnd": 10}}, {"entity": "Unit", "value": {"kind": "Unknown", "value": "percent"}, "slotName": "Unit", "rawValue": "prozent", "confidence": 1.0, "range": {"start": 9, "end": 16, "rawStart": 11, "rawEnd": 18}}, {"entity": "Change", "value": {"kind": "Unknown", "value": "volUp"}, "slotName": "Change", "rawValue": "lauter", "confidence": 1.0, "range": {"start": 17, "end": 22, "rawStart": 19, "rawEnd": 25}}], "sessionId": "wohnzimmer-snowboy-8080609b-e57b-44f5-935b-5a29bfcb8e67", "customData": null, "asrTokens": [[{"value": "radio", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 5, "time": null}, {"value": "10", "confidence": 1.0, "rangeStart": 6, "rangeEnd": 8, "time": null}, {"value": "percent", "confidence": 1.0, "rangeStart": 9, "rangeEnd": 16, "time": null}, {"value": "volUp", "confidence": 1.0, "rangeStart": 17, "rangeEnd": 22, "time": null}]], "asrConfidence": null, "rawInput": "radio zehn prozent lauter", "wakewordId": "snowboy", "lang": null}
--- Ende Code ---

Mapping macht hier den Unterschied:

--- Code: ---SetNumeric:currentVal=volume,minVal=-60,maxVal=40,cmd=volume,step=0.5,type=volume
--- Ende Code ---

Man würde davon ausgehen, dass bei einem Ausgangswert von 0 als Ergebnis 10 kommt. Wird aber -50. Liegt das am negativen minVal?


Beta-User:
Irgendwo stand, dass Rhasspy nicht mit negativen Zahlen könnte, und so gibt es an diversen Stellen Vorkehrungen, um insbesondere percent unbedingt zwischen 0 und 100 zu halten.

Insbesondere:

--- Code: ---                    $newVal =   0 if ($newVal <   0);
                    $newVal = 100 if ($newVal > 100);

--- Ende Code ---
und - zwar so beabsichtigt, aber vermutlich unwirksam - auch hier:

--- Code: ---                #my $minVal  = (defined($mapping->{minVal})) ? $mapping->{minVal} : 0; # Rhasspy kann keine negativen Nummern bisher, daher erzwungener minVal
                my $minVal  = $mapping->{minVal} // 0; # Rhasspy kann keine negativen Nummern bisher, daher erzwungener minVal
--- Ende Code ---

Würde behaupten, dass es reichen würde, die oberen beiden Zeilen auszukommentieren, habe aber die Furcht, dass das Nebenwirkungen hat...

Ähm, nicht umsonst meint perlcritic:

--- Code: ---Subroutine "RHASSPY_handleIntentSetNumeric" with high complexity score (59) at line 1918, column 1. Consider refactoring.
--- Ende Code ---
(Ist aber nicht so einfach, das ist schon klar...)

drhirn:
Rhasspy muss es eh nicht können. Das kann nicht mal 0 hab ich gerade gemerkt. Kann uns aber egal sein, ich sage Rhasspy ja nicht, es soll um -10% höher stellen.

Das Modul sollt's können. AV-Receiver arbeiten z.B. oft mit negativen dB Werten.

Beta-User:
Da hast du wohl recht...

M.E. war da auch ein Logikfehlerchen verborgen, bin mal gespannt, ob du das zwischen diesen ganzen Änderungen findest...

(Und es wäre ggf. hilfreich, die de-cfg um die neuen Fehlerkategorien zu ergänzen...)

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln