[Modul] Text to Speech (AWS Polly)

Ab sofort im Module Store und für Store-Verweigerer hier unter GitHub: TTSAWSPolly/TTSAWSPolly at master · symcon/TTSAWSPolly · GitHub

In der Doku (Link oben) sind auch alle weiteren Informationen drin. Insbesondere cool ist das Modul mit dem zur 5.2 kommenden VoIP Modul :slight_smile:

paresy

Hallo,

das Modul sollte Kugelbergs Polly-Integration ersetzen. Nach austauschen des Aufrufs „TTSAWSPOLLY_GenerateFile“
bekomme ich folgende Fehlermeldung:


Fatal error:  Uncaught Exception: File (C:\Windows\TEMP\awspolly_43132\b59bb3a4b204c8563b93c2764e90a496.mp3) has to be located on a Samba share (e.g. //ipsymcon.fritz.box/tts/text.mp3) or a HTTP server (e.g. http://ipsymcon.fritz.box/tts/text.mp3) in C:\IP-Symcon\modules\SymconSonos\Sonos\module.php:570
Stack trace:
#0 C:\IP-Symcon\modules\SymconSonos\Sonos\module.php(670): Sonos->PlayFiles('["\\/\\/Steb3aSer...', '0')
#1 C:\IP-Symcon\scripts\__generated.inc.php(3823): Sonos->PlayFilesGrouping('{"54479":{"volu...', '["\\/\\/Steb3aSer...', '60')
#2 C:\IP-Symcon\scripts\42437.ips.php(27): SNS_PlayFilesGrouping(35488, '{"54479":{"volu...', '["\\/\\/Steb3aSer...', 60)
#3 {main}
  thrown in C:\IP-Symcon\modules\SymconSonos\Sonos\module.php on line 570
Abort Processing during Fatal-Error: Uncaught Exception: File (C:\Windows\TEMP\awspolly_43132\b59bb3a4b204c8563b93c2764e90a496.mp3) has to be located on a Samba share (e.g. //ipsymcon.fritz.box/tts/text.mp3) or a HTTP server (e.g. http://ipsymcon.fritz.box/tts/text.mp3) in C:\IP-Symcon\modules\SymconSonos\Sonos\module.php:570
Stack trace:
#0 C:\IP-Symcon\modules\SymconSonos\Sonos\module.php(670): Sonos->PlayFiles('["\\/\\/Steb3aSer...', '0')
#1 C:\IP-Symcon\scripts\__generated.inc.php(3823): Sonos->PlayFilesGrouping('{"54479":{"volu...', '["\\/\\/Steb3aSer...', '60')
#2 C:\IP-Symcon\scripts\42437.ips.php(27): SNS_PlayFilesGrouping(35488, '{"54479":{"volu...', '["\\/\\/Steb3aSer...', 60)
#3 {main}
  thrown
   Error in Script C:\IP-Symcon\modules\SymconSonos\Sonos\module.php on Line 570

Ausserdem, werden die generierten Daten nicht mehr gespeichert??? Zumindest kann kein Pfad mehr angegeben werden.

Gruß Proxima

Das Modul hier gibt einen lokalen Dateipfad zurück, und keinen Samba Pfad.
Das musst du schon selber umsetzen.
Es steht auch nirgendwo das es Kugelbergs Modul ersetzen soll, oder gar kompatibel dazu ist.
Michael

Primär ist es dazu gedacht, dass es mit dem kommenden VoIP Modul kompatibel ist :slight_smile:

paresy

Hallo
gibt es eine Möglichkeit dem Modul vorzugeben wo die Datei gespeichert werden soll ?
zzt. liegt sie unter c:/Windows/Temp/awspolly_xxx/
oder wie mache ich es am geschicktesten das ich die Datei dann ein Client per Webbrowser laden kann.

In den /webfront/User ordner umkopieren ist ja auch nicht sooo geil.

Hintergrund: Ich habe an meinen Android Tablets lange eine Kombination aus SVOX Classic (TTS) und „terremote“ benützt. leider ist beides nicht mehr verfügbar. Nun versuche ich mich an AWSPOLLY und FullyKiosk Browser.
Soweit alls gut, aber die Polly mp3 Files umkopieren gefällt mir irgendwie nicht.

bin wohl etwas eingerostet
bb

Edit: ok, hab mal den Code vom Modul angesehn. Pfad ist auf „sys_get_temp_dir“ hardgecodet. Von da her geht wohl nix.
Hab die ganze Modulstory leider ein wenig verschlafen (steh immer noch auf Scripte), was passiert wenn ich das für mich patche ? Passiert da ein autoupdate und bei nächster Gelegenheit ist es wieder weg ?

WebFront User Ordner ist Out.
Nimm das hier:
IPSNetwork/HookReverseProxy at master · Nall-chan/IPSNetwork · GitHub
Obwohl… Das ist dahingehend doof, weil der Dateiname ja nie gleich ist.
Alternativ sonst mit TTSAWSPOLLY_GenerateData die Rohdaten in Base64 kodiert erzeugen und diese dann selber als Datei abspeichern.
Michael

Danke Michael

  • wußte gar nicht das es ein Reverseproxy Modul gibt. Kann man sicher mal bei anderer Gelegenheit brauchen.
    Deinen zweiten Vorschlag fínde ich gut. Das müßte ich hinbekommen. Hat auch den Vorteil das ich die Sounddatei immer gleich nennen kann, damit erspare ich mir Aufräumarbeiten.

schönen Dank
Bernhard

Hi Michael.
Danke nochmal für den Tip. Habs entsprechend eingebaut - funktioniert astrein.
gruß
bb

Hallo zusammen,

ich hab das eben versucht zum laufen zu bekommen, wenn ich das so machen:

<?php

 $id = VOIP_Connect(30004, "301");

 for($i = 0; $i <= 10; $i++) {
     IPS_Sleep(1000);
     $c = VOIP_GetConnection(30004, $id);
     if($c['Connected']) {
        VOIP_PlayWave(30004, $id, IPS_GetKernelDir() . "/media/willkommen.wav");
        return;
     }
 }

 VOIP_Disconnect(30004, $id);

höre ich die Audio, wenn ich es so mache:

<?php

 $id = VOIP_Connect(30004, "301");

 for($i = 0; $i <= 10; $i++) {
     IPS_Sleep(1000);
     $c = VOIP_GetConnection(30004, $id);
     if($c['Connected']) {
        VOIP_PlayWave(30004, $id, TTSAWSPOLLY_GenerateFile(39015, "Alarm! Es brennt im Keller!"));
        return;
     }
 }

 VOIP_Disconnect(30004, $id);

Höre ich keine Audio, das Polly Modul hab ich sowohl mit MP3 als auch mit WAV probiert, keine Änderung…

Hat jemand eine Idee?

Vielen Dank und viele Grüße Robert

Hallo,

ich wollte auch mal schauen ob Polly für meine Anforderungen taugt, aber leider erhalte ich im Store nur die Meldung
„Konnte Modul nicht installieren, Operation aborted Code -32603“

Was kann man da machen?

Ich meine mich erinnern zu können, dass ich das Problem auch hatte. Ich habe es „manuell“ installiert…

@rtausend: Stimmen ganz sicher die Parameter? Es muss wie in der Doku beschrieben WAV im Format: 16 Bit, 8000 Hz, Mono sein.

Operation aborted klingt so, als wenn er es nicht herunterladen kann. Wie schnell ist deine Internet Verbindung?

paresy

Frage:
Wenn man jetzt, Zufriedenheit herrscht, das Modul vom Kugelberg durch eures ersetzen möchte, geht das jetzt OHNE Probleme oder muss irgendetwas (samba pfad,…) geändert werden?
Danke

Warum würdest du das machen wollen? Das Modul von Kugelberg ist für SONOS optimiert. Unseres geht dafür eigentlich gar nicht. Unseres ist für das VoIP Modul optimiert. Im Zweifelsfall beide Module drin haben.

paresy

Ok, Danke für die Info!

Hallo,

kann mir jemand helfen und hätte eine kurze Anleitung an welcher Stelle und wie ich eine generierte MP3 in das VoIP-Script einbaue?

Eine generierte Datei landet unter:
C:\Windows\TEMP\awspolly_256446\sw34hhhe45h645657hkkjgggkk.wav

Wie baue ich diese Datei als Begrüßung in das VoIP-Script ein?

VoIP_PlayWave(12345, 3, IPS_GetKernelDir() . "/media/willkommen.wav");

„12345“ ist die ID der VoIP-Instanz?
„3“ Ist was?
Pfad - wie komme ich an die Datei?

LG
Tom

Hier in der Modulreferenz vom VOIP Modul ist alles beschrieben:
www.symcon.de/service/dokumentation/modulreferenz/voip/voip-playwave/

Das habe ich natürlich bereits getan. Jedoch nicht verstanden bzw. nicht so um es zum Spielen zu bekommen.

Problem ist geklärt. Funktioniert wie gewünscht. Habe die erstellten Dateien in den IPS-Media-Ordner kopiert.

LG
Tom

Ich habe dies so wie im Musterskript aus der Doku bei mir gelöst.


if($_IPS['SENDER'] == "Execute") {
    $id = VoIP_Connect(12345, "0451305005xx");
 
    //Maximal 10 Sekunden warten, dass einer abnimmt
    for($i = 0; $i < 10; $i++) {
        IPS_Sleep(1000);
        $c = VoIP_GetConnection(12345, $id);
        if($c['Connected']) {
            // VoIP_Playwave() unterstützt ausschließlich WAV im Format: 16 Bit, 8000 Hz, Mono.
            VoIP_PlayWave(12345, $id, TTSAWSPOLLY_GenerateFile(23456, "IP-Symcon wünscht einen wunderbaren Tag"));
            return;
        }
    }
 
    //Auflegen, falls keiner abnimmt
    VoIP_Disconnect(12345, $id);
}

www.symcon.de/service/dokumentation/modulreferenz/voip/

Ich generiere die Sprache jedesmal neu.
12345 ist die ID vom VOIP Modul.