NEWS
Austausch zu neuem Alexa2 (Alpha 2.1!) SSML Feature
-
Bei der Ankündigung ist es das selbe Spiel. Klappt bei EchoDot aber nicht beim Echo. Dort zuckt nicht mal der LED Ring… 'Alexa sagt' funktioniert bei beiden aber 'Nachrichten' - 'Ankündigung senden' nur beim Dot.
-
Ok ich habs! In den Einstellungen in der Alexa App war beim Echo 'Bitte nicht stören' aktiviert. Jetzt klappts auch mit ssml!! Das ist vielleicht auch bei Dir der Grund umbm. Danke Apollon77 - fürs auf die Lösung schupsen
-
Ok ich habs! In den Einstellungen in der Alexa App war beim Echo 'Bitte nicht stören' aktiviert. Jetzt klappts auch mit ssml!! `
Das war bei mir nicht aktiviert, aber es war trotzdem der Weg zu Lösung!
Ich hatte bei beiden Dot's die Option darunter "Kommunikation" deaktiviert, das war die Ursache, dass kein Ton kam.
Nun läuft es auch hier bestens.
Es gibt also doch einige Stolperfallen, auf die später dann in readme oder Wiki hingewiesen werden sollte, wenn es in der offiziellen Version unterstütz wird.
-
Mal eine Frage an die Tester von ssml.
Ich lasse mir die Temperaturen, oder auch Räume mit offenen Fenstern, oder auch eingeschaltete Steckdosen, oder auch Räume mit eingeschalteten Lampen ansagen. Dafür habe ich jeweils einen eigenen Datenpunkt als button, der im IOT eingefügt ist und auf wurde aktualisiert getriggert wird. Grundsätzlich funktioniert die Ansage auch, aber was komisch ist, wenn ich diesen Datenpunkt in der Alexa App in eine Routine einfüge und schalte funktioniert die Ansage zu 100%. Wenn ich aber genau den gleichen Datenpunkt als Gerät über die Abfrage schalte bzw. anstoße funktioniert es manchmal gar nicht bzw. es wird nur der Leuchtring eingeschaltet und dann kommt keine Ansage. Manchmal kommt noch das erste Wort und dann bricht die Ansage ab. Ich habe schon mit verschiedenen Timeouts rum probiert, aber das Ergebnis bleibt gleich. Das Blockly dahinter ist jeweils auf die gleiche Art und Weise gebaut.
Also Routine funktioniert immer, das Gerät direkt nicht immer ? (am Script bzw. Blockly kann es eigentlich nicht liegen, da ja in der Routine das gleiche Blockly angestoßen und abgearbeitet wird) Woran kann das liegen ?
Der SmartName ist Licht Ansage.
Die Frage in der Routine ist z.B.: Alexa, wo sind noch Lampen an.
Als Gerät: Alexa, Licht Ansage an. Oder auch, Alexa, schalte Licht Ansage an
Hier mal ein Beispiel für die Licht Ansage. (als Blockly Export leider zu lang)
-
` > <speak><voice name="Hans">Hey! Du!</voice>
<emphasis level="strong">Wer? ich?</emphasis>
<voice name="Hans"><amazon:effect name="whispered"><prosody rate="x-slow">Sch! Genau,</prosody></amazon:effect></voice></speak> `
:lol:
Denkst Du es könnte Sinn machen, dass man beim SSML Datenpunkt nicht <speak></speak>anzugeben braucht (wie es schn beim announcement ist)?
-
Ich würde das Tag drin lassen.
Einfach, weil es dann die komplette Struktur ist, die ja eh an Alexa geschickt wird.
Wenn du es weg lässt, dann hast du "geheime" Sachen, die im hintergrund passieren und das ergibt nur wieder Folgefragen oder Fehler.
Alternativ: Im Adapter einen Schalter einbauen, der es dem Anwender frei stellt, ob er das <speak>automatisch erzeugt haben möchte oder nicht</speak>
-
Hey,
ich möchte mich gern morgens von Alexa an einige Sachen erinnern lassen. Nun habe ich zu verschiedenen Zwecken verschiede Ansagen zusammengebastelt. Der Folgende Text, kommt anscheinend an irgendeine Grenze. Mein kompletter Text wird einfach nicht abgespielt. Ich habe die Texte mal unten eingefügt, vielleicht erkennt Ihr das Problem? Personenbezogene Daten habe ich XXX ausgetauscht. Wobei die Anzahl der Zeichen gleich blieb.
Dieser Teil wird ohne Probleme abgespielt.
! <speak>Guten Morgen Liebe Familie, heute ist Mittwoch, der,sechsteFebruar2019Es ist 10Uhr 42.Es ist Winter. da ist es besonders wichtig, dass wir unsere Vitamin D Tropfen nehmen! . Denkt bitte daran.Ich freue mich, dass Ihran einem Ferientagzum Frühstück kommt.Die Außentemperatur auf unserem Balkon beträgt zur Zeit6.8Grad Celsius. Die Luftfeuchtigkeit liegt bei62Prozent.Mama ist krank. Gute Besserungund Papa darf arbeiten.Papa hat Spätschicht. Seine Schicht beginnt um 9 Uhr 30.XXXXXXX darf in die Kita.XXXXXX darf in die Krippe.Heute Abend kommt eventuell DDDDDD zu uns , zum Video Abend . er weiß es aber noch nicht genau ..Hallo Papa, an folgendes möchte ich Dich erinnern. Magnesium nehmen.Eincremen.Vitamin D nehmen.Deine Schiene zu tragen.Deine Überung zu machen.Hallo Mama, an folgendes möchte ich Dich erinnern.dein Vitamin D nehmen.dein vitamin b12 spritzen.Hallo XXXXX, folgendes möchte ich Dir mitteilen.Hast Du Deine Vitamin Tropfen bekommen?.</speak>
Der Komplette Text aber nicht.
! <speak>Guten Morgen Liebe Familie, heute ist Mittwoch, der,sechsteFebruar2019Es ist 10Uhr 42.Es ist Winter. da ist es besonders wichtig, dass wir unsere Vitamin D Tropfen nehmen! . Denkt bitte daran.Ich freue mich, dass Ihran einem Ferientagzum Frühstück kommt.Die Außentemperatur auf unserem Balkon beträgt zur Zeit6.8Grad Celsius. Die Luftfeuchtigkeit liegt bei62Prozent.Mama ist krank. Gute Besserungund Papa darf arbeiten.Papa hat Spätschicht. Seine Schicht beginnt um 9 Uhr 30.XXXXXXX darf in die Kita.XXXXXX darf in die Krippe.Heute Abend kommt eventuell XXXXXX zu uns , zum Video Abend . er weiß es aber noch nicht genau ..Hallo Papa, an folgendes möchte ich Dich erinnern. Magnesium nehmen.Eincremen.Vitamin D nehmen.Deine Schiene zu tragen.Deine Überung zu machen.Hallo Mama, an folgendes möchte ich Dich erinnern.dein Vitamin D nehmen.dein vitamin b12 spritzen.Hallo XXXXX, folgendes möchte ich Dir mitteilen.Hast Du Deine Vitamin Tropfen bekommen?.Du hast heute Schwimmtraining.Das Training findet heute im Stadtbad NNNNöNNN statt. Das ist in der XXXXXXXXX Straße.Ihr müsst um 16 Uhr 30 spätestens da sein.Mama, denk dran, die Parkplatzsituation ist nicht so besonders.Morgen ist Maxitag. Habt Ihr Hausaufgaben auf?.Für XXXXXX habe ich auch noch was.Hat XXXXX seine Vitamin D Tropfen bekommen? .Folgende Tudus stehen noch auf dem Plan für heute.es liegt ein Paket an der ARAL Tankstelle zur Abholung bereit. Denkt an den Personalausweis bzw. die Vollmacht.ihr habt noch nicht gelüftet, bitte nachholen.In den nächsten Tagen habt Ihr einen Termin beim Physiotherapeuten.Ey, ich kann keine Infos über die nächsten Zahnarzttermine finden. Bitte eintragen. Sofort!.Mama, Papa, ich habe keine Kinderarzttermine in meiner Datenbank stehen. Ist das Korrekt?.Ich kann in meiner Datenbank keinen Termin für den nächsten Frauenarztbesuch finden. Bitte tragt die nächsten Termine ein..so, das wars. Ich wünsche Euch einen Guten Appetit</speak>
vielleicht habt ihr eine Idee, was ich falsch mache, ausser zu mitteilungsbedürftig zu sein ^^
-
Hast du einfach mal von hinten weg gekürzt bis exakt die Zeichenanzahl erreicht wird, die noch vollständig ausgegeben wird?
Könnte mir vorstellen dass es ein Zeichenlimit gibt.
In dem Fall müsstest du den Text einfach auf mehrere Strings aufteilen und die nacheinander an den Echo übergeben.
Außerdem könntest du auch den bisher nicht gesprochenen Teil mal einzeln übergeben um zu sehen ob der als solcher funktioniert. Ungewöhnliche Zeichenkombinationen sind mir jetzt nicht aufgefallen, die ggf. beim Parsen Probleme verursachen könnten.
-
Hast du einfach mal von hinten weg gekürzt bis exakt die Zeichenanzahl erreicht wird, die noch vollständig ausgegeben wird?
Könnte mir vorstellen dass es ein Zeichenlimit gibt.
In dem Fall müsstest du den Text einfach auf mehrere Strings aufteilen und die nacheinander an den Echo übergeben. `
Das war auch meine Idee. Aber wie stelle ich das an? wenn ich zwei Strings übergebe, mischt alexa den Text.string1= Guten Tag ich heisse alexa
string2= und ich heisse ingo
da macht dann alexa: "guten und tag ich ich heisse alexa heisse ingo ".
Kennst du einen Befehl, mit dem alexa es nach einander abspielt?
Ich habe es mit ssml noch nicht ausprobiert.
Würde das so funktionieren?
ssml= <speak>erster langer text</speak><speak>zweiter langer text</speak>
> Außerdem könntest du auch den bisher nicht gesprochenen Teil mal einzeln übergeben um zu sehen ob der als solcher funktioniert. Ungewöhnliche Zeichenkombinationen sind mir jetzt nicht aufgefallen, die ggf. beim Parsen Probleme verursachen könnten.
Habe ich getestet, das funktioniert. Ich glaube das Limit liegt bei 1000 Zeichen. -
Wenn du den Datenpunkt mehrfach hintereinader befüllst, muss du das natürlich mit einem delay.
D.h. du müsstest mal stoppen wie lange die Ausgabe der ersten 1000 Zeichen dauert und den zweiten Teil dann mit einem entsprechenden timeout übergeben.
Ich dachte bisher du nutzt SSML, weil den <speak>tag brauchst du doch beim speak Datenpunkt gar nicht mit übergeben.
Aber SSML wird sicher ebenso ein Zeichenlimit haben. Ob es auch bei 1000 liegt, wäre zu prüfen.</speak>
-
Wenn du den Datenpunkt mehrfach hintereinader befüllst, muss du das natürlich mit einem delay.
D.h. du müsstest mal stoppen wie lange die Ausgabe der ersten 1000 Zeichen dauert und den zweiten Teil dann mit einem entsprechenden timeout übergeben.
Ich dachte bisher du nutzt SSML, weil den <speak>tag brauchst du doch beim speak Datenpunkt gar nicht mit übergeben.
Aber SSML wird sicher ebenso ein Zeichenlimit haben. Ob es auch bei 1000 liegt, wäre zu prüfen.</speak> `
sorry habe mich blöd ausgedrückt. Ich habe beides getestet. per SSML und per Datenpunkt. Beim Datenpunkt mit ; und da war bei ca 1000 Zeichen schluss. Beim SSML das gleiche (ohne ; natürlich). auch hier lag die Grenze bei 1000 Zeichen.
> Ich habe es mit ssml noch nicht ausprobiert.
Damit meinte ich, zwei Strings zu übergeben. Den Rest hatte ich getestet. War blöd formuliert.> …muss du das natürlich mit einem delay.
Wie funktioniert das bei SSML? -
Der timeout ist nichts SSML spezifisches. Einfach mit den Standard Blockly Elementen arbeiten. Dort kannst du es innerhalb jedes "Steuere" aktivieren oder du verschachtelst sie mit timeout Blöcken. Bei Javascript kann ich es dir nicht sagen. Aber wenn du das nutzt, dann kannst du ja programmieren.
-
Sind die 1000 Zeichen SSML "gesetzt" oder vermutet? Wenn es ein Limit ist könnte ich das berücksichtigen udn mehrere "<speak>…</speak>" auch entsprechend nacheinander übergeben an Alexa
-
Aber so eon Splitting gibt es für speak doch auch nicht und der User muss sich selbst drum kümmer, also wieso auf eonmal für SSML?
-
Wenn man Text in zwei Teilen an Alexa übergibt wird doch die erste Ansage abgebrochen und die zweite gestartet. Kann man denn feststellen wann Alexa fertig ist und dann weiteren Text ausgeben?
-
Aber so eon Splitting gibt es für speak doch auch nicht und der User muss sich selbst drum kümmer, also wieso auf eonmal für SSML? `
Aber sicher gibt es so ein Splitting. Per Semikolon. Dann trennt der Adapter das in mehrerer Speak befehle die als "Sequenz" an Alexa übergeben werden und so mit einer Kurzen Pause dazwischen nacheinander abgespielt werden
-
Ah, das wusste ich auch noch nicht. Brauchte bisher aber auch keine derartig langen Textausgaben.
Kannte nur den Trick mit der Lautstärke am Anfang mit Semikolon als Trennung.
In der readme sind keine Beispiele für solche Konstrukte. Gibt es da irgendwo eine umfassende Doku?
-
https://github.com/Apollon77/ioBroker.a … ercommands ... unter der Tabelle steht das an sich alles
-
Sind die 1000 Zeichen SSML "gesetzt" oder vermutet? Wenn es ein Limit ist könnte ich das berücksichtigen udn mehrere "<speak>…</speak>" auch entsprechend nacheinander übergeben an Alexa `
bisher nur eine Vermutung. Werde es aber weiter testen 980 geht. 1020 geht nicht. Werde genaue Zahl noch austesten.
-
Aber sicher gibt es so ein Splitting. Per Semikolon. `
Kann man trotzdem irgendwie feststellen ob gerade eine Sprachausgabe erfolgt und erst die neue Ausgabe starten wenn diese beendet wurde?