Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS19001055 - Amazon Polly TextToSpeech

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    LBS19001055 - Amazon Polly TextToSpeech

    Nachdem ich schon einen Text-To-Speech Baustein auf Basis von Linux Boardmitteln erstellt habe, der allerdings kleinere Probleme insbesondere mit kleinen MP3 erzeugte, habe ich nun den TextToSpeech Service Polly von Amazon in EDOMI integriert.

    Der zugehörige LBS ist 19001055 Amazon Polly TTS.

    2017-05-24 12_01_21-knx-user-forum Service - Downloadbereich.png

    Zur Anbindung dieses Service wird das aktuelle AWS PHP SDK verwendet, welches allerdings eine aktuelle PHP Version benötigt. Diese habe ich pre-compiliert und per github bereitgestellt. D.h. die Installation sollte einfach und schnell funktionieren. Positiver Nebeneffekt ist, dass dann sowohl das AWS PHP SDK als auch PHP 5.6 auf dem EDOMI Server im Verzeichnis /opt installiert ist, welche auch für zukünftige LBS interessant sein kann. Diese kann ohne Einfluss auf EDOMI parallel installiert sein.

    Die Installaton kann durch das beiliegende Installationsskript erfolgen oder durch folgende Befehle:

    Code:
    yum -y install git 
    mkdir -p /opt
    cd /opt
    git clone https://github.com/jonofe/php56-edomi
    Danach kann der LBS in EDOMI eingefügt und konfiguriert werden.

    Um den LBS nutzen zu können, muss natürlich ein AWS Acocunt vorhanden sein.
    Außerdem ist zu beachten, dass der Service kostenpflichtig ist. In den ersten 12 Monaten ist allerdings ein Kontingent von 5 Mio Zeichen pro Monat frei, was quasi kostenlos bedeutet. Danach kosten 1Mio Zeichen 4 US $.

    Um den AWS Access Key und Secret Key zu erstellen, muss man wie folgt vorgehen:
    1. Zuerst in die AWS Console einloggen
    2. Dem Link https://console.aws.amazon.com/iam/home#/users folgen
    3. Auf "Add new User" klicken.
    4. Usernamen eingeben (z.B. edomi-polly)
    5. "Programmatic Access" auswählen.
    6. Auf "Next Permissions" klicken
    7. Auf "Attach existing policies directly" klicken
    8. Den Eintrag "AmazonPollyFullAccess" auswählen.
    9. Ganz unten auf "Next Review" Button klicken.
    10. Auf "Create User" Button klicken
    11. In der Secret Access Key Spalte auf "Show" klicken.
    12. Access Key ID und Secret access key kopieren und im LBS auf E3/E4 verbinden.
    Das wars! Jetzt sollte ein Kommunikation mit Amazon Polly möglich sein.

    E6 ist der einzige Triggereingang dieses LBS und es wird der Text erwartet, der dann in ein Audio File umgewandelt werden soll.
    Formate mp3, ogg_vorbis, raw und json wird unterstützt. Samplerate kann 8000,16000 oder 22050 Hz sein. Die deutschen Voice ID sind "Marlene" oder "Hans".
    Alle anderen Eingänge sollten eigentlich sinnvoll vorbelegt sein. Detailliertere Erklärungen sind im Hilfstext des LBS zu finden.

    Viel Spaß damit ...



    #2
    Jonofe... Meinen Dank.
    All deine Bausteine sind zukunftsweisend!!!!



    ​​​​​​Sprachausgabe ist hervorragend!!
    Nutze das schon beim music-server.net
    http://music-server.net/help/MusikSe...xt2Speech.html

    Ps
    Es fehlt eindeutig ein Strauss Blumen smiley
    ​​​​
    Zuletzt geändert von trollmar; 24.05.2017, 12:15.
    Jean-Luc Picard: "Things are only impossible until they are not."

    Kommentar


      #3
      Möchtest Du Deinen vorherigen LBS aktualisieren? Oder wird er nun nicht mehr gepflegt?

      Kommentar


        #4
        Zitat von Marha Beitrag anzeigen
        Möchtest Du Deinen vorherigen LBS aktualisieren? Oder wird er nun nicht mehr gepflegt?
        Der ist weiterhin gültig und kann auch genutzt werden. Insbesondere, da der ja komplett kostenfrei ist und für viele Anwendungsfälle bestimmt noch passt.
        Dieser LBS ist einfach eine professionellere Alternative zum bisherigen LBS.

        Kommentar


          #5
          Dachte vielleicht, du könntest die kleinen Probleme des bisherigen LBS ausmerzen, falls das überhaupt geht.

          Kommentar


            #6
            Es sind ja nur Probleme in Zusammenspiel mit Squeezelite. Und die Ursache ist nicht wirklich klar. Daher muss dann jeder für sich entscheiden je nach Anwendungsfall, welchen LBS er verwendet.

            Kommentar


              #7
              Mit dem neuen LBS gibt's keine Probleme mehr mit Squeezelite? Das wäre ein Grund umzusteigen.

              Kommentar


                #8
                musst du mal testen. ich habe ihn insbesondere wegen der deutlich besseren Sprachqualität erstellt.

                Kommentar


                  #9
                  Hi Jonofe,
                  kurze Frage zum Polly-Baustein: bisher mache ich ähnliches auf meinem Linux server.
                  Dabei habe ich eine caching eingebaut - da man im HS-Kontext ja doch häufig wiederholende Texte wiedergibt (z.B. Garage wird geöffnet, Weckzeit ist xyz, verschiedene alarme...).
                  Dieses Caching bringt 2 Vorteile:
                  a) Texte die bereits gecached sind kommen schneller
                  b) man spart serverlast - und damit später evtl. auch Kosten.

                  Hast du ein Caching eingebaut oder schonmal drüber nachgedacht? Wenn ja - währe ein gezieltes Löschen des Caches per Baustein sicherlich sinnvoll (falls sich die Stimme mal ändert - oder gecachte Aufnahmen kaputt sind) - oder vielleicht eine einfache Prüfung "existiert der Filename schon -> wenn ja: erneute Erzeugung überspringen".

                  Kleines Feedback zum Baustein (keine Kritik - nur Verbesserungsvorschläge):
                  * In der integrierten Hilfe sind E12/E13 nicht beschrieben
                  * E5 (AWS region) ist auch nicht erwähnt - dadurch verschieben sich die anderen Ausgänge.
                  * E12 ist unklar (php-binary <> Full path to folder where all output files will be stored)

                  Gruß
                  Thorsten

                  Nachtrag: bei mir läuft der Baustein leider nicht. Wenn ich ihn triggere kommt nichts an einem Ausgang.
                  Die Inputs sind noch ziemlich default.
                  Das log zeigt mir auch nichts auffälliges...

                  Code:
                  {EDOMI,CUSTOMLOG_Amazon_Polly_TTS-LBS19001055.log,24.07.2017,15:23:26,315340,22952}{Zeitstempel,ms,PID,LogLevel,Meldung}
                  2017-07-24 15:23:26            315172         22952          debug          LBS19001055 [v0.1]:            LBS Amazon Polly TTS started (3929)
                  2017-07-24 15:23:26            316685         22952          debug          LBS19001055 [v0.1]:            LBS Amazon Polly TTS ended (3929)
                  2017-07-24 15:29:13            564393         22952          debug          LBS19001055 [v0.1]:            LBS Amazon Polly TTS started (3929)
                  2017-07-24 15:29:13            565757         22952          debug          LBS19001055 [v0.1]:            Calling Amazon Polly TTS EXEC script (3929)
                  2017-07-24 15:29:13            574234         22952          debug          LBS19001055 [v0.1]:            LBS Amazon Polly TTS ended (3929)
                  2017-07-24 15:29:13            649985         27749          debug          EXE19001055 [v0.1]:            Amazon Polly TTS EXEC script started (3929)
                  2017-07-24 15:29:13            651808         27749          debug          EXE19001055 [v0.1]:            External php call: /opt/php56-edomi/bin/php  XXXX (3929)
                  2017-07-24 15:29:13            659966         27749          debug          EXE19001055 [v0.1]:            External php call result:  (3929)
                  2017-07-24 15:29:13            661596         27749          debug          EXE19001055 [v0.1]:            Amazon Polly TTS EXEC script stopped (3929)
                  2017-07-24 15:33:21            595525         22952          debug          LBS19001055 [v0.1]:            LBS Amazon Polly TTS started (3929)
                  2017-07-24 15:33:21            596925         22952          debug          LBS19001055 [v0.1]:            LBS Amazon Polly TTS ended (3929)
                  
                  der Base64 Code ist etwa das:
                  s:270:"{"awsAccessKeyId":"XXXXXXXXXXXXXXXX","awsSecretKey":"YYYYYYYYYYYYYYYYYYYY","awsRegion":"eu-west-1","text":"Dies ist ein Test!","textType":"text","outputFormat":"mp3","sampleRate":"16000","voiceId":"Marlene","filename":"auto","ip":"192.168.0.11"}";
                  Zuletzt geändert von ThorstenGehrig; 24.07.2017, 14:48.
                  Meine Inst.: 73 KNX-Geräte, 18 Rolläden, 36 Schaltkanäle, 22 Dimm-Kanäle, 12 Heizungskanäle, 16 PM, 18 Gruppentaster
                  Wiregate: >50 x Temperaturfühler, 2 x Luftfeuchte, Transponderleser || Gira Homeserver: Visu: 98%, Logiken 98% || Heizung: Dimplex WP mit KNX || Sonstiges: 3xSqueezebox, Mobotix T24, Asterisk

                  Kommentar


                    #10
                    Danke für das Feedback. Habe die Hilfstexte mal angepasst. Lade es jetzt gleich hoch.

                    Caching nehme ich mal als Featurerequest mit auf die Liste. Caching basierend auf dem Filenamen? Wenn Filename schon existiert, dann einfach die Ausgänge beschreiben ohne Polly API Call?

                    Hast du das External php Call Kommando mal direkt in der Shell ausgeführt?
                    Hast du alles in den Default Verzeichnissen installiert? Falls E12 oder E13 nicht korrekt gesetzt sind, dann gehts in die Fritten.

                    Kommentar


                      #11
                      Ist bei mir aber auch so, das der Request leer ist. Auf einem Raspi installierter aws funktioniert. Das log schaut so aus:
                      2017-07-22 17:15:31 543065 31808 debug EXE19001055 [v0.1]: Amazon Polly TTS EXEC script started (1827)
                      2017-07-22 17:15:31 544559 31808 debug EXE19001055 [v0.1]: External php call: /opt/php56-edomi/bin/php /opt/19001053_polly.php czoyNzc6InsiYXdzQWNjZXNzS2V5SWQiOiJBS0lBSUZVM0VXUl hGQ1FLV1BFUSIsImF3c1NlY3JldEtleSI6Ik9NM0ZQc0JCVjdZ Qk9UclVEY3VzTzFcL3ZWbGRCMTlwN0ZNcVlZXC9QXC8iLCJhd3 NSZWdpb24iOiJldS13ZXN0LTEiLCJ0ZXh0IjoiRGllIGFsYXJt YW5sYWdlIGlzdCBzY2hhcmYiLCJ0ZXh0VHlwZSI6InRleHQiLC JvdXRwdXRGb3JtYXQiOiJtcDMiLCJzYW1wbGVSYXRlIjoiMTYw MDAiLCJ2b2ljZUlkIjoiTWFybGVuZSIsImZpbGVuYW1lIjoiYX V0byIsImlwIjoiMTAuMC4wLjM0In0iOw== (1827)
                      2017-07-22 17:15:31 550827 31808 debug EXE19001055 [v0.1]: External php call result: (1827)
                      2017-07-22 17:15:31 552090 31808 debug EXE19001055 [v0.1]: Amazon Polly TTS EXEC script stopped (1827)
                      Ausserdem sollten mal am E13 die Leerzeichen beim init entfernt werden, sonst werden die nicht vorbelegt.
                      Mfg Micha
                      Qualifizierte und richtige Antworten gibts nur von Leuten, die während des Neustarts des HS Zeit für einen Post haben!

                      Kommentar


                        #12
                        Habe gerade gesehen, dass der #init Wert an E13 noch falsch war. es muss 19001055_polly.php sein und nicht 19001053_polly.php.

                        Bitte mal E13 prüfen, korrigieren und dann schauen, ob genau diese Datei im Filesystem vorhanden ist.

                        Kommentar


                          #13
                          Zitat von vento66 Beitrag anzeigen
                          Ausserdem sollten mal am E13 die Leerzeichen beim init entfernt werden, sonst werden die nicht vorbelegt.
                          Hmmm, ich dachte eigentlich dass E13 aufgrunf des falschen INIT Wertes die Ursache für das Problem ist. Aber durch die Leerzeichen wurde es ja eigentlich gar nicht gesetzt. Dann lag es vermutlich an der fehlenden Doku für E13. Sollte jetzt beides behoben sein. Einfach mal testen ....

                          Kommentar


                            #14
                            Unverändert:
                            2017-07-24 17:05:14 578119 19552 debug EXE19001055 [v0.2.1]: Amazon Polly TTS EXEC script started (1855)
                            2017-07-24 17:05:14 579684 19552 debug EXE19001055 [v0.2.1]: External php call: /opt/php56-edomi/bin/php /opt/php56-edomi/src/edomi/19001055_polly.php czoyNjU6InsiYXdzQWNjZXNzS2V5SWQiOiJBS0lBSU9YMkpXNF lYM0xOQlBBU6SIsImF3c1NlY3JldEtleSI6ImRJVnpaU2FiOWF k RFwvUjJXdFJMakdLRUJBd05LYWZucW1uM0FnK1pjIiw 123456789123456789C0xIiwidGV4dCI6IkRhcyBpc3QgZWlu IFRlc3QiLCJ0ZXh0VHlwZSI6InRleHQiLCJvdXRwdXRGb3JtYX QiOiJtcDMiLCJzYW1wbGVSYXRlIjoiMTYwMDAiLCJ2b2ljZUlk IjoiTWFybGVuZSIsImZpbGVuYW1lIjoiYXV0byIsImlwIjoiMT AuMC4wLjM0In0iOw== (1855)
                            2017-07-24 17:05:14 586252 19552 debug EXE19001055 [v0.2.1]: External php call result: (1855)
                            2017-07-24 17:05:14 587512 19552 debug EXE19001055 [v0.2.1]: Amazon Polly TTS EXEC script stopped (1855)
                            Zuletzt geändert von vento66; 24.07.2017, 18:35.
                            Mfg Micha
                            Qualifizierte und richtige Antworten gibts nur von Leuten, die während des Neustarts des HS Zeit für einen Post haben!

                            Kommentar


                              #15
                              Hast du das mal manuell auf dem EDOMI Server gestartet?

                              Code:
                              /opt/php56-edomi/bin/php /opt/php56-edomi/src/edomi/19001055_polly.php czoyNjU6InsiYXdzQWNjZXNzS2V5SWQiOiJBS0lBSU9YMkpXNFlYM0xOQlBBUSIsImF3c1NlY3JldEtleSI6ImRJVnpaU2FiOWFkRFwvUjJXdFJMakdLRUJBd05LYWZucW1uM0FnK1pjIi###########################C0xIiwidGV4dCI6IkRhcyBpc3QgZWluIFRlc3QiLCJ0ZXh0VHlwZSI6InRleHQiLCJvdXRwdXRGb3JtYXQiOiJtcDMiLCJzYW1wbGVSYXRlIjoiMTYwMDAiLCJ2b2ljZUlkIjoiTWFybGVuZSIsImZpbGVuYW1lIjoiYXV0byIsImlwIjoiMTAuMC4wLjM0In0iOw==
                              Zuletzt geändert von jonofe; 24.07.2017, 18:08.

                              Kommentar

                              Lädt...
                              X