AWS Polly Modul (TTS)

Weiß jemand, wie ich das bei der Übergabe von IPS nach Polly übergeben kann?

so geht es bei mir:

$text = '<speak>Symcon  <amazon:breath duration="x-long" volume="x-loud"/>  <emphasis level="strong">macht Spass</emphasis>..</speak>';
	
$mp3_file =  POLLY_saveMP3(39574 /*[Sprachausgabe Test\Polly]*/, $text); 

Hallo zusammen,

Bekomme das Modul leider nicht zum laufen…

Beim versuch ein mp3 File zu speichern kommt Folgende Meldung:

Fatal error: Uncaught Exception: Response from Ivona is no mp3: {„message“:"‚AKIAIGZNANVTM5XARJRQ/20180819/eu-west-1/polly/aws4_request‘ not a valid key=value pair (missing equal-sign) in Authorization header: ‚AWS4-HMAC-SHA256 Credential= AKIAIGZNANVTM5XARJRQ/20180819/eu-west-1/polly/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=61777625eec45eafa3bb37b89fbece07197188ca1ea2832249e8265e0681f109‘."} in /var/lib/symcon/modules/AWSPolly/Polly/polly.php:105
Stack trace:
#0 /var/lib/symcon/modules/AWSPolly/Polly/polly.php(42): POLLY_TTS->get_mp3(‚Geht das so?‘)
#1 /var/lib/symcon/modules/AWSPolly/Polly/module.php(90): POLLY_TTS->save_mp3(‚Geht das so?‘, ‚C:\IP-Symcon\ t…‘)
#2 /var/lib/symcon/scripts/__generated.inc.php(7): Polly->saveMP3(‚Geht das so?‘)
#3 /var/lib/symcon/scripts/11653.ips.php(3): POLLY_saveMP3(50092, ‚Geht das so?‘)
#4 {main}
thrown in /var/lib/symcon/modules/AWSPolly/Polly/polly.php on line 105

Weis hier jemand woran das liegen kann?

dann kommt folgende Meldung:

Fatal error: Uncaught exception ‚Exception‘ with message ‚Response from Ivona is no mp3: {„message“:„3 validation errors detected: Value null at ‚voiceId‘ failed to satisfy constraint: Member must not be null; Value null at ‚text‘ failed to satisfy constraint: Member must not be null; Value null at ‚outputFormat‘ failed to satisfy constraint: Member must not be null“}‘ in C:\IP-Symcon\modules\AWSPolly\Polly\polly.php:105
Stack trace:
#0 C:\IP-Symcon\modules\AWSPolly\Polly\polly.php(42): POLLY_TTS->get_mp3(‚Guten Morgen J\xC3…‘)
#1 C:\IP-Symcon\modules\AWSPolly\Polly\module.php(90): POLLY_TTS->save_mp3(‚Guten Morgen J\xC3…‘, ‚C:/IP-Symcon/we…‘)
#2 C:\IP-Symcon\scripts__generated.inc.php(247): Polly->saveMP3(‚Guten Morgen J\xC3…‘)
#3 C:\IP-Symcon\scripts\23216.ips.php(4): POLLY_saveMP3(30468, ‚Guten Morgen J\xC3…‘)
#4 {main}
thrown in C:\IP-Symcon\modules\AWSPolly\Polly\polly.php on line 105

@Adrian01 Hast du deine Zugangsdaten richtig eingetragen?
In der Fehlermeldung steht was von "not a valid key=value pair (missing equal-sign) in Authorization header"

In dieser Ansage ist der Kalendereintrag aus Google mit drin. Dort hatte ich ein „ü“ drin. Das kann Polly irgendwie nicht interpretieren.
Im google Kalendersript habe ich nun vor dem schreiben der Variable $event_display noch folgendes eingefügt und jetzt plappert sie wieder.

$event_display = utf8_encode($event_display);
$event_display = preg_replace("/ä/", "ae", $event_display);
$event_display = preg_replace("/ö/", "oe", $event_display);
$event_display = preg_replace("/ü/", "ue", $event_display);

Hallo
Ich möchte mir die Temperatur ansagen lassen. Ich habe eine Float-Variable die die Temperatur an Polly übergibt.

Polly sagt mir manchmal „Die Temperatur beträgt drei Komma fünf grad“ oft aber „Die Temperatur beträgt drei fünf grad“.

$data = POLLY_getMP3(23342,"<speak> Das Wetter ist Heute".$Wetter.". Die Temperatur betraegt".$Temperatur." °. </speak>"); 

Wie bringe ich Polly dazu dass sie mir immer das Komma sagt. In der Doku von Amazon habe ich nichts brauchbares gefunden.

Danke

Vor Übergabe an Modul: Float in String wandeln !
Gruss lueralba

Danke für Dein Tipp. Polly will aber das Komma immer noch nicht sagen. Mache ich da etwas falsch, oder will Polly einfach nicht…
Hier mein Code:

$Temperaturfloat = GetValueFloat(39591);
$Temperatur = strval($Temperaturfloat);
$Wetter = GetValueString(21438);
$Zeit = GetValueString(37431);
// Daten holen und in $data speichern.
$data = POLLY_getMP3(23342,"<speak> Das Wetter ist Heute".$Wetter.". Die Temperatur betraegt".$Temperatur." °.  </speak>"); 

Nimm GetValueFormatted, dann wird es so ausgegeben wie das Profil es vorgibt.
https://www.symcon.de/service/dokumentation/befehlsreferenz/variablenzugriff/getvalueformatted/
Michael

Danke für die Hilfe.
Polly will einfach nicht.:confused: Sie behauptet immer noch: Die Temperatur beträgt sechs neun Grad.
Ich denke es liegt nicht an der String-Variable.
Es bleibt mir wahrscheinlich nichts anderes übrig als den Temperaturwert aufzurunden oder beim Komma zu zerlegen und ein „Text-Komma“ einzufügen.

Du kannst es in der Polly Console ausprobieren https://us-east-2.console.aws.amazon.com/polly/home/SynthesizeSpeech

Bei mir gibt Polly die Dezimalzahl richtig aus.

Beispiel: „Es ist 3,6 Grad warm.“

Fehler gefunden:). Da fehlte nur ein „Leerzeichen“ zwischen beträgt und „.$Temperatur.“
Die Temperatur betraegt".$Temperatur." °
Das hat Polly anscheinend verwirrt.
:banghead:
Was so ein „nichts“ alles ausmacht…
Danke für eure Hilfe

Hallo,
habe jetzt IPS 5.1 im Docker Container auf meiner Synology installiert.
Wenn ich jetzt durch Polly eine Datei erzeugen will, wird der Pfad zur Datei nicht gefunden.

Sind die Einträge Default Path und Access Path nicht richtig?

Komme da leider überhaupt nicht weiter. :banghead:

Grüße,
Jürgen

Hi,

nein.
Was auch immer im dicker läuft kennt nur die gemappten Pfade.
Wenn ich das bei Dir richtig interpretiere müsste das dann mit „/data“ anfangen…

Bei Access Path könnte es sogar funktionieren, wenn Deine Synology (?) diesen Pfad freigibt und z.B. Sonos darauf zugreifen kann.

Gruß,
Thorsten

Hallo Thorsten,
danke für deine Hilfe. Funktioniert leider trotzdem nicht.

Hier meine Containereinstellungen

Polly 4.PNG

Habe auch schon versucht den Default Path auf /docker/symconBETA/data zu stellen -> gleiches Ergebnis

Grüße

Dein Verzeichnis „/volume1/docker/symconBETA/data“ ist ja auf „/var/lib/symcon“ gemountet.
Daher ist die Datei „/volume1/docker/symconBETA/data/blubber.mp3“ im Docker Container unter „/var/lib/symcon/blubber.mp3“ erreichbar.

Da ich in einem Deiner Screenshots nur bis „/volume1/docker/symconBETA/data/Spra“ lesen konnte, ersetzte da einfach mal „/volume1/docker/symconBETA/data“ durch „/var/lib/symcon“. Dann sollte es gehen.

Gruß,
Thorsten

Danke Thorsten,
hat jetzt geklappt. :smiley:

Grüße,
Jürgen

Hallo Thorsten,

durch deine Hilfe habe ich ja meine Sprachansage hinbekommen.
Jetzt hat sich jedoch beim Sonos Modul etwas geändert und ich bekomme jetzt folgende Fehlermeldung:

Habe auch schon mit folgendem Aufruf versucht -> funktioniert auch nicht.

Könntest Du mir dabei nochmal helfen?

Grüße,
Jürgen

Hi,

Schau Dir mal die letzten Beiträge im Sonos Thread oder die Sonos Doku an.
Du musst das Array zwischen json_encode() schreiben, oder direkt anstelle des Array den JSON String angeben.

Gruß,
Thorsten