NEWS
Austausch zu neuem Alexa2 (Alpha 2.1!) SSML Feature
-
Habe jetzt mal alles mögliche mit SSML und einer Temperatur mit Punkt als Dezimaltrenner probiert, aber die say-as Regeln werden da anscheinend null umgesetzt.
Daher muss man den Punkt tatsächlich ersetzen. Allerdings ist es mit Blockly aufwändiger als gedacht, aber nicht unmöglich.
Ich habe bei mir mal noch eine Rundung am Anfang, um nur noch 1/10 statt 1/100 zu erhalten.
filename="blockly_dot2comma.jpg" index="0">~~
Idealerweise baut man den Teil in eine Funktion im Skript und kann sie so für jeden weiteren Wert anwenden.
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="comment" id="9yC:!Mo]+Ja|ngua#dcB" x="-2337" y="1097"><field name="COMMENT">Ausgangswert ist 22.25</field> <next><block type="variables_set" id="kyb53p6qG0y2b+i?ZE7)"><field name="VAR">temperature</field> <value name="VALUE"><block type="convert_tostring" id="`i)}aCg[}[,3X4gI,Lo`"><value name="VALUE"><block type="math_arithmetic" id="[U9o@^8Shy:a6SaT5Y./"><field name="OP">DIVIDE</field> <value name="A"><shadow type="math_number" id=":m83B^ocMuWT[1)v5r!%"><field name="NUM">1</field></shadow> <block type="math_round" id="zJyC;7])I;^RP#:0zUtL"><field name="OP">ROUND</field> <value name="NUM"><shadow type="math_number" id=":8im043{@komE:.%No`-"><field name="NUM">0.16666</field></shadow> <block type="math_arithmetic" id=".Rnz%lC3jhowi^0j^*T|"><field name="OP">MULTIPLY</field> <value name="A"><shadow type="math_number" id="3v;V[EwqL{E|VWc[:[/R"><field name="NUM">0.016666</field></shadow> <block type="get_value" id="N~,PW5}_38t3Mm9Zgl2T"><field name="ATTR">val</field> <field name="OID">mihome.0.devices.sensor_ht_158d0001182357.temperature</field></block></value> <value name="B"><shadow type="math_number" id="I!IH0LjtSJ`@WRLpxh{s"><field name="NUM">10</field></shadow></value></block></value></block></value> <value name="B"><shadow type="math_number" id="fQ(lV5hwk:WZ^LF}Oaml"><field name="NUM">10</field></shadow></value></block></value></block></value> <next><block type="variables_set" id="~^dN*J*MO0M,BnSlKPB("><field name="VAR">decimal</field> <value name="VALUE"><block type="text_getSubstring" id="yTtA,qJ@9f2@/AE-EpH="><mutation at1="false" at2="true"></mutation> <field name="WHERE1">FIRST</field> <field name="WHERE2">FROM_START</field> <value name="STRING"><block type="variables_get" id="%5K/d!^is(kk{u3TJgen"><field name="VAR">temperature</field></block></value> <value name="AT2"><block type="math_arithmetic" id="0+BL`~d.~kH^C=k@HbO!"><field name="OP">MINUS</field> <value name="A"><shadow type="math_number" id="dqeWj1g.3?|/lv}BP28V"><field name="NUM">1</field></shadow> <block type="text_indexOf" id="XbWz9i#c36fba:=@H*j_"><field name="END">FIRST</field> <value name="VALUE"><block type="variables_get" id="99(),.-1pJX7*,9?t3I~"><field name="VAR">temperature</field></block></value> <value name="FIND"><shadow type="text" id="j)wFGK{!g)T|QCszFSHZ"><field name="TEXT">.</field></shadow></value></block></value> <value name="B"><shadow type="math_number" id="ZU2@}SbCt;iamp+7P2*."><field name="NUM">1</field></shadow></value></block></value></block></value> <next><block type="variables_set" id="}(0k)T9PMz@e7Vo_QA;V"><field name="VAR">decimal_place</field> <value name="VALUE"><block type="text_getSubstring" id="ecCC;B,m}V|:=)eIl2QG"><mutation at1="true" at2="false"></mutation> <field name="WHERE1">FROM_START</field> <field name="WHERE2">LAST</field> <value name="STRING"><block type="variables_get" id="0GBG5_WP3Hsm(7P9m-oE"><field name="VAR">temperature</field></block></value> <value name="AT1"><block type="math_arithmetic" id="^@GB;i3GWjqi^2zyONdM"><field name="OP">ADD</field> <value name="A"><shadow type="math_number" id="dqeWj1g.3?|/lv}BP28V"><field name="NUM">1</field></shadow> <block type="text_indexOf" id="5p_F3nLTLg1!K!8:S%{I"><field name="END">FIRST</field> <value name="VALUE"><block type="variables_get" id="+=Y9BpNCNVLUcE]yJ3Td"><field name="VAR">temperature</field></block></value> <value name="FIND"><shadow type="text" id="VWNL?q]xtow,d?J25::s"><field name="TEXT">.</field></shadow></value></block></value> <value name="B"><shadow type="math_number" id="]7tSw`Q/}s[9o(NItFiv"><field name="NUM">1</field></shadow></value></block></value></block></value> <next><block type="variables_set" id="xX,UYQmi60v(!7AU!B@_"><field name="VAR">temp_with_comma</field> <value name="VALUE"><block type="text_join" id="2}A5i;,3I!,2VWW[0@XT"><mutation items="3"></mutation> <value name="ADD0"><block type="variables_get" id=".@!5JN@V5IOwh-[_BOtH"><field name="VAR">decimal</field></block></value> <value name="ADD1"><block type="text" id="!Qrz934?1,~IDf9]y1_w"><field name="TEXT">,</field></block></value> <value name="ADD2"><block type="variables_get" id="Am2qU)J3KMvAlHUMXoT@"><field name="VAR">decimal_place</field></block></value></block></value> <next><block type="debug" id="iDDsr.Gdw?=kJ-~!5b2m"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="or0T6K!uuP5AB[y.A/P!"><field name="TEXT">test</field></shadow> <block type="variables_get" id="@.bCA)+ian-9,{A8,dtU"><field name="VAR">temp_with_comma</field></block></value> <next><block type="control" id="e3vh5Q5WSQh`mMVcquvF"><mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090U50984841UJE.Commands.ssml</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text_join" id="DC-k3HUfr?})Ve:?NXk_"><mutation items="3"></mutation> <value name="ADD0"><block type="text" id="AbKDH?kmc(TQgO`8E4W)"><field name="TEXT"><speak><voice name="Hans"></field></block></value> <value name="ADD1"><block type="variables_get" id="O3:T21O7AuE[aEKdFZeQ"><field name="VAR">temp_with_comma</field></block></value> <value name="ADD2"><block type="text" id="y35N~x@?1Y~yL,aU,Tnx"><field name="TEXT"></voice></speak></field></block></value></block></value></block></next></block></next></block></next></block></next></block></next></block></next></block></xml> ```` ` baue ich gleich mal ein.
Ich habe bei mir jetzt mal eine Art kleinen Zufallsgenerator erstellt und lasse mir dann die Temperaturansage Zufallsgeneriert mit drei verschiedenen Stimmen machen.
Alexa/Hans/Marlene.
Ist nur eine Spielerei, aber funktioniert.
-
Im Alexa2.2 gibt es bei den Commands die Calendar Funktion.
Da sind Buttons. Wie setzte ich das ein und was sollen die machen?
Ich frage wegen der Kalender Eintrag Ansage. Mache das jetzt mit ical. `
Falscher Thread und tut noch nicht. Kommt noch deswegen noch nicht angekündigt … war versehen das es auf GitHub gerutscht ist
-
Habe jetzt mal alles mögliche mit SSML und einer Temperatur mit Punkt als Dezimaltrenner probiert, aber die say-as Regeln werden da anscheinend null umgesetzt.
Daher muss man den Punkt tatsächlich ersetzen. Allerdings ist es mit Blockly aufwändiger als gedacht, aber nicht unmöglich.
Ich habe bei mir mal noch eine Rundung am Anfang, um nur noch 1/10 statt 1/100 zu erhalten.
blockly_dot2comma.jpg
Idealerweise baut man den Teil in eine Funktion im Skript und kann sie so für jeden weiteren Wert anwenden. `
Irgendwas passt da noch nicht, aber ich finde nicht heraus was…
-
Was ist denn an 1,18 und 22,9 falsch?
Wie sind denn die Ausgangswerte?
Vielleicht passt das Runden bei dir nicht. Das ist für Werte mit zwei Nachkommastellen gedacht.
-
Was ist denn an 1,18 und 22,9 falsch?
Wie sind denn die Ausgangswerte?
Vielleicht passt das Runden bei dir nicht. Das ist für Werte mit zwei Nachkommastellen gedacht. ` Der Wert passt nicht…(müsste 18,1 sein)
Ich habe sechs Thermostate, aber zwei passen nicht.
Aussentemperatur wird mit ,6 angezeigt (6,2)
![](</s><URL url=)<link_text text="https://uploads.tapatalk-cdn.com/201901 ... 0aa764.jpg">https://uploads.tapatalk-cdn.com/20190115/9a18c92acaceece530a9bb09c20aa764.jpg</link_text>" /> -
ich habe einen Nachkommawert.
(aber bei manchen Thermostaten passt es ja….Zufall beim runden ?)
-
Probier es erstmal ohne das Runden und bau dir noch Debug Ausgaben für die einzelnen Bestandteile oder sogar für die Position des Punktes.
Der muss eigentlich bei 3 sein wenn es zwei Vorkommastellen gibt.
-
Probier es erstmal ohne das Runden und bau dir noch Debug Ausgaben für die einzelnen Bestandteile oder sogar für die Position des Punktes.
Der muss eigentlich bei 3 sein wenn es zwei Vorkommastellen gibt. ` ja, probiere ich.
Aber Vorkommastellen sind ja nicht immer bei drei.(gibt ja auch einstellige Temperaturen, oder ?)
-
Ja, deswegen nutze ich ja auch das "suche erstes Vorkommen". Bei 2.4 °C ist der Punkt dann an Position 2.
Aber da bei dir die 18.x Grad ja nur 1,x wurden, stimmt da was nicht. Normal muss selbst mit Runden die Anzahl der Stellen vor dem Komma gleich der vor dem Punkt bleiben.
-
Ich lese hier nun schon die ganze Zeit mit, weil ich das neue SSML seit dem ersten Tag versuche zum Laufen zu bekommen.
Bisher scheint es bei jedem zu funktionieren, nur bei mir nicht.
Die Einträge in den Objekten wurden angelegt und wenn ich zum Test die Beispiele aus Post 1 eingebe erfolgt absolut keine Sprachausgabe.
Nur die LED am Dot leuchtet für ca 2 Sekunden auf, aber es kommt kein Ton.
Die Ausgabe über speak funktioniert dagegen wie immer, speak-volume steht auf 30 bzw 50.
Ich habe hier je einen Dot3 und Dot2, bei beiden das gleiche Verhalten, nur der LED-Ring spricht kurz an, aber ohne Ton.
Wo kann ich anfangen zu suchen?
-
Ich lese hier nun schon die ganze Zeit mit, weil ich das neue SSML seit dem ersten Tag versuche zum Laufen zu bekommen.
Bisher scheint es bei jedem zu funktionieren, nur bei mir nicht.
Die Einträge in den Objekten wurden angelegt und wenn ich zum Test die Beispiele aus Post 1 eingebe erfolgt absolut keine Sprachausgabe.
Nur die LED am Dot leuchtet für ca 2 Sekunden auf, aber es kommt kein Ton.
Die Ausgabe über speak funktioniert dagegen wie immer, speak-volume steht auf 30 bzw 50.
Ich habe hier je einen Dot3 und Dot2, bei beiden das gleiche Verhalten, nur der LED-Ring spricht kurz an, aber ohne Ton.
Wo kann ich anfangen zu suchen? `
wo gibst Du das Beispiel ?
da muss es rein…
-
Genau dort, bei SSML.
Und die LED am angesprochenen Dot schlägt ja auch kurz an, nur ohne Ton
-
Ja, deswegen nutze ich ja auch das "suche erstes Vorkommen". Bei 2.4 °C ist der Punkt dann an Position 2.
Aber da bei dir die 18.x Grad ja nur 1,x wurden, stimmt da was nicht. Normal muss selbst mit Runden die Anzahl der Stellen vor dem Komma gleich der vor dem Punkt bleiben. `
Ich glaube jetzt zu wissen woher die falsche Berechnung kommt…Der letzte Wert müssten 17 Grad sein. Der Wert im Objekt steht dann auf 17°C (nicht auf 17.0°C) Es fehlt also der Punkt und die Null wenn es genau eine ganze Zahl ist...Wie könnte man das in Deinem Berechnungsbeispiel anpassen ?
EDIT: gleiche Berechnung, aber die Temperatur erhöht…(liegt also daran wie oben beschrieben)
-
Update des Blocky.
Es werden nun nur Zahlen mit Punkt umgebaut, alle anderen (mit Komma oder ohne Nachkommastelle) werden unangetastet durch gereicht.
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="comment" id="2eIdM#}2*Ld6Y+!PI,}*" x="-2337" y="1113"><field name="COMMENT">Muss durch eigenen Datenpunkt ersetzt werden</field> <next><block type="variables_set" id="C,Q+vt~R4N,O_cg4%jIz"><field name="VAR">value</field> <value name="VALUE"><block type="get_value" id="N~,PW5}_38t3Mm9Zgl2T"><field name="ATTR">val</field> <field name="OID">mihome.0.devices.sensor_ht_158d0001182357.temperature</field></block></value> <next><block type="comment" id="2ZZJVs6H?5hpH]:W;(mf"><field name="COMMENT">Prüfung ob es eine Zahl mit Punkt ist</field> <next><block type="controls_if" id="E|*.CXy#U7.!~f%[Z3uX"><mutation else="1"></mutation> <value name="IF0"><block type="logic_compare" id="5g_Q,60ArWyOy_gm!v%#"><field name="OP">GT</field> <value name="A"><block type="text_indexOf" id="Dvv.ng}8+nXc~6Wc,0LN"><field name="END">FIRST</field> <value name="VALUE"><block type="convert_tostring" id="8w@[eSuHw(Xj^W%Q-ie}"><value name="VALUE"><block type="variables_get" id="PQJ5651lB#ho,m8)N]OS"><field name="VAR">value</field></block></value></block></value> <value name="FIND"><shadow type="text" id=":~m1t|7:+{3sN??Qg8k3"><field name="TEXT">.</field></shadow></value></block></value> <value name="B"><block type="math_number" id="~Q?DphZBPZ*yd?,jn{K1"><field name="NUM">1</field></block></value></block></value> <statement name="DO0"><block type="comment" id="kQ|L%IbCckL,*QIeVv,a"><field name="COMMENT">Reduzierung auf eine Nachkommastelle</field> <next><block type="variables_set" id="kyb53p6qG0y2b+i?ZE7)"><field name="VAR">number_with_dot</field> <value name="VALUE"><block type="convert_tostring" id="`i)}aCg[}[,3X4gI,Lo`"><value name="VALUE"><block type="math_arithmetic" id="[U9o@^8Shy:a6SaT5Y./"><field name="OP">DIVIDE</field> <value name="A"><shadow type="math_number" id=":m83B^ocMuWT[1)v5r!%"><field name="NUM">1</field></shadow> <block type="math_round" id="zJyC;7])I;^RP#:0zUtL"><field name="OP">ROUND</field> <value name="NUM"><shadow type="math_number" id=":8im043{@komE:.%No`-"><field name="NUM">0.16666</field></shadow> <block type="math_arithmetic" id=".Rnz%lC3jhowi^0j^*T|"><field name="OP">MULTIPLY</field> <value name="A"><shadow type="math_number" id="3v;V[EwqL{E|VWc[:[/R"><field name="NUM">22</field></shadow> <block type="variables_get" id="IP78,/ZpG{g55_,9*^Wk"><field name="VAR">value</field></block></value> <value name="B"><shadow type="math_number" id="I!IH0LjtSJ`@WRLpxh{s"><field name="NUM">10</field></shadow></value></block></value></block></value> <value name="B"><shadow type="math_number" id="fQ(lV5hwk:WZ^LF}Oaml"><field name="NUM">10</field></shadow></value></block></value></block></value> <next><block type="comment" id="%kjM4z}uI?/:u+bB-fl;"><field name="COMMENT">Ziffern vor dem Punkt</field> <next><block type="variables_set" id="~^dN*J*MO0M,BnSlKPB("><field name="VAR">decimal</field> <value name="VALUE"><block type="text_getSubstring" id="yTtA,qJ@9f2@/AE-EpH="><mutation at1="false" at2="true"></mutation> <field name="WHERE1">FIRST</field> <field name="WHERE2">FROM_START</field> <value name="STRING"><block type="variables_get" id="%5K/d!^is(kk{u3TJgen"><field name="VAR">number_with_dot</field></block></value> <value name="AT2"><block type="math_arithmetic" id="0+BL`~d.~kH^C=k@HbO!"><field name="OP">MINUS</field> <value name="A"><shadow type="math_number" id="dqeWj1g.3?|/lv}BP28V"><field name="NUM">1</field></shadow> <block type="text_indexOf" id="XbWz9i#c36fba:=@H*j_"><field name="END">FIRST</field> <value name="VALUE"><block type="variables_get" id="99(),.-1pJX7*,9?t3I~"><field name="VAR">number_with_dot</field></block></value> <value name="FIND"><shadow type="text" id="j)wFGK{!g)T|QCszFSHZ"><field name="TEXT">.</field></shadow></value></block></value> <value name="B"><shadow type="math_number" id="ZU2@}SbCt;iamp+7P2*."><field name="NUM">1</field></shadow></value></block></value></block></value> <next><block type="comment" id="ue7mbc`1B!WmfluN^;=`"><field name="COMMENT">Ziffern nach dem Punkt</field> <next><block type="variables_set" id="}(0k)T9PMz@e7Vo_QA;V"><field name="VAR">decimal_place</field> <value name="VALUE"><block type="text_getSubstring" id="ecCC;B,m}V|:=)eIl2QG"><mutation at1="true" at2="false"></mutation> <field name="WHERE1">FROM_START</field> <field name="WHERE2">LAST</field> <value name="STRING"><block type="variables_get" id="0GBG5_WP3Hsm(7P9m-oE"><field name="VAR">number_with_dot</field></block></value> <value name="AT1"><block type="math_arithmetic" id="^@GB;i3GWjqi^2zyONdM"><field name="OP">ADD</field> <value name="A"><shadow type="math_number" id="dqeWj1g.3?|/lv}BP28V"><field name="NUM">1</field></shadow> <block type="text_indexOf" id="5p_F3nLTLg1!K!8:S%{I"><field name="END">FIRST</field> <value name="VALUE"><block type="variables_get" id="+=Y9BpNCNVLUcE]yJ3Td"><field name="VAR">number_with_dot</field></block></value> <value name="FIND"><shadow type="text" id="VWNL?q]xtow,d?J25::s"><field name="TEXT">.</field></shadow></value></block></value> <value name="B"><shadow type="math_number" id="]7tSw`Q/}s[9o(NItFiv"><field name="NUM">1</field></shadow></value></block></value></block></value> <next><block type="comment" id="4jE+y/^DQva`GSs;e)Rn"><field name="COMMENT">Zusammensetzen der Teile mit Komma</field> <next><block type="variables_set" id="xX,UYQmi60v(!7AU!B@_"><field name="VAR">number_with_comma</field> <value name="VALUE"><block type="text_join" id="2}A5i;,3I!,2VWW[0@XT"><mutation items="3"></mutation> <value name="ADD0"><block type="variables_get" id=".@!5JN@V5IOwh-[_BOtH"><field name="VAR">decimal</field></block></value> <value name="ADD1"><block type="text" id="!Qrz934?1,~IDf9]y1_w"><field name="TEXT">,</field></block></value> <value name="ADD2"><block type="variables_get" id="Am2qU)J3KMvAlHUMXoT@"><field name="VAR">decimal_place</field></block></value></block></value></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></statement> <statement name="ELSE"><block type="comment" id="F!{3tN!2A-bFji^LXN,@"><field name="COMMENT">Falls kein Punkt bzw. Nachkommastelle vorhanden</field> <next><block type="variables_set" id="So@qIYE1vO-Y){NX,I}%"><field name="VAR">number_with_comma</field> <value name="VALUE"><block type="variables_get" id=".k:xdbO+#)HDsyAEaGaD"><field name="VAR">value</field></block></value></block></next></block></statement> <next><block type="comment" id="CQ6ifzYjbo4jB`kl{]rx"><field name="COMMENT">Debugausgabe des neuen Wertes</field> <next><block type="debug" id="iDDsr.Gdw?=kJ-~!5b2m"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="or0T6K!uuP5AB[y.A/P!"><field name="TEXT">test</field></shadow> <block type="variables_get" id="@.bCA)+ian-9,{A8,dtU"><field name="VAR">number_with_comma</field></block></value> <next><block type="comment" id="~wL0fioJ`fO9}{Wt^D@:"><field name="COMMENT">Sprachausgabe auf Echo</field> <next><block type="comment" id="!3!N?G/VDVhS=~O,xZxp"><field name="COMMENT">SSML Datenpunkt muss durch eigenen ersetzt werden</field> <next><block type="control" id="e3vh5Q5WSQh`mMVcquvF"><mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090U50984841UJE.Commands.ssml</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text_join" id="DC-k3HUfr?})Ve:?NXk_"><mutation items="3"></mutation> <value name="ADD0"><block type="text" id="AbKDH?kmc(TQgO`8E4W)"><field name="TEXT"><speak><voice name="Hans"></field></block></value> <value name="ADD1"><block type="variables_get" id="O3:T21O7AuE[aEKdFZeQ"><field name="VAR">number_with_comma</field></block></value> <value name="ADD2"><block type="text" id="y35N~x@?1Y~yL,aU,Tnx"><field name="TEXT"></voice></speak></field></block></value></block></value></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></xml>
-
Genau dort, bei SSML.
Und die LED am angesprochenen Dot schlägt ja auch kurz an, nur ohne Ton `
welchen String übergibst du ihr denn in diesem Knoten?
-
welchen String übergibst du ihr denn in diesem Knoten? `
Die Beispiele aus dem ersten Posting viewtopic.php?p=218007#p218007
Keines davon bringt eine Tonausgabe, nur der LED-Ring leuchtet kurz.
-
Update des Blocky.
Es werden nun nur Zahlen mit Punkt umgebaut, alle anderen (mit Komma oder ohne Nachkommastelle) werden unangetastet durch gereicht. `
Danke, funktioniert !
Negative Werte funktionieren auch. (Die Ansage der Werte–-positiv/negativ konnte ich noch nicht testen, ich bin noch im Büro)
Mal sehen ob die Dame auch die negativen Werte vernünftig ansagt.
-
Macht sie bei mir. Hatte für das Update alle Arten von Zahlen getestet.
-
Macht sie bei mir. Hatte für das Update alle Arten von Zahlen getestet. `
Funktioniert alles wie gewünscht. Ich schreibe jetzt die erstellten Werte in extra angelegte Datenpunkte. So habe ich jetzt zur Not beides zur Verfügung, also einmal als Zahl mit Punkt und einmal als String mit Komma. Ansagen funktionieren alle.Gibt es eigentlich bei SSML auch die 250 Zeichen Begrenzung wie bei Speak ? Wenn ja, wird die auch mit einem Semikolon "erweitert", oder wie funktioniert es mit SSML ?
-
Ssml sollte keine Beschränkung haben.
Gesendet vom Handy …